summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLoic Dachary <loic@dachary.org>2011-09-13 23:12:49 +0200
committerLoic Dachary <loic@dachary.org>2011-09-13 23:12:49 +0200
commit8f2e8e7dc5334edfea6a7d23f5b901f286fda6d4 (patch)
tree9800bf6cd95b081f977f7d5539f0f6a3de965823
parent905c1103d30a2b0651ab57316ebc51a51e2bb8f7 (diff)
draft implementation of http://wiki.documentfoundation.org/QA-Projects-Incubator#Bug_Submission_Assistant
-rw-r--r--bug/Makefile13
-rw-r--r--bug/bug.xhtml141
-rw-r--r--bug/bug.xsl18
-rw-r--r--bug/bug/2011-02-form.html150
-rw-r--r--bug/bug/2011-08-27-form.html82
-rw-r--r--bug/bug/Makefile2
-rw-r--r--bug/bug/bg-sidebar.pngbin0 -> 1375 bytes
-rw-r--r--bug/bug/bug.css116
-rw-r--r--bug/bug/bug.js213
-rw-r--r--bug/bug/frame.html21
-rw-r--r--bug/bug/icons/Chart.pngbin0 -> 1407 bytes
-rw-r--r--bug/bug/icons/Database.pngbin0 -> 2176 bytes
-rw-r--r--bug/bug/icons/Documentation.pngbin0 -> 1353 bytes
-rw-r--r--bug/bug/icons/Drawing.pngbin0 -> 1916 bytes
-rw-r--r--bug/bug/icons/Extensions.pngbin0 -> 1963 bytes
-rw-r--r--bug/bug/icons/Formula_editor.pngbin0 -> 1676 bytes
-rw-r--r--bug/bug/icons/Installation.pngbin0 -> 1549 bytes
-rw-r--r--bug/bug/icons/LibreOffice_Initial_Icons-pre_final.svg44463
-rw-r--r--bug/bug/icons/Libreoffice.pngbin0 -> 970 bytes
-rw-r--r--bug/bug/icons/PDF_export.pngbin0 -> 1438 bytes
-rw-r--r--bug/bug/icons/Presentation.pngbin0 -> 1750 bytes
-rw-r--r--bug/bug/icons/Spreadsheet.pngbin0 -> 1395 bytes
-rw-r--r--bug/bug/icons/WRITER.pngbin0 -> 1509 bytes
-rw-r--r--bug/bug/icons/WWW.pngbin0 -> 1803 bytes
-rw-r--r--bug/bug/jquery-1.6.2.js8981
-rw-r--r--bug/bug/jquery-validation-1.8.1.zipbin0 -> 617461 bytes
-rw-r--r--bug/bug/jquery-validation-1.8.1/README.md8
-rw-r--r--bug/bug/jquery-validation-1.8.1/additional-methods.js280
-rw-r--r--bug/bug/jquery-validation-1.8.1/additional-methods.min.js28
-rw-r--r--bug/bug/jquery-validation-1.8.1/changelog.txt258
-rw-r--r--bug/bug/jquery-validation-1.8.1/demo/ajaxSubmit-intergration-demo.html85
-rw-r--r--bug/bug/jquery-validation-1.8.1/demo/captcha/captcha.js27
-rw-r--r--bug/bug/jquery-validation-1.8.1/demo/captcha/fonts/Anorexia.ttfbin0 -> 14300 bytes
-rw-r--r--bug/bug/jquery-validation-1.8.1/demo/captcha/image_req.php6
-rw-r--r--bug/bug/jquery-validation-1.8.1/demo/captcha/images/button.pngbin0 -> 1546 bytes
-rw-r--r--bug/bug/jquery-validation-1.8.1/demo/captcha/images/button.psdbin0 -> 23968 bytes
-rw-r--r--bug/bug/jquery-validation-1.8.1/demo/captcha/images/image.php35
-rw-r--r--bug/bug/jquery-validation-1.8.1/demo/captcha/index.php66
-rw-r--r--bug/bug/jquery-validation-1.8.1/demo/captcha/newsession.php12
-rw-r--r--bug/bug/jquery-validation-1.8.1/demo/captcha/process.php14
-rw-r--r--bug/bug/jquery-validation-1.8.1/demo/captcha/rand.php11
-rw-r--r--bug/bug/jquery-validation-1.8.1/demo/captcha/style.css140
-rw-r--r--bug/bug/jquery-validation-1.8.1/demo/css/chili.css15
-rw-r--r--bug/bug/jquery-validation-1.8.1/demo/css/cmxform.css46
-rw-r--r--bug/bug/jquery-validation-1.8.1/demo/css/cmxformTemplate.css55
-rw-r--r--bug/bug/jquery-validation-1.8.1/demo/css/core.css21
-rw-r--r--bug/bug/jquery-validation-1.8.1/demo/css/reset.css61
-rw-r--r--bug/bug/jquery-validation-1.8.1/demo/css/screen.css11
-rw-r--r--bug/bug/jquery-validation-1.8.1/demo/custom-messages-metadata-demo.html92
-rw-r--r--bug/bug/jquery-validation-1.8.1/demo/custom-methods-demo.html122
-rw-r--r--bug/bug/jquery-validation-1.8.1/demo/dynamic-totals.html151
-rw-r--r--bug/bug/jquery-validation-1.8.1/demo/errorcontainer-demo.html161
-rw-r--r--bug/bug/jquery-validation-1.8.1/demo/example.html53
-rw-r--r--bug/bug/jquery-validation-1.8.1/demo/form.php10
-rw-r--r--bug/bug/jquery-validation-1.8.1/demo/form.phps10
-rw-r--r--bug/bug/jquery-validation-1.8.1/demo/images/bg.gifbin0 -> 1175 bytes
-rw-r--r--bug/bug/jquery-validation-1.8.1/demo/images/checked.gifbin0 -> 220 bytes
-rw-r--r--bug/bug/jquery-validation-1.8.1/demo/images/cmxform-divider.gifbin0 -> 43 bytes
-rw-r--r--bug/bug/jquery-validation-1.8.1/demo/images/cmxform-fieldset.gifbin0 -> 314 bytes
-rw-r--r--bug/bug/jquery-validation-1.8.1/demo/images/loading.gifbin0 -> 418 bytes
-rw-r--r--bug/bug/jquery-validation-1.8.1/demo/images/unchecked.gifbin0 -> 223 bytes
-rw-r--r--bug/bug/jquery-validation-1.8.1/demo/index.html230
-rw-r--r--bug/bug/jquery-validation-1.8.1/demo/js/chili-1.7.pack.js1
-rw-r--r--bug/bug/jquery-validation-1.8.1/demo/login/images/bg.gifbin0 -> 89 bytes
-rw-r--r--bug/bug/jquery-validation-1.8.1/demo/login/images/header1.jpgbin0 -> 442 bytes
-rw-r--r--bug/bug/jquery-validation-1.8.1/demo/login/images/page.gifbin0 -> 664 bytes
-rw-r--r--bug/bug/jquery-validation-1.8.1/demo/login/images/required_star.gifbin0 -> 121 bytes
-rw-r--r--bug/bug/jquery-validation-1.8.1/demo/login/index.html76
-rw-r--r--bug/bug/jquery-validation-1.8.1/demo/login/screen.css457
-rw-r--r--bug/bug/jquery-validation-1.8.1/demo/marketo/emails.php10
-rw-r--r--bug/bug/jquery-validation-1.8.1/demo/marketo/emails.phps10
-rw-r--r--bug/bug/jquery-validation-1.8.1/demo/marketo/ie6.css35
-rw-r--r--bug/bug/jquery-validation-1.8.1/demo/marketo/images/backRequiredGray.gifbin0 -> 137 bytes
-rw-r--r--bug/bug/jquery-validation-1.8.1/demo/marketo/images/back_green-fade.gifbin0 -> 2421 bytes
-rw-r--r--bug/bug/jquery-validation-1.8.1/demo/marketo/images/back_nav_blue.gifbin0 -> 1668 bytes
-rw-r--r--bug/bug/jquery-validation-1.8.1/demo/marketo/images/blank.gifbin0 -> 799 bytes
-rw-r--r--bug/bug/jquery-validation-1.8.1/demo/marketo/images/button-submit.gifbin0 -> 4527 bytes
-rw-r--r--bug/bug/jquery-validation-1.8.1/demo/marketo/images/favicon.icobin0 -> 1150 bytes
-rw-r--r--bug/bug/jquery-validation-1.8.1/demo/marketo/images/help.pngbin0 -> 1615 bytes
-rw-r--r--bug/bug/jquery-validation-1.8.1/demo/marketo/images/left-nav-callout-long.pngbin0 -> 1381 bytes
-rw-r--r--bug/bug/jquery-validation-1.8.1/demo/marketo/images/login-sprite.gifbin0 -> 2017 bytes
-rw-r--r--bug/bug/jquery-validation-1.8.1/demo/marketo/images/logo_marketo.gifbin0 -> 8363 bytes
-rw-r--r--bug/bug/jquery-validation-1.8.1/demo/marketo/images/sf.pngbin0 -> 3745 bytes
-rw-r--r--bug/bug/jquery-validation-1.8.1/demo/marketo/images/step1-24.gifbin0 -> 1357 bytes
-rw-r--r--bug/bug/jquery-validation-1.8.1/demo/marketo/images/step2-24.gifbin0 -> 1355 bytes
-rw-r--r--bug/bug/jquery-validation-1.8.1/demo/marketo/images/step3-24.gifbin0 -> 1362 bytes
-rw-r--r--bug/bug/jquery-validation-1.8.1/demo/marketo/images/tab-sprite.gifbin0 -> 4710 bytes
-rw-r--r--bug/bug/jquery-validation-1.8.1/demo/marketo/images/tab_green.gifbin0 -> 1652 bytes
-rw-r--r--bug/bug/jquery-validation-1.8.1/demo/marketo/images/time.pngbin0 -> 793 bytes
-rw-r--r--bug/bug/jquery-validation-1.8.1/demo/marketo/images/toggle.gifbin0 -> 845 bytes
-rw-r--r--bug/bug/jquery-validation-1.8.1/demo/marketo/images/warning.gifbin0 -> 234 bytes
-rw-r--r--bug/bug/jquery-validation-1.8.1/demo/marketo/index.html247
-rw-r--r--bug/bug/jquery-validation-1.8.1/demo/marketo/jquery.maskedinput.js267
-rw-r--r--bug/bug/jquery-validation-1.8.1/demo/marketo/mktSignup.js125
-rw-r--r--bug/bug/jquery-validation-1.8.1/demo/marketo/step2.htm291
-rw-r--r--bug/bug/jquery-validation-1.8.1/demo/marketo/stylesheet.css1179
-rw-r--r--bug/bug/jquery-validation-1.8.1/demo/milk/bg.gifbin0 -> 73 bytes
-rw-r--r--bug/bug/jquery-validation-1.8.1/demo/milk/emails.php10
-rw-r--r--bug/bug/jquery-validation-1.8.1/demo/milk/emails.phps10
-rw-r--r--bug/bug/jquery-validation-1.8.1/demo/milk/index.html235
-rw-r--r--bug/bug/jquery-validation-1.8.1/demo/milk/left_white.pngbin0 -> 538 bytes
-rw-r--r--bug/bug/jquery-validation-1.8.1/demo/milk/milk.css236
-rw-r--r--bug/bug/jquery-validation-1.8.1/demo/milk/milk.pngbin0 -> 5121 bytes
-rw-r--r--bug/bug/jquery-validation-1.8.1/demo/milk/right_white.pngbin0 -> 1579 bytes
-rw-r--r--bug/bug/jquery-validation-1.8.1/demo/milk/users.php12
-rw-r--r--bug/bug/jquery-validation-1.8.1/demo/milk/users.phps10
-rw-r--r--bug/bug/jquery-validation-1.8.1/demo/multipart/index.html412
-rw-r--r--bug/bug/jquery-validation-1.8.1/demo/multipart/js/jquery.maskedinput-1.0.js246
-rw-r--r--bug/bug/jquery-validation-1.8.1/demo/multipart/js/ui.accordion.js477
-rw-r--r--bug/bug/jquery-validation-1.8.1/demo/multipart/js/ui.core.js519
-rw-r--r--bug/bug/jquery-validation-1.8.1/demo/multipart/style.css705
-rw-r--r--bug/bug/jquery-validation-1.8.1/demo/radio-checkbox-select-demo.html155
-rw-r--r--bug/bug/jquery-validation-1.8.1/demo/tabs/index.html157
-rw-r--r--bug/bug/jquery-validation-1.8.1/demo/themerollered.html227
-rw-r--r--bug/bug/jquery-validation-1.8.1/demo/tinymce/index.html75
-rw-r--r--bug/bug/jquery-validation-1.8.1/demo/tinymce/themes/simple/editor_template.js1
-rw-r--r--bug/bug/jquery-validation-1.8.1/demo/tinymce/themes/simple/img/icons.gifbin0 -> 1440 bytes
-rw-r--r--bug/bug/jquery-validation-1.8.1/demo/tinymce/themes/simple/langs/en.js11
-rw-r--r--bug/bug/jquery-validation-1.8.1/demo/tinymce/themes/simple/skins/default/ui.css32
-rw-r--r--bug/bug/jquery-validation-1.8.1/demo/tinymce/tiny_mce.js1
-rw-r--r--bug/bug/jquery-validation-1.8.1/jquery.validate.js1166
-rw-r--r--bug/bug/jquery-validation-1.8.1/jquery.validate.min.js51
-rw-r--r--bug/bug/jquery-validation-1.8.1/lib/jquery-1.3.2.js4376
-rw-r--r--bug/bug/jquery-validation-1.8.1/lib/jquery-1.4.2.js6240
-rw-r--r--bug/bug/jquery-validation-1.8.1/lib/jquery-1.4.4.js7179
-rw-r--r--bug/bug/jquery-validation-1.8.1/lib/jquery-1.5.2.js8374
-rw-r--r--bug/bug/jquery-validation-1.8.1/lib/jquery-1.6.1.js8936
-rw-r--r--bug/bug/jquery-validation-1.8.1/lib/jquery.form.js660
-rw-r--r--bug/bug/jquery-validation-1.8.1/lib/jquery.js4376
-rw-r--r--bug/bug/jquery-validation-1.8.1/lib/jquery.metadata.js122
-rw-r--r--bug/bug/jquery-validation-1.8.1/lib/jquery.mockjax.js382
-rw-r--r--bug/bug/jquery-validation-1.8.1/localization/messages_ar.js24
-rw-r--r--bug/bug/jquery-validation-1.8.1/localization/messages_bg.js23
-rw-r--r--bug/bug/jquery-validation-1.8.1/localization/messages_ca.js23
-rw-r--r--bug/bug/jquery-validation-1.8.1/localization/messages_cn.js23
-rw-r--r--bug/bug/jquery-validation-1.8.1/localization/messages_cs.js23
-rw-r--r--bug/bug/jquery-validation-1.8.1/localization/messages_da.js20
-rw-r--r--bug/bug/jquery-validation-1.8.1/localization/messages_de.js20
-rw-r--r--bug/bug/jquery-validation-1.8.1/localization/messages_el.js24
-rw-r--r--bug/bug/jquery-validation-1.8.1/localization/messages_es.js23
-rw-r--r--bug/bug/jquery-validation-1.8.1/localization/messages_fa.js23
-rw-r--r--bug/bug/jquery-validation-1.8.1/localization/messages_fi.js21
-rw-r--r--bug/bug/jquery-validation-1.8.1/localization/messages_fr.js23
-rw-r--r--bug/bug/jquery-validation-1.8.1/localization/messages_ge.js23
-rw-r--r--bug/bug/jquery-validation-1.8.1/localization/messages_he.js23
-rw-r--r--bug/bug/jquery-validation-1.8.1/localization/messages_hu.js20
-rw-r--r--bug/bug/jquery-validation-1.8.1/localization/messages_it.js23
-rw-r--r--bug/bug/jquery-validation-1.8.1/localization/messages_ja.js23
-rw-r--r--bug/bug/jquery-validation-1.8.1/localization/messages_kk.js23
-rw-r--r--bug/bug/jquery-validation-1.8.1/localization/messages_lt.js23
-rw-r--r--bug/bug/jquery-validation-1.8.1/localization/messages_lv.js23
-rw-r--r--bug/bug/jquery-validation-1.8.1/localization/messages_nl.js23
-rw-r--r--bug/bug/jquery-validation-1.8.1/localization/messages_no.js23
-rw-r--r--bug/bug/jquery-validation-1.8.1/localization/messages_pl.js23
-rw-r--r--bug/bug/jquery-validation-1.8.1/localization/messages_ptbr.js23
-rw-r--r--bug/bug/jquery-validation-1.8.1/localization/messages_ptpt.js23
-rw-r--r--bug/bug/jquery-validation-1.8.1/localization/messages_ro.js23
-rw-r--r--bug/bug/jquery-validation-1.8.1/localization/messages_ru.js23
-rw-r--r--bug/bug/jquery-validation-1.8.1/localization/messages_se.js21
-rw-r--r--bug/bug/jquery-validation-1.8.1/localization/messages_si.js23
-rw-r--r--bug/bug/jquery-validation-1.8.1/localization/messages_sk.js20
-rw-r--r--bug/bug/jquery-validation-1.8.1/localization/messages_sr.js23
-rw-r--r--bug/bug/jquery-validation-1.8.1/localization/messages_th.js23
-rw-r--r--bug/bug/jquery-validation-1.8.1/localization/messages_tr.js23
-rw-r--r--bug/bug/jquery-validation-1.8.1/localization/messages_tw.js23
-rw-r--r--bug/bug/jquery-validation-1.8.1/localization/messages_ua.js23
-rw-r--r--bug/bug/jquery-validation-1.8.1/localization/messages_vi.js23
-rw-r--r--bug/bug/jquery-validation-1.8.1/localization/methods_de.js12
-rw-r--r--bug/bug/jquery-validation-1.8.1/localization/methods_nl.js9
-rw-r--r--bug/bug/jquery-validation-1.8.1/localization/methods_pt.js9
-rw-r--r--bug/bug/jquery-validation-1.8.1/test/events.html71
-rw-r--r--bug/bug/jquery-validation-1.8.1/test/firebug/errorIcon.pngbin0 -> 457 bytes
-rw-r--r--bug/bug/jquery-validation-1.8.1/test/firebug/firebug.css209
-rw-r--r--bug/bug/jquery-validation-1.8.1/test/firebug/firebug.html23
-rw-r--r--bug/bug/jquery-validation-1.8.1/test/firebug/firebug.js672
-rw-r--r--bug/bug/jquery-validation-1.8.1/test/firebug/firebugx.js10
-rw-r--r--bug/bug/jquery-validation-1.8.1/test/firebug/infoIcon.pngbin0 -> 524 bytes
-rw-r--r--bug/bug/jquery-validation-1.8.1/test/firebug/warningIcon.pngbin0 -> 516 bytes
-rw-r--r--bug/bug/jquery-validation-1.8.1/test/index.html277
-rw-r--r--bug/bug/jquery-validation-1.8.1/test/jquery.js25
-rw-r--r--bug/bug/jquery-validation-1.8.1/test/large.html188
-rw-r--r--bug/bug/jquery-validation-1.8.1/test/messages.js62
-rw-r--r--bug/bug/jquery-validation-1.8.1/test/methods.js584
-rw-r--r--bug/bug/jquery-validation-1.8.1/test/qunit/qunit.css225
-rw-r--r--bug/bug/jquery-validation-1.8.1/test/qunit/qunit.js1442
-rw-r--r--bug/bug/jquery-validation-1.8.1/test/rules.js267
-rw-r--r--bug/bug/jquery-validation-1.8.1/test/selects/index.html444
-rw-r--r--bug/bug/jquery-validation-1.8.1/test/tabs.html78
-rw-r--r--bug/bug/jquery-validation-1.8.1/test/test.js1139
-rw-r--r--bug/bug/jquery-validation-1.8.1/todo172
-rw-r--r--bug/bug/jquery-validation-1.8.1/version.txt1
-rw-r--r--bug/bug/jquery.iframe-post-form.js92
-rw-r--r--bug/bug/portal-break.pngbin0 -> 242 bytes
-rw-r--r--bug/bug/qunit.css197
-rw-r--r--bug/bug/qunit.js1415
-rw-r--r--bug/bug/test.html110
-rw-r--r--bug/bug/test.js243
-rw-r--r--bug/component_comments.xsl28
-rw-r--r--bug/components.xsl25
-rw-r--r--bug/index.html3
-rw-r--r--bug/libreoffice-bug.html75
-rw-r--r--bug/query.pl27
-rw-r--r--bug/subcomponents.pl0
-rw-r--r--bug/subcomponents.xsl26
204 files changed, 113273 insertions, 0 deletions
diff --git a/bug/Makefile b/bug/Makefile
new file mode 100644
index 0000000..da6d621
--- /dev/null
+++ b/bug/Makefile
@@ -0,0 +1,13 @@
+all: extract compose
+ #jscoverage --no-instrument=jquery-validation-1.8.1 bug bug-cover
+
+extract:
+ curl --silent http://wiki.documentfoundation.org/BugReport_Details | tidy --numeric-entities yes -asxhtml 2>/dev/null | perl -pe 's|xmlns="http://www.w3.org/1999/xhtml"||' > BugReport_Details.xhtml
+ xsltproc --encoding UTF-8 --novalid component_comments.xsl BugReport_Details.xhtml > component_comments.xhtml
+ xsltproc --encoding UTF-8 --novalid subcomponents.xsl BugReport_Details.xhtml > subcomponents.xhtml
+ xsltproc --encoding UTF-8 --novalid components.xsl BugReport_Details.xhtml > components.xhtml
+ curl --silent 'https://bugs.freedesktop.org/query.cgi?product=LibreOffice&query_format=advanced' > query.xhtml
+ perl query.pl versions < query.xhtml > versions.xhtml
+
+compose:
+ xsltproc --encoding UTF-8 --novalid bug.xsl bug.xhtml > bug/bug.html
diff --git a/bug/bug.xhtml b/bug/bug.xhtml
new file mode 100644
index 0000000..1b0355d
--- /dev/null
+++ b/bug/bug.xhtml
@@ -0,0 +1,141 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"
+ [
+ <!ENTITY component_comments SYSTEM "component_comments.xhtml">
+ <!ENTITY components SYSTEM "components.xhtml">
+ <!ENTITY subcomponents SYSTEM "subcomponents.xhtml">
+ <!ENTITY versions SYSTEM "versions.xhtml">
+ ]
+ >
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <title>Bug Filing Form</title>
+ <meta http-equiv="Content-type" content="text/html;charset=UTF-8"/>
+ <script type="text/javascript" src="jquery-1.6.2.js"></script>
+ <script type="text/javascript" src="jquery-validation-1.8.1/jquery.validate.js"></script>
+ <script type="text/javascript" src="jquery.iframe-post-form.js"></script>
+ <script type="text/javascript" src="bug.js"></script>
+ <link rel="stylesheet" href="bug.css" type="text/css" media="screen"></link>
+ </head>
+ <body>
+ <div class="content">
+ <div class="left">
+ <div class="submission">Steps</div>
+ <div class="submission steps">
+ <div class="state_component">1/5 Component</div>
+ <div class="state_subcomponent">2/5 Subcomponent</div>
+ <div class="state_version">3/5 Version</div>
+ <div class="state_description">4/5 Description</div>
+ <div class="state_submit">5/5 Submit</div>
+ </div>
+ </div>
+ <div class="right">
+ <div class="submission">
+ Thank you for using LibreOffice, we regret that you seem to have found a problem in our software, so that you decided to report a bug. This assistant will lead you step by step through the bug report process.
+ </div>
+
+ <div class="state signin">
+ <p>
+ Please login using your <a href="/">Bugzilla account</a>.
+ </p>
+ <p>
+ User: <input class='user' type="text" name="user"></input>
+ Password: <input class='password' type="password" name="password"></input>
+ <div class="go">Sign in</div>
+ <div class="error"></div>
+ </p>
+ <p>
+ Or <a href="/enter_bug.cgi" target="_blank">signup</a>.
+ </p>
+ </div>
+
+ <div class="submission">
+ <div class="state state_component">
+ <div class="components_icons">
+ <div>
+ <img src="icons/Libreoffice.png" title="BASIC" alt="BASIC" />
+ <img src="icons/Chart.png" title="Chart" alt="Chart" />
+ <img src="icons/Libreoffice.png" title="Contrib" alt="Contrib" />
+ <img src="icons/Database.png" title="Database" alt="Database" />
+ <img src="icons/Documentation.png" title="Documentation" alt="Documentation" />
+ <img src="icons/Drawing.png" title="Drawing" alt="Drawing" />
+ <img src="icons/Extensions.png" title="Extensions" alt="Extensions" />
+ <img src="icons/Formula_editor.png" title="Formula" alt="Formula" />
+ <img src="icons/Installation.png" title="Installation" alt="Installation" />
+ </div>
+ <div>
+ <img src="icons/Libreoffice.png" title="Libreoffice" alt="Libreoffice" />
+ <img src="icons/Libreoffice.png" title="Linguistic" alt="Linguistic" />
+ <img src="icons/Libreoffice.png" title="Localization" alt="Localization" />
+ <img src="icons/PDF_export.png" title="PDF" alt="PDF" />
+ <img src="icons/Presentation.png" title="Presentation" alt="Presentation" />
+ <img src="icons/Spreadsheet.png" title="Spreadsheet" alt="Spreadsheet" />
+ <img src="icons/Libreoffice.png" title="UI" alt="UI" />
+ <img src="icons/WRITER.png" title="WRITER" alt="WRITER" />
+ <img src="icons/WWW.png" title="WWW" alt="WWW" />
+ </div>
+ </div>
+ </div>
+
+ <div class="state state_component">
+ <div>Component</div>
+ <div>&components;</div>
+ <div>&component_comments;</div>
+ </div>
+
+ <div class="state state_subcomponent">
+ Sub component <div class="active_subcomponent"></div>
+ </div>
+
+ <div class="state state_version">
+ Version &versions;
+ </div>
+
+ <div class="state state_description">
+ <div>Subject: <input type="text" class="short"></input> (5 chars min).</div>
+ <div>Long description (10 chars min): <textarea class="long"></textarea></div>
+ </div>
+
+ <div class="state state_submit">
+ <div class="go">SUBMIT</div>
+ <div class="error"></div>
+ <div class="bug"></div>
+ </div>
+
+ <div class="state_duplicates">
+ Related bug reports
+ <div class="related_bugs"></div>
+ </div>
+
+ <div class="state_subcomponent">
+ <div class="subcomponents">&subcomponents;</div>
+ </div>
+
+ </div>
+
+ <div class="state_success">
+ The bug report has been <a class="bug">successfully submitted</a>
+ </div>
+
+ <div class="state_attach">
+ Upload an attachment illustrating the problem
+ <form action='/attachment.cgi' method='POST' enctype='multipart/form-data'>
+ <input type="hidden" name="action" value="insert"></input>
+ <input class="bug" type="hidden" name="bugid"></input>
+ <input type="hidden" name="description" value="SCREENSHOT"></input>
+ <input type="hidden" name="comment" value="SCREENSHOT"></input>
+ <input type="hidden" name="contenttypemethod" value="autodetect"></input>
+ <input type="file" name="data"></input>
+ <input type="submit" value="Upload"></input>
+ </form>
+ <div class="error"></div>
+ <img title="SCREENSHOT" />
+ </div>
+
+ </div>
+ </div>
+ <script>
+ $(document).ready($.bug.main);
+ </script>
+ </body>
+</html>
diff --git a/bug/bug.xsl b/bug/bug.xsl
new file mode 100644
index 0000000..30c516e
--- /dev/null
+++ b/bug/bug.xsl
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<xsl:stylesheet version="1.0"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+
+ <xsl:output method="html" encoding="UTF-8" indent="yes" />
+
+ <xsl:template match="@*|node()">
+ <xsl:copy>
+ <xsl:apply-templates select="@*|node()"/>
+ </xsl:copy>
+ </xsl:template>
+
+<!--
+Local Variables: ***
+mode: xml ***
+End: ***
+-->
+</xsl:stylesheet>
diff --git a/bug/bug/2011-02-form.html b/bug/bug/2011-02-form.html
new file mode 100644
index 0000000..577d268
--- /dev/null
+++ b/bug/bug/2011-02-form.html
@@ -0,0 +1,150 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <title>Bug Filing Form</title>
+ <script type="text/javascript">
+ // Note that in all of these functions, an argument of '1' refers to
+ // the 'Yes' radio button, and a '0' to the 'No' button
+
+ function doc_specific(yesorno)
+ // Asks the user to attach the document if bug is doc-specific.
+ // If not, clears all radio button questions since they are irrelevant
+ {
+ if (yesorno == 1)
+ {
+ document.getElementById("popup").innerHTML="Can you attach the document to this bug report? <input type='radio' name='attachable' value='yes' onclick='can_attach(1)'>Yes<input type='radio' name='attachable' value='no' onclick='can_attach(0)'>No";
+ }
+ else if (yesorno == 0)
+ {
+ document.getElementById("popup").innerHTML="";
+ document.getElementById("popup2").innerHTML="";
+ document.getElementById("popup3").innerHTML="";
+ }
+ }
+
+ function can_attach(canorcant)
+ // Asks if the user is able to attach their document
+ {
+ if (canorcant == 1)
+ {
+ document.getElementById("popup2").innerHTML="Can you trim the document down to reproduce the bug only, and attach that document? <input type='radio' name='can_trim' value='yes' onclick='can_trim(1)'>Yes <input type='radio' name='can_trim' value='no' onclick='can_trim(0)'>No";
+ }
+ else if (canorcant == 0)
+ {
+ document.getElementById("popup2").innerHTML="Without the document related to your bug it will be difficult or impossible for us to solve your problem.";
+ document.getElementById("popup3").innerHTML="";
+ }
+ }
+
+ function can_trim(trimmable)
+ // Asks if the user can trim the bug's document, and explains the consequences of trimming or not
+ {
+ if (trimmable == 1)
+ {
+ document.getElementById("popup3").innerHTML="Great! Please make the file as small as possible, making sure to reproduce only the intended bug and attach it to the bug report.";
+ }
+ else if (trimmable == 0)
+ {
+ document.getElementById("popup3").innerHTML="Without trimming the document down it will be difficult for us to diagnose the problem and fix it. However, we might be able to fix it regardless.";
+ }
+ }
+
+ function crashes()
+ // Asks the user if the crash occurs on a Linux system
+ {
+ if (document.getElementById("crashesoption").checked == true)
+ {
+ document.getElementById("crashes").innerHTML="<h3>Crashes the program:</h3>Does the crash occur on a Linux-based system? <input type='radio' name='crashes_linux' value='yes' onclick='crashes_linux(1)' >Yes<input type='radio' name='crashes_linux' value='no' onclick='crashes_linux(0)' >No";
+ }
+ else if (document.getElementById("crashesoption").checked == false)
+ {
+ document.getElementById("crashes").innerHTML="";
+ document.getElementById("crashes_linux").innerHTML="";
+ }
+ }
+
+ function crashes_linux(crashesonlinux)
+ // Explains how to get a backtrace if the user runs a Linux system
+ {
+ if (crashesonlinux == 1)
+ {
+ document.getElementById("crashes_linux").innerHTML="Please follow <a href='http://wiki.documentfoundation.org/BugReport#How_to_get_backtrace_.28on_Linux.29'>these instructions</a> to obtain a backtrace for your crash and attach it to your bug report. Doing so will help us understand and fix your bug.";
+ }
+ else if (crashesonlinux == 0)
+ {
+ document.getElementById("crashes_linux").innerHTML="";
+ }
+ }
+
+ function loses_content()
+ // Displays info if the user's bug causes a loss of content
+ {
+ if (document.getElementById("losescontentoption").checked == true)
+ {
+ document.getElementById("losescontent").innerHTML="<h3>Causes loss of content</h3>The document does lose content. Add helpful info.";
+ }
+ else if (document.getElementById("losescontentoption").checked == false)
+ {
+ document.getElementById("losescontent").innerHTML="";
+ }
+ }
+
+ function loses_layout()
+ // Displays info if the user's bug causes a loss of layout
+ {
+ if (document.getElementById("loseslayoutoption").checked == true)
+ {
+ document.getElementById("loseslayout").innerHTML="<h3>Causes loss of layout</h3>The document does lose layout. Add helpful info.";
+ }
+ else if (document.getElementById("loseslayoutoption").checked == false)
+ {
+ document.getElementById("loseslayout").innerHTML="";
+ }
+ }
+
+ function etc()
+ // Displays info if the user clicks the etc option
+ {
+ if (document.getElementById("etcoption").checked == true)
+ {
+ document.getElementById("etc").innerHTML="<h3>etc...</h3>etc... Add helpful info.";
+ }
+ else if (document.getElementById("etcoption").checked == false)
+ {
+ document.getElementById("etc").innerHTML="";
+ }
+ }
+ </script>
+ </head>
+
+ <body>
+ <h1>Before You File Your Bug</h1>
+
+ <p>Is this bug specific to a certain document? <input type="radio" name="docspecific" value="yes" onclick="doc_specific(1)" />Yes<input type="radio" name="docspecific" value="no" onclick="doc_specific(0)" />No</p>
+
+ <!--Empty paragraphs become filled with content, depending on answers to questions-->
+ <p id="popup"></p>
+ <p id="popup2"></p>
+ <p id="popup3"></p>
+
+ <h2>Extra information:</h2>
+ <table>
+ <tr>
+ <td><input type="checkbox" id="crashesoption" onclick="crashes()"/>Crashes the program</td>
+ <td><input type="checkbox" id="losescontentoption" onclick="loses_content()" />Causes loss of content</td>
+ <td><input type="checkbox" id="loseslayoutoption" onclick="loses_layout()" />Causes loss of layout</td>
+ <td><input type="checkbox" id="etcoption" onclick="etc()" />etc.</td>
+ </tr>
+ </table>
+
+ <!--Paragraphs to display extra info to the user, depending on what parts are relevant to their bug-->
+ <p id="crashes"></p>
+ <p id="crashes_linux"></p>
+ <p id="losescontent"></p>
+ <p id="loseslayout"></p>
+ <p id="etc"></p>
+ <p><a href="https://bugs.freedesktop.org/enter_bug.cgi?product=LibreOffice"><input type="submit" value="Continue" /></a></p>
+ <p>Or skip straight to a fresh bug report <a href="https://bugs.freedesktop.org/enter_bug.cgi?product=LibreOffice">here</a>.</p>
+ </body>
+</html> \ No newline at end of file
diff --git a/bug/bug/2011-08-27-form.html b/bug/bug/2011-08-27-form.html
new file mode 100644
index 0000000..ce1fea2
--- /dev/null
+++ b/bug/bug/2011-08-27-form.html
@@ -0,0 +1,82 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+ <title>Bug Filing Form</title>
+ <meta http-equiv="Content-type" content="text/html;charset=UTF-8">
+ <script type="text/javascript" src="jquery-1.6.2.js"></script>
+ <script type="text/javascript" src="jquery-validation-1.8.1/jquery.validate.js"></script>
+ <script type="text/javascript" src="bug.js"></script>
+ <link rel="stylesheet" href="bug.css" type="text/css" media="screen"></link>
+</head>
+<body>
+ <form action="javascript:">
+ <h1>Before You File Your Bug</h1>
+ <p>
+ Is this bug specific to a certain document?
+ <input type="radio" name="docspecific" value="yes" />Yes
+ <input type="radio" name="docspecific" value="no" checked />No
+ </p>
+
+ <div id="docspecific">
+ <div id="attachdocument">
+ Can you attach the document to this bug report?
+ <input type="radio" name="attachable" value="yes" />Yes
+ <input type="radio" name="attachable" value="no" />No
+
+ <p id="cannotattachdocument">
+ Without the document related to your bug it will be difficult or impossible for us to solve your problem.
+ </p>
+
+ <div id="attachable">
+ <div id="trimdocument">
+ Can you trim the document down to reproduce the bug only, and attach that document?
+ <input type="radio" name="can_trim" value="yes" />Yes
+ <input type="radio" name="can_trim" value="no" />No
+
+ <p id="cantrim">
+ Great! Please make the file as small as possible, making sure to reproduce only the intended bug and attach it to the bug report.
+ </p>
+
+ <p id="cannottrim">
+ Without trimming the document down it will be difficult for us to diagnose the problem and fix it. However, we might be able to fix it regardless.
+ </p>
+ </div>
+ </div>
+ </div>
+ </div>
+
+ <!--
+ <div id="extrainformation">
+ <h2>Extra information:</h2>
+ <input type="checkbox" id="crashesoption"/>Crashes the program
+ <input type="checkbox" id="losescontentoption" />Causes loss of content
+ <input type="checkbox" id="loseslayoutoption" />Causes loss of layout
+ <input type="checkbox" id="etcoption" />etc.
+ </div>
+
+ <div id="crashestheprogram">
+ <h3>Crashes the program:</h3>
+ Does the crash occur on a Linux-based system?
+ <input type='radio' name='crashes_linux' value='yes' />Yes
+ <input type='radio' name='crashes_linux' value='no' />No
+ </div>
+
+ <p id="crashesonlinux">
+ Please
+ follow <a href='http://wiki.documentfoundation.org/BugReport#How_to_get_backtrace_.28on_Linux.29'>these
+ instructions</a> to obtain a backtrace for your crash and attach
+ it to your bug report. Doing so will help us understand and fix
+ your bug.
+ </p>
+
+ <p id="losescontent"></p>
+ <p id="loseslayout"></p>
+ <p id="etc"></p>
+ <p><a href="https://bugs.freedesktop.org/enter_bug.cgi?product=LibreOffice"><input type="submit" value="Continue" /></a></p>
+ <p>Or skip straight to a fresh bug report <a href="https://bugs.freedesktop.org/enter_bug.cgi?product=LibreOffice">here</a>.</p>
+ -->
+
+ </form>
+</body>
+</html>
diff --git a/bug/bug/Makefile b/bug/bug/Makefile
new file mode 100644
index 0000000..06b769a
--- /dev/null
+++ b/bug/bug/Makefile
@@ -0,0 +1,2 @@
+all:
+ jscoverage --no-instrument=js/jquery.placeholder-1.0.1.js --no-instrument=js/jquery.query-2.1.7.js static static-coverage \ No newline at end of file
diff --git a/bug/bug/bg-sidebar.png b/bug/bug/bg-sidebar.png
new file mode 100644
index 0000000..cfd37e6
--- /dev/null
+++ b/bug/bug/bg-sidebar.png
Binary files differ
diff --git a/bug/bug/bug.css b/bug/bug/bug.css
new file mode 100644
index 0000000..1302565
--- /dev/null
+++ b/bug/bug/bug.css
@@ -0,0 +1,116 @@
+body {
+ margin: 0;
+ height: 650px;
+}
+
+.content {
+ width: 800px;
+}
+
+.content > div {
+ display: inline-block;
+ vertical-align: top;
+}
+
+.left {
+ background: #FFF url('bg-sidebar.png') no-repeat top left;
+ padding-top: 75px;
+ width: 200px;
+ height: 100%;
+ font-size: 0.75em;
+}
+
+.left > div {
+ margin-left: 40px;
+}
+
+.left .steps {
+ background: transparent url('portal-break.png') no-repeat top left;
+ height: 100%;
+ width: 140px;
+}
+
+.right {
+ padding: 20px;
+ width: 550px;
+}
+
+.right .state {
+ margin: 5px;
+ border: 3px solid #18A303;
+}
+
+/* signin */
+.signin {
+ margin: 5px;
+ border: 3px solid #18A303;
+ display: none;
+}
+
+.signin .error {
+ background-color: #ff5555;
+}
+
+.signin .go {
+ background-color: #BADA55;
+}
+
+/* state_component */
+.state_component > div {
+ vertical-align: top;
+ display: inline-block;
+}
+
+.state_component {
+ display: none;
+}
+
+.state_component .comments {
+ width: 250px;
+}
+
+.state_component .comments .comment {
+ display: none;
+}
+
+/* state_subcomponent */
+.state_subcomponent {
+ display: none;
+}
+
+.state_subcomponent .subcomponents {
+ display: none;
+}
+
+/* state_version */
+.state_version {
+ display: none;
+}
+
+/* state_description */
+.state_description {
+ display: none;
+}
+
+/* state_submit */
+.state_submit {
+ display: none;
+}
+
+.state_submit .error {
+ background-color: #ff5555;
+}
+
+.state_submit .go {
+ background-color: #BADA55;
+}
+
+/* state_success */
+.state_success {
+ display: none;
+}
+
+/* state_attach */
+.state_attach {
+ display: none;
+}
diff --git a/bug/bug/bug.js b/bug/bug/bug.js
new file mode 100644
index 0000000..baf86f2
--- /dev/null
+++ b/bug/bug/bug.js
@@ -0,0 +1,213 @@
+//
+// Copyright (C) 2011 Loic Dachary <loic@dachary.org>
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program. If not, see <http://www.gnu.org/licenses/>.
+//
+(function($) {
+
+ $.bug = {
+
+ post: $.post,
+
+ get: $.get,
+
+ // if this string is found in the page returned when
+ // trying to login, it means the login / password combination
+ // is invalid.
+ state_signin_error_string: 'throw_error',
+
+ state_signin: function() {
+ var element = $('.signin');
+ $('.go', element).click(function() {
+ $('.error', element).empty();
+ $.bug.post('/index.cgi', {
+ Bugzilla_login: $('.user', element).val(),
+ Bugzilla_password: $('.password', element).val()
+ }, function(data) {
+ if(data.indexOf($.bug.state_signin_error_string) < 0) {
+ element.hide();
+ $.bug.state_component();
+ } else {
+ $('.error', element).text('invalid user or password');
+ }
+ });
+ });
+ element.show();
+ },
+
+ state_component: function() {
+ var element = $('.state_component');
+
+ var change_component = function() {
+ var component = $(this).val();
+ $('.comment', element).hide();
+ $('.comment.' + component, element).show();
+ $.bug.state_subcomponent();
+ };
+
+ $('.component', element).change(change_component);
+ $('.component', element).prop("selectedIndex", 0);
+
+ element.show();
+ },
+
+ state_subcomponent: function() {
+ var element = $('.state_subcomponent');
+ var component = $('.state_component .component').val();
+ var subcomponent = $('.subcomponents .' + component, element).html();
+ $('.active_subcomponent', element).html(subcomponent);
+ var change_subcomponent = function() {
+ $.bug.refresh_related_bugs();
+ $.bug.state_version();
+ };
+
+ $('.subcomponent', element).change(change_subcomponent);
+ $('.subcomponent', element).prop("selectedIndex", 0);
+
+ element.show();
+ },
+
+ state_version: function() {
+ var element = $('.state_version');
+ if(!element.hasClass('initialized')) {
+ $(".versions", element).change(function() {
+ $.bug.state_description();
+ });
+ $(".versions").prop("selectedIndex", 0);
+ element.addClass('initialized');
+ element.show();
+ }
+ },
+
+ state_description: function() {
+ var element = $('.state_description');
+ if(!element.hasClass('initialized')) {
+ var validate = function() {
+ if($(".short", element).val().length > 3 &&
+ $(".long", element).val().length > 10) {
+ $.bug.state_submit();
+ }
+ };
+
+ $(".short", element).change(function() { validate(); });
+ $(".long", element).keyup(function() { validate(); });
+ element.addClass('initialized');
+ element.show();
+ }
+ },
+
+ state_submit_error_string: 'font size="+2">',
+ state_submit_success_string: 'title>Bug ',
+
+ state_submit: function() {
+ var element = $('.state_submit');
+ if(!element.hasClass('initialized')) {
+ $('.go', element).click(function() {
+ $.bug.post('/post_bug.cgi', {
+ product: 'LibreOffice',
+ bug_status: 'UNCONFIRMED',
+ rep_platform: 'Other',
+ op_sys: 'All',
+ bug_severity: 'normal',
+ priority: 'medium',
+ assigned_to: 'libreoffice-bugs@lists.freedesktop.org',
+ component: $('.state_component .component').val(),
+ short_desc: $('.state_subcomponent .active_subcomponent .subcomponent').val() + ': ' + $('.state_description .short').val(),
+ version: $('.state_version .versions').val(),
+ comment: $('.state_description .long').val(),
+ }, function(data) {
+ var error = data.indexOf($.bug.state_submit_error_string);
+ if(error >= 0) {
+ $('.error', element).text(data.substring(error + $.bug.state_submit_error_string.length, data.indexOf('<', error)));
+ } else {
+ var success = data.indexOf($.bug.state_submit_success_string);
+ var start = success + $.bug.state_submit_success_string.length;
+ $('.bug', element).text(data.substring(start, data.indexOf(' ', start)));
+ $.bug.state_success();
+ $.bug.state_attach();
+ }
+ });
+ });
+ element.addClass('initialized');
+ element.show();
+ }
+ },
+
+ state_attach_error_string: 'class="throw_error">',
+ state_attach_success_string: 'Attachment #',
+
+ state_attach: function() {
+ var element = $('.state_attach');
+ var bug = $('.state_submit .bug').text();
+ $('.bug', element).val(bug);
+ $('form', element).iframePostForm({ complete: function(data) {
+ var error = data.indexOf($.bug.state_attach_error_string);
+ if(error >= 0) {
+ $('.error', element).text(data.substring(error + $.bug.state_attach_error_string.length, data.indexOf('<', error)));
+ } else {
+ var success = data.indexOf($.bug.state_attach_success_string);
+ var attachment = data.substring(success + $.bug.state_attach_success_string.length, data.indexOf('<', success));
+ $('img', element).attr('src', '/attachment.cgi?id=' + attachment);
+ }
+ }});
+ element.show();
+ },
+
+ state_success: function() {
+ $('.submission').hide();
+ var element = $('.state_success');
+ var bug = $('.state_submit .bug').text();
+ $('.bug', element).attr('href', '/show_bug.cgi?id=' + bug);
+ element.show();
+ },
+
+ // if this string is found in the page returned when
+ // trying to fill a bug, it means the user is not logged in
+ logged_in_false: 'form name="login"',
+
+ logged_in: function() {
+ $("body").css("cursor", "progress");
+ return $.bug.get('/enter_bug.cgi').pipe(function(data) {
+ $("body").css("cursor", "default");
+ return data.indexOf($.bug.logged_in_false) < 0;
+ });
+ },
+
+ refresh_related_bugs: function() {
+ $('.related_bugs').empty();
+ var component = $('.state_component .component').val().replace('_','%20');
+ var subcomponent = $('.state_subcomponent .subcomponent').val();
+ var list = '/buglist.cgi?columnlist=short_desc&component=' + component + '&product=LibreOffice&query_format=advanced&short_desc_type=allwordssubstr&ctype=csv&short_desc=' + subcomponent;
+ $.bug.get(list, undefined, function(data) {
+ var lines = data.split('\n');
+ var bug_urls = [];
+ for(var i = 1; i < lines.length; i++) {
+ bug_urls.push(lines[i].replace(/([0-9]*),"(.*)"/,'<a href="/show_bug.cgi?id=$1">$2</a>'));
+ }
+ $('.related_bugs').html(bug_urls.join('<br>'));
+ });
+ },
+
+ main: function() {
+ $.bug.logged_in().done(function(status) {
+ if(status) {
+ $.bug.state_component();
+ } else {
+ $.bug.state_signin();
+ }
+ });
+ }
+ };
+
+})(jQuery);
diff --git a/bug/bug/frame.html b/bug/bug/frame.html
new file mode 100644
index 0000000..a522f14
--- /dev/null
+++ b/bug/bug/frame.html
@@ -0,0 +1,21 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <title>Bug Filing Form</title>
+ <meta http-equiv="Content-type" content="text/html;charset=UTF-8"></meta>
+ <script type="text/javascript" src="jquery-1.6.2.js"></script>
+ </head>
+ <body>
+ <div class="info"></div>
+ <iframe src="bug.html" id="bug" width="850" height="600"></iframe>
+ <script>
+ function foo() {
+// $("#bug").contents().find("a").css("background-color","#BADA55");
+// $("#bug").attr('src', '/index.cgi');
+ }
+
+ $(document).ready(function(){
+ setInterval(foo, 10000);
+ });
+ </script>
+ </body>
+</html>
diff --git a/bug/bug/icons/Chart.png b/bug/bug/icons/Chart.png
new file mode 100644
index 0000000..c45c8cb
--- /dev/null
+++ b/bug/bug/icons/Chart.png
Binary files differ
diff --git a/bug/bug/icons/Database.png b/bug/bug/icons/Database.png
new file mode 100644
index 0000000..7817eec
--- /dev/null
+++ b/bug/bug/icons/Database.png
Binary files differ
diff --git a/bug/bug/icons/Documentation.png b/bug/bug/icons/Documentation.png
new file mode 100644
index 0000000..5f6ecd8
--- /dev/null
+++ b/bug/bug/icons/Documentation.png
Binary files differ
diff --git a/bug/bug/icons/Drawing.png b/bug/bug/icons/Drawing.png
new file mode 100644
index 0000000..94f9890
--- /dev/null
+++ b/bug/bug/icons/Drawing.png
Binary files differ
diff --git a/bug/bug/icons/Extensions.png b/bug/bug/icons/Extensions.png
new file mode 100644
index 0000000..cc17fed
--- /dev/null
+++ b/bug/bug/icons/Extensions.png
Binary files differ
diff --git a/bug/bug/icons/Formula_editor.png b/bug/bug/icons/Formula_editor.png
new file mode 100644
index 0000000..6d3dbd6
--- /dev/null
+++ b/bug/bug/icons/Formula_editor.png
Binary files differ
diff --git a/bug/bug/icons/Installation.png b/bug/bug/icons/Installation.png
new file mode 100644
index 0000000..08edcec
--- /dev/null
+++ b/bug/bug/icons/Installation.png
Binary files differ
diff --git a/bug/bug/icons/LibreOffice_Initial_Icons-pre_final.svg b/bug/bug/icons/LibreOffice_Initial_Icons-pre_final.svg
new file mode 100644
index 0000000..5a6a8c2
--- /dev/null
+++ b/bug/bug/icons/LibreOffice_Initial_Icons-pre_final.svg
@@ -0,0 +1,44463 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="5033"
+ height="1085"
+ id="svg7287"
+ version="1.1"
+ inkscape:version="0.47 r22583"
+ sodipodi:docname="LibreOffice_Initial_Icons.svg"
+ inkscape:export-filename="/home/bedipp/DocumentFoundation/LibO_icons_scaled.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90"
+ style="display: inline;">
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="0.70710678"
+ inkscape:cx="637.35842"
+ inkscape:cy="791.73054"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer6"
+ showgrid="true"
+ inkscape:window-width="1920"
+ inkscape:window-height="1127"
+ inkscape:window-x="0"
+ inkscape:window-y="0"
+ inkscape:window-maximized="1"
+ showguides="true"
+ inkscape:guide-bbox="true"
+ inkscape:showpageshadow="false"
+ inkscape:snap-global="false"
+ inkscape:object-nodes="false"
+ inkscape:object-paths="false"
+ inkscape:snap-intersection-paths="true"
+ inkscape:snap-smooth-nodes="false"
+ inkscape:snap-bbox="true"
+ inkscape:bbox-paths="true"
+ inkscape:snap-midpoints="false"
+ inkscape:snap-bbox-midpoints="true"
+ inkscape:bbox-nodes="true" />
+ <defs
+ id="defs7289">
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 542.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="5033 : 542.5 : 1"
+ inkscape:persp3d-origin="2516.5 : 361.66667 : 1"
+ id="perspective14414" />
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient20031">
+ <stop
+ style="stop-color: rgb(24, 163, 3); stop-opacity: 0;"
+ offset="0"
+ id="stop20033" />
+ <stop
+ style="stop-color: rgb(255, 233, 76); stop-opacity: 1;"
+ offset="1"
+ id="stop20035" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient20010">
+ <stop
+ style="stop-color: rgb(16, 104, 2); stop-opacity: 1;"
+ offset="0"
+ id="stop20012" />
+ <stop
+ style="stop-color: rgb(24, 163, 3); stop-opacity: 1;"
+ offset="1"
+ id="stop20014" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient20002">
+ <stop
+ style="stop-color: rgb(0, 0, 0); stop-opacity: 1;"
+ offset="0"
+ id="stop20004" />
+ <stop
+ style="stop-color: rgb(0, 0, 0); stop-opacity: 0;"
+ offset="1"
+ id="stop20006" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient19712">
+ <stop
+ style="stop-color: rgb(255, 255, 255); stop-opacity: 1;"
+ offset="0"
+ id="stop19714" />
+ <stop
+ style="stop-color: rgb(224, 224, 224); stop-opacity: 0.6;"
+ offset="1"
+ id="stop19716" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient19690">
+ <stop
+ style="stop-color: rgb(24, 163, 3); stop-opacity: 1;"
+ offset="0"
+ id="stop19692" />
+ <stop
+ style="stop-color: rgb(16, 104, 2); stop-opacity: 1;"
+ offset="1"
+ id="stop19694" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient19682">
+ <stop
+ style="stop-color: rgb(67, 195, 48); stop-opacity: 1;"
+ offset="0"
+ id="stop19684" />
+ <stop
+ style="stop-color: rgb(24, 163, 3); stop-opacity: 1;"
+ offset="1"
+ id="stop19686" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient19377">
+ <stop
+ style="stop-color: rgb(67, 195, 48); stop-opacity: 1;"
+ offset="0"
+ id="stop19379" />
+ <stop
+ style="stop-color: rgb(24, 163, 3); stop-opacity: 1;"
+ offset="1"
+ id="stop19381" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient19105">
+ <stop
+ style="stop-color: rgb(179, 179, 179); stop-opacity: 1;"
+ offset="0"
+ id="stop19107" />
+ <stop
+ style="stop-color: rgb(230, 230, 230); stop-opacity: 1;"
+ offset="1"
+ id="stop19109" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient18896">
+ <stop
+ style="stop-color: rgb(3, 105, 163); stop-opacity: 1;"
+ offset="0"
+ id="stop18898" />
+ <stop
+ style="stop-color: rgb(2, 63, 98); stop-opacity: 0;"
+ offset="1"
+ id="stop18900" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient15316">
+ <stop
+ style="stop-color: rgb(255, 255, 255); stop-opacity: 1;"
+ offset="0"
+ id="stop15318" />
+ <stop
+ style="stop-color: rgb(0, 160, 252); stop-opacity: 0;"
+ offset="1"
+ id="stop15320" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient15310"
+ inkscape:collect="always">
+ <stop
+ id="stop15312"
+ offset="0"
+ style="stop-color: rgb(28, 153, 224); stop-opacity: 1;" />
+ <stop
+ id="stop15314"
+ offset="1"
+ style="stop-color: rgb(3, 84, 130); stop-opacity: 1;" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient15263">
+ <stop
+ style="stop-color: rgb(170, 220, 247); stop-opacity: 1;"
+ offset="0"
+ id="stop15265" />
+ <stop
+ style="stop-color: rgb(170, 220, 247); stop-opacity: 0;"
+ offset="1"
+ id="stop15267" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient15205">
+ <stop
+ id="stop15207"
+ offset="0"
+ style="stop-color: rgb(33, 155, 214); stop-opacity: 1;" />
+ <stop
+ id="stop15209"
+ offset="1"
+ style="stop-color: rgb(6, 93, 141); stop-opacity: 1;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient13374">
+ <stop
+ id="stop13376"
+ offset="0"
+ style="stop-color: rgb(255, 255, 255); stop-opacity: 0.65;" />
+ <stop
+ id="stop13378"
+ offset="1"
+ style="stop-color: rgb(255, 255, 255); stop-opacity: 0.949;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient10949"
+ inkscape:collect="always">
+ <stop
+ id="stop10951"
+ offset="0"
+ style="stop-color: rgb(77, 77, 77); stop-opacity: 1;" />
+ <stop
+ id="stop10953"
+ offset="1"
+ style="stop-color: rgb(102, 102, 102); stop-opacity: 1;" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient10910">
+ <stop
+ style="stop-color: rgb(77, 77, 77); stop-opacity: 1;"
+ offset="0"
+ id="stop10912" />
+ <stop
+ style="stop-color: rgb(102, 102, 102); stop-opacity: 1;"
+ offset="1"
+ id="stop10914" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient10725">
+ <stop
+ style="stop-color: rgb(255, 246, 221); stop-opacity: 1;"
+ offset="0"
+ id="stop10727" />
+ <stop
+ style="stop-color: rgb(255, 255, 255); stop-opacity: 1;"
+ offset="1"
+ id="stop10729" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient10719"
+ inkscape:collect="always">
+ <stop
+ id="stop10721"
+ offset="0"
+ style="stop-color: rgb(102, 102, 102); stop-opacity: 1;" />
+ <stop
+ id="stop10723"
+ offset="1"
+ style="stop-color: rgb(153, 153, 153); stop-opacity: 1;" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient10713">
+ <stop
+ style="stop-color: rgb(204, 204, 204); stop-opacity: 1;"
+ offset="0"
+ id="stop10715" />
+ <stop
+ style="stop-color: rgb(153, 153, 153); stop-opacity: 1;"
+ offset="1"
+ id="stop10717" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient10478">
+ <stop
+ style="stop-color: rgb(114, 114, 114); stop-opacity: 1;"
+ offset="0"
+ id="stop10480" />
+ <stop
+ style="stop-color: rgb(179, 179, 179); stop-opacity: 1;"
+ offset="1"
+ id="stop10482" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient10412">
+ <stop
+ style="stop-color: rgb(0, 0, 0); stop-opacity: 1;"
+ offset="0"
+ id="stop10414" />
+ <stop
+ style="stop-color: rgb(77, 77, 77); stop-opacity: 1;"
+ offset="1"
+ id="stop10416" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient10341"
+ inkscape:collect="always">
+ <stop
+ id="stop10343"
+ offset="0"
+ style="stop-color: rgb(233, 185, 19); stop-opacity: 0;" />
+ <stop
+ style="stop-color: rgb(252, 92, 0); stop-opacity: 1;"
+ offset="0.49305555"
+ id="stop10345" />
+ <stop
+ id="stop10347"
+ offset="1"
+ style="stop-color: rgb(233, 185, 19); stop-opacity: 0;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient10331"
+ inkscape:collect="always">
+ <stop
+ id="stop10333"
+ offset="0"
+ style="stop-color: rgb(204, 204, 204); stop-opacity: 1;" />
+ <stop
+ id="stop10335"
+ offset="1"
+ style="stop-color: rgb(179, 179, 179); stop-opacity: 1;" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient10303">
+ <stop
+ style="stop-color: rgb(255, 255, 255); stop-opacity: 1;"
+ offset="0"
+ id="stop10305" />
+ <stop
+ style="stop-color: rgb(242, 242, 242); stop-opacity: 1;"
+ offset="1"
+ id="stop10307" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient10295"
+ inkscape:collect="always">
+ <stop
+ id="stop10297"
+ offset="0"
+ style="stop-color: rgb(233, 185, 19); stop-opacity: 0;" />
+ <stop
+ style="stop-color: rgb(252, 92, 0); stop-opacity: 1;"
+ offset="0.49305555"
+ id="stop10299" />
+ <stop
+ id="stop10301"
+ offset="1"
+ style="stop-color: rgb(233, 185, 19); stop-opacity: 0;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient10216"
+ inkscape:collect="always">
+ <stop
+ id="stop10218"
+ offset="0"
+ style="stop-color: rgb(252, 92, 0); stop-opacity: 1;" />
+ <stop
+ id="stop10220"
+ offset="1"
+ style="stop-color: rgb(204, 204, 204); stop-opacity: 0;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient9981">
+ <stop
+ id="stop9983"
+ offset="0"
+ style="stop-color: rgb(255, 246, 221); stop-opacity: 1;" />
+ <stop
+ id="stop9985"
+ offset="1"
+ style="stop-color: rgb(254, 248, 244); stop-opacity: 1;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient9935">
+ <stop
+ id="stop9937"
+ offset="0"
+ style="stop-color: rgb(237, 191, 161); stop-opacity: 1;" />
+ <stop
+ id="stop9939"
+ offset="1"
+ style="stop-color: rgb(253, 241, 234); stop-opacity: 1;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient9929">
+ <stop
+ id="stop9931"
+ offset="0"
+ style="stop-color: rgb(237, 191, 161); stop-opacity: 1;" />
+ <stop
+ id="stop9933"
+ offset="1"
+ style="stop-color: rgb(253, 241, 234); stop-opacity: 1;" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient9860">
+ <stop
+ style="stop-color: rgb(102, 102, 102); stop-opacity: 1;"
+ offset="0"
+ id="stop9862" />
+ <stop
+ style="stop-color: rgb(128, 128, 128); stop-opacity: 1;"
+ offset="1"
+ id="stop9864" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient9658">
+ <stop
+ style="stop-color: rgb(247, 195, 161); stop-opacity: 1;"
+ offset="0"
+ id="stop9660" />
+ <stop
+ id="stop9664"
+ offset="0.47156018"
+ style="stop-color: rgb(241, 179, 142); stop-opacity: 1;" />
+ <stop
+ style="stop-color: rgb(241, 117, 113); stop-opacity: 1;"
+ offset="1"
+ id="stop9662" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient9652"
+ inkscape:collect="always">
+ <stop
+ id="stop9654"
+ offset="0"
+ style="stop-color: rgb(255, 255, 255); stop-opacity: 1;" />
+ <stop
+ id="stop9656"
+ offset="1"
+ style="stop-color: rgb(255, 188, 213); stop-opacity: 0;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient9575"
+ inkscape:collect="always">
+ <stop
+ id="stop9577"
+ offset="0"
+ style="stop-color: rgb(127, 55, 0); stop-opacity: 1;" />
+ <stop
+ id="stop9579"
+ offset="1"
+ style="stop-color: rgb(255, 198, 0); stop-opacity: 0;" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient9569">
+ <stop
+ style="stop-color: rgb(180, 44, 0); stop-opacity: 1;"
+ offset="0"
+ id="stop9571" />
+ <stop
+ style="stop-color: rgb(255, 198, 0); stop-opacity: 0;"
+ offset="1"
+ id="stop9573" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient9563">
+ <stop
+ style="stop-color: rgb(255, 251, 136); stop-opacity: 1;"
+ offset="0"
+ id="stop9565" />
+ <stop
+ style="stop-color: rgb(185, 127, 0); stop-opacity: 0;"
+ offset="1"
+ id="stop9567" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient20835">
+ <stop
+ style="stop-color: rgb(33, 159, 214); stop-opacity: 1;"
+ offset="0"
+ id="stop20837" />
+ <stop
+ style="stop-color: rgb(6, 93, 141); stop-opacity: 1;"
+ offset="1"
+ id="stop20839" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient19846">
+ <stop
+ id="stop19848"
+ offset="0"
+ style="stop-color: rgb(37, 157, 210); stop-opacity: 1;" />
+ <stop
+ id="stop19850"
+ offset="1"
+ style="stop-color: rgb(6, 93, 141); stop-opacity: 1;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient19796">
+ <stop
+ id="stop19798"
+ offset="0"
+ style="stop-color: rgb(68, 173, 235); stop-opacity: 1;" />
+ <stop
+ id="stop19800"
+ offset="1"
+ style="stop-color: rgb(170, 220, 247); stop-opacity: 1;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient18932"
+ inkscape:collect="always">
+ <stop
+ id="stop18934"
+ offset="0"
+ style="stop-color: rgb(114, 114, 114); stop-opacity: 1;" />
+ <stop
+ id="stop18936"
+ offset="1"
+ style="stop-color: rgb(154, 154, 154); stop-opacity: 1;" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient18786">
+ <stop
+ style="stop-color: rgb(163, 62, 3); stop-opacity: 1;"
+ offset="0"
+ id="stop18788" />
+ <stop
+ style="stop-color: rgb(193, 84, 20); stop-opacity: 1;"
+ offset="1"
+ id="stop18790" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient17734"
+ inkscape:collect="always">
+ <stop
+ id="stop17736"
+ offset="0"
+ style="stop-color: rgb(153, 153, 153); stop-opacity: 1;" />
+ <stop
+ id="stop17738"
+ offset="1"
+ style="stop-color: rgb(96, 96, 96); stop-opacity: 1;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient17465"
+ inkscape:collect="always">
+ <stop
+ id="stop17467"
+ offset="0"
+ style="stop-color: rgb(179, 68, 3); stop-opacity: 1;" />
+ <stop
+ id="stop17469"
+ offset="1"
+ style="stop-color: rgb(98, 37, 2); stop-opacity: 1;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient17459"
+ inkscape:collect="always">
+ <stop
+ id="stop17461"
+ offset="0"
+ style="stop-color: rgb(179, 68, 3); stop-opacity: 1;" />
+ <stop
+ id="stop17463"
+ offset="1"
+ style="stop-color: rgb(98, 37, 2); stop-opacity: 1;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient17453"
+ inkscape:collect="always">
+ <stop
+ id="stop17455"
+ offset="0"
+ style="stop-color: rgb(179, 68, 3); stop-opacity: 1;" />
+ <stop
+ id="stop17457"
+ offset="1"
+ style="stop-color: rgb(98, 37, 2); stop-opacity: 1;" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient17355">
+ <stop
+ style="stop-color: rgb(142, 33, 3); stop-opacity: 1;"
+ offset="0"
+ id="stop17357" />
+ <stop
+ id="stop17359"
+ offset="0.16904713"
+ style="stop-color: rgb(231, 108, 53); stop-opacity: 1;" />
+ <stop
+ id="stop17361"
+ offset="0.8380928"
+ style="stop-color: rgb(231, 108, 53); stop-opacity: 1;" />
+ <stop
+ style="stop-color: rgb(146, 37, 4); stop-opacity: 1;"
+ offset="1"
+ id="stop17363" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient17345"
+ inkscape:collect="always">
+ <stop
+ id="stop17347"
+ offset="0"
+ style="stop-color: rgb(142, 33, 3); stop-opacity: 1;" />
+ <stop
+ style="stop-color: rgb(233, 127, 61); stop-opacity: 1;"
+ offset="0.16904713"
+ id="stop17349" />
+ <stop
+ style="stop-color: rgb(233, 127, 61); stop-opacity: 1;"
+ offset="0.8380928"
+ id="stop17351" />
+ <stop
+ id="stop17353"
+ offset="1"
+ style="stop-color: rgb(146, 37, 4); stop-opacity: 1;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient16889">
+ <stop
+ id="stop16891"
+ offset="0"
+ style="stop-color: rgb(246, 183, 168); stop-opacity: 1;" />
+ <stop
+ id="stop16893"
+ offset="1"
+ style="stop-color: rgb(254, 237, 222); stop-opacity: 1;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient16838">
+ <stop
+ style="stop-color: rgb(248, 202, 53); stop-opacity: 1;"
+ offset="0"
+ id="stop16840" />
+ <stop
+ style="stop-color: rgb(253, 235, 175); stop-opacity: 1;"
+ offset="1"
+ id="stop16842" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient16819"
+ inkscape:collect="always">
+ <stop
+ id="stop16821"
+ offset="0"
+ style="stop-color: rgb(226, 176, 6); stop-opacity: 1;" />
+ <stop
+ id="stop16823"
+ offset="1"
+ style="stop-color: rgb(188, 134, 17); stop-opacity: 1;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient16813"
+ inkscape:collect="always">
+ <stop
+ id="stop16815"
+ offset="0"
+ style="stop-color: rgb(231, 180, 6); stop-opacity: 1;" />
+ <stop
+ id="stop16817"
+ offset="1"
+ style="stop-color: rgb(207, 154, 22); stop-opacity: 1;" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient16501">
+ <stop
+ style="stop-color: rgb(146, 7, 167); stop-opacity: 1;"
+ offset="0"
+ id="stop16503" />
+ <stop
+ id="stop16505"
+ offset="0.27254906"
+ style="stop-color: rgb(205, 108, 196); stop-opacity: 1;" />
+ <stop
+ style="stop-color: rgb(173, 60, 190); stop-opacity: 1;"
+ offset="0.50966245"
+ id="stop16507" />
+ <stop
+ style="stop-color: rgb(188, 42, 210); stop-opacity: 1;"
+ offset="0.83376038"
+ id="stop16509" />
+ <stop
+ style="stop-color: rgb(149, 11, 168); stop-opacity: 1;"
+ offset="1"
+ id="stop16511" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient14610">
+ <stop
+ style="stop-color: rgb(128, 128, 128); stop-opacity: 1;"
+ offset="0"
+ id="stop14612" />
+ <stop
+ style="stop-color: rgb(179, 179, 179); stop-opacity: 1;"
+ offset="1"
+ id="stop14614" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient8642">
+ <stop
+ style="stop-color: rgb(0, 0, 97); stop-opacity: 1;"
+ offset="0"
+ id="stop8644" />
+ <stop
+ style="stop-color: rgb(0, 111, 134); stop-opacity: 0;"
+ offset="1"
+ id="stop8646" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient8548">
+ <stop
+ style="stop-color: rgb(255, 255, 255); stop-opacity: 1;"
+ offset="0"
+ id="stop8550" />
+ <stop
+ style="stop-color: rgb(0, 168, 255); stop-opacity: 0;"
+ offset="1"
+ id="stop8552" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient7770"
+ inkscape:collect="always">
+ <stop
+ id="stop7772"
+ offset="0"
+ style="stop-color: rgb(255, 255, 255); stop-opacity: 1;" />
+ <stop
+ id="stop7774"
+ offset="1"
+ style="stop-color: rgb(245, 255, 170); stop-opacity: 0;" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient8586">
+ <stop
+ style="stop-color: rgb(18, 90, 0); stop-opacity: 1;"
+ offset="0"
+ id="stop8588" />
+ <stop
+ style="stop-color: rgb(105, 206, 0); stop-opacity: 0;"
+ offset="1"
+ id="stop8592" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient8754">
+ <stop
+ style="stop-color: rgb(220, 133, 233); stop-opacity: 1;"
+ offset="0"
+ id="stop8756" />
+ <stop
+ style="stop-color: rgb(248, 220, 251); stop-opacity: 1;"
+ offset="1"
+ id="stop8758" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient8742">
+ <stop
+ style="stop-color: rgb(146, 0, 255); stop-opacity: 1;"
+ offset="0"
+ id="stop8744" />
+ <stop
+ style="stop-color: rgb(255, 0, 255); stop-opacity: 0;"
+ offset="1"
+ id="stop8746" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient8717">
+ <stop
+ style="stop-color: rgb(128, 0, 128); stop-opacity: 1;"
+ offset="0"
+ id="stop8719" />
+ <stop
+ id="stop8723"
+ offset="0.7268371"
+ style="stop-color: rgb(128, 0, 128); stop-opacity: 1;" />
+ <stop
+ style="stop-color: rgb(255, 0, 255); stop-opacity: 0;"
+ offset="1"
+ id="stop8721" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient8663"
+ inkscape:collect="always">
+ <stop
+ id="stop8665"
+ offset="0"
+ style="stop-color: rgb(146, 7, 167); stop-opacity: 1;" />
+ <stop
+ style="stop-color: rgb(198, 88, 188); stop-opacity: 1;"
+ offset="0.27254906"
+ id="stop8667" />
+ <stop
+ id="stop8669"
+ offset="0.50966245"
+ style="stop-color: rgb(164, 46, 182); stop-opacity: 1;" />
+ <stop
+ id="stop8671"
+ offset="0.83376038"
+ style="stop-color: rgb(180, 21, 205); stop-opacity: 1;" />
+ <stop
+ id="stop8673"
+ offset="1"
+ style="stop-color: rgb(149, 11, 168); stop-opacity: 1;" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient9030">
+ <stop
+ style="stop-color: rgb(255, 255, 255); stop-opacity: 1;"
+ offset="0"
+ id="stop9032" />
+ <stop
+ style="stop-color: rgb(255, 255, 255); stop-opacity: 0;"
+ offset="1"
+ id="stop9034" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient8984">
+ <stop
+ style="stop-color: rgb(255, 255, 255); stop-opacity: 1;"
+ offset="0"
+ id="stop8986" />
+ <stop
+ style="stop-color: rgb(255, 255, 255); stop-opacity: 0;"
+ offset="1"
+ id="stop8988" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient8964">
+ <stop
+ id="stop8966"
+ offset="0"
+ style="stop-color: rgb(225, 150, 251); stop-opacity: 1;" />
+ <stop
+ style="stop-color: rgb(244, 199, 250); stop-opacity: 1;"
+ offset="0.13010512"
+ id="stop8968" />
+ <stop
+ style="stop-color: rgb(224, 145, 243); stop-opacity: 1;"
+ offset="0.31360075"
+ id="stop8970" />
+ <stop
+ id="stop8972"
+ offset="0.44078669"
+ style="stop-color: rgb(215, 100, 233); stop-opacity: 1;" />
+ <stop
+ style="stop-color: rgb(231, 173, 240); stop-opacity: 1;"
+ offset="0.68364757"
+ id="stop8974" />
+ <stop
+ style="stop-color: rgb(230, 169, 248); stop-opacity: 1;"
+ offset="0.75620717"
+ id="stop8976" />
+ <stop
+ style="stop-color: rgb(229, 149, 242); stop-opacity: 1;"
+ offset="0.88021636"
+ id="stop8978" />
+ <stop
+ id="stop8980"
+ offset="1"
+ style="stop-color: rgb(242, 203, 248); stop-opacity: 1;" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient8859">
+ <stop
+ style="stop-color: rgb(255, 255, 255); stop-opacity: 1;"
+ offset="0"
+ id="stop8861" />
+ <stop
+ style="stop-color: rgb(170, 0, 0); stop-opacity: 0;"
+ offset="1"
+ id="stop8863" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient11804"
+ inkscape:collect="always">
+ <stop
+ id="stop11806"
+ offset="0"
+ style="stop-color: rgb(212, 0, 0); stop-opacity: 0;" />
+ <stop
+ style="stop-color: rgb(170, 0, 0); stop-opacity: 1;"
+ offset="0.49305555"
+ id="stop11808" />
+ <stop
+ id="stop11810"
+ offset="1"
+ style="stop-color: rgb(170, 0, 0); stop-opacity: 0;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient11704">
+ <stop
+ style="stop-color: rgb(255, 106, 30); stop-opacity: 1;"
+ offset="0"
+ id="stop11706" />
+ <stop
+ style="stop-color: rgb(212, 85, 0); stop-opacity: 0;"
+ offset="1"
+ id="stop11708" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient11674">
+ <stop
+ id="stop11676"
+ offset="0"
+ style="stop-color: rgb(248, 202, 53); stop-opacity: 1;" />
+ <stop
+ id="stop11678"
+ offset="1"
+ style="stop-color: rgb(254, 240, 196); stop-opacity: 1;" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient11612">
+ <stop
+ style="stop-color: rgb(237, 195, 62); stop-opacity: 1;"
+ offset="0"
+ id="stop11614" />
+ <stop
+ style="stop-color: rgb(250, 230, 165); stop-opacity: 1;"
+ offset="1"
+ id="stop11616" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient11600"
+ inkscape:collect="always">
+ <stop
+ id="stop11602"
+ offset="0"
+ style="stop-color: rgb(212, 0, 0); stop-opacity: 0;" />
+ <stop
+ style="stop-color: rgb(212, 0, 0); stop-opacity: 1;"
+ offset="0.49305555"
+ id="stop11604" />
+ <stop
+ id="stop11606"
+ offset="1"
+ style="stop-color: rgb(212, 0, 0); stop-opacity: 0;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient11590"
+ inkscape:collect="always">
+ <stop
+ id="stop11592"
+ offset="0"
+ style="stop-color: rgb(166, 57, 0); stop-opacity: 1;" />
+ <stop
+ id="stop11594"
+ offset="1"
+ style="stop-color: rgb(255, 198, 0); stop-opacity: 0;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient11513"
+ inkscape:collect="always">
+ <stop
+ id="stop11515"
+ offset="0"
+ style="stop-color: rgb(215, 174, 30); stop-opacity: 1;" />
+ <stop
+ id="stop11517"
+ offset="1"
+ style="stop-color: rgb(255, 210, 81); stop-opacity: 1;" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient11503">
+ <stop
+ style="stop-color: rgb(228, 188, 51); stop-opacity: 1;"
+ offset="0"
+ id="stop11505" />
+ <stop
+ style="stop-color: rgb(205, 146, 21); stop-opacity: 1;"
+ offset="1"
+ id="stop11507" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient11458">
+ <stop
+ id="stop11460"
+ offset="0"
+ style="stop-color: rgb(168, 130, 0); stop-opacity: 1;" />
+ <stop
+ id="stop11462"
+ offset="1"
+ style="stop-color: rgb(114, 74, 0); stop-opacity: 1;" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient11332">
+ <stop
+ style="stop-color: rgb(173, 78, 7); stop-opacity: 1;"
+ offset="0"
+ id="stop11334" />
+ <stop
+ style="stop-color: rgb(233, 116, 77); stop-opacity: 1;"
+ offset="1"
+ id="stop11336" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient11255">
+ <stop
+ style="stop-color: rgb(246, 183, 168); stop-opacity: 1;"
+ offset="0"
+ id="stop11257" />
+ <stop
+ style="stop-color: rgb(254, 233, 214); stop-opacity: 1;"
+ offset="1"
+ id="stop11259" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient10755">
+ <stop
+ style="stop-color: rgb(233, 185, 19); stop-opacity: 1;"
+ offset="0"
+ id="stop10757" />
+ <stop
+ style="stop-color: rgb(255, 255, 0); stop-opacity: 1;"
+ offset="1"
+ id="stop10759" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient10682">
+ <stop
+ style="stop-color: rgb(128, 128, 128); stop-opacity: 1;"
+ offset="0"
+ id="stop10684" />
+ <stop
+ style="stop-color: rgb(96, 96, 96); stop-opacity: 1;"
+ offset="1"
+ id="stop10686" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient10676">
+ <stop
+ style="stop-color: rgb(184, 70, 3); stop-opacity: 1;"
+ offset="0"
+ id="stop10678" />
+ <stop
+ style="stop-color: rgb(98, 37, 2); stop-opacity: 1;"
+ offset="1"
+ id="stop10680" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient10670">
+ <stop
+ style="stop-color: rgb(184, 70, 3); stop-opacity: 1;"
+ offset="0"
+ id="stop10672" />
+ <stop
+ style="stop-color: rgb(98, 37, 2); stop-opacity: 1;"
+ offset="1"
+ id="stop10674" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient10664">
+ <stop
+ style="stop-color: rgb(184, 70, 3); stop-opacity: 1;"
+ offset="0"
+ id="stop10666" />
+ <stop
+ style="stop-color: rgb(98, 37, 2); stop-opacity: 1;"
+ offset="1"
+ id="stop10668" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient10658">
+ <stop
+ style="stop-color: rgb(184, 70, 3); stop-opacity: 1;"
+ offset="0"
+ id="stop10660" />
+ <stop
+ style="stop-color: rgb(98, 37, 2); stop-opacity: 1;"
+ offset="1"
+ id="stop10662" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient10623">
+ <stop
+ id="stop10625"
+ offset="0"
+ style="stop-color: rgb(255, 255, 255); stop-opacity: 0;" />
+ <stop
+ id="stop10627"
+ offset="1"
+ style="stop-color: rgb(255, 255, 255); stop-opacity: 0.862745;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient10617">
+ <stop
+ style="stop-color: rgb(120, 219, 103); stop-opacity: 1;"
+ offset="0"
+ id="stop10619" />
+ <stop
+ style="stop-color: rgb(204, 244, 198); stop-opacity: 1;"
+ offset="1"
+ id="stop10621" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient10442"
+ inkscape:collect="always">
+ <stop
+ id="stop10444"
+ offset="0"
+ style="stop-color: rgb(128, 128, 128); stop-opacity: 1;" />
+ <stop
+ id="stop10446"
+ offset="1"
+ style="stop-color: rgb(51, 51, 51); stop-opacity: 1;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient10436"
+ inkscape:collect="always">
+ <stop
+ id="stop10438"
+ offset="0"
+ style="stop-color: rgb(128, 128, 128); stop-opacity: 1;" />
+ <stop
+ id="stop10440"
+ offset="1"
+ style="stop-color: rgb(51, 51, 51); stop-opacity: 1;" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient10423">
+ <stop
+ style="stop-color: rgb(128, 128, 128); stop-opacity: 1;"
+ offset="0"
+ id="stop10425" />
+ <stop
+ style="stop-color: rgb(51, 51, 51); stop-opacity: 1;"
+ offset="1"
+ id="stop10427" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient10403"
+ inkscape:collect="always">
+ <stop
+ id="stop10405"
+ offset="0"
+ style="stop-color: rgb(230, 115, 37); stop-opacity: 1;" />
+ <stop
+ id="stop10407"
+ offset="1"
+ style="stop-color: rgb(200, 64, 12); stop-opacity: 1;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient10397"
+ inkscape:collect="always">
+ <stop
+ id="stop10399"
+ offset="0"
+ style="stop-color: rgb(230, 115, 37); stop-opacity: 1;" />
+ <stop
+ id="stop10401"
+ offset="1"
+ style="stop-color: rgb(200, 64, 12); stop-opacity: 1;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient10391"
+ inkscape:collect="always">
+ <stop
+ id="stop10393"
+ offset="0"
+ style="stop-color: rgb(230, 115, 37); stop-opacity: 1;" />
+ <stop
+ id="stop10395"
+ offset="1"
+ style="stop-color: rgb(200, 64, 12); stop-opacity: 1;" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient10377">
+ <stop
+ style="stop-color: rgb(230, 115, 37); stop-opacity: 1;"
+ offset="0"
+ id="stop10379" />
+ <stop
+ style="stop-color: rgb(200, 64, 12); stop-opacity: 1;"
+ offset="1"
+ id="stop10381" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient10367"
+ inkscape:collect="always">
+ <stop
+ id="stop10369"
+ offset="0"
+ style="stop-color: rgb(142, 33, 3); stop-opacity: 1;" />
+ <stop
+ style="stop-color: rgb(228, 92, 31); stop-opacity: 1;"
+ offset="0.16904713"
+ id="stop10371" />
+ <stop
+ style="stop-color: rgb(228, 92, 31); stop-opacity: 1;"
+ offset="0.8380928"
+ id="stop10373" />
+ <stop
+ id="stop10375"
+ offset="1"
+ style="stop-color: rgb(146, 37, 4); stop-opacity: 1;" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient10226">
+ <stop
+ style="stop-color: rgb(142, 33, 3); stop-opacity: 1;"
+ offset="0"
+ id="stop10228" />
+ <stop
+ id="stop10236"
+ offset="0.16904713"
+ style="stop-color: rgb(228, 111, 31); stop-opacity: 1;" />
+ <stop
+ id="stop10234"
+ offset="0.8380928"
+ style="stop-color: rgb(230, 109, 32); stop-opacity: 1;" />
+ <stop
+ style="stop-color: rgb(146, 37, 4); stop-opacity: 1;"
+ offset="1"
+ id="stop10230" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient10150">
+ <stop
+ style="stop-color: rgb(255, 0, 0); stop-opacity: 1;"
+ offset="0"
+ id="stop10152" />
+ <stop
+ style="stop-color: rgb(255, 198, 0); stop-opacity: 0;"
+ offset="1"
+ id="stop10154" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient10144">
+ <stop
+ style="stop-color: rgb(255, 0, 0); stop-opacity: 1;"
+ offset="0"
+ id="stop10146" />
+ <stop
+ style="stop-color: rgb(255, 198, 0); stop-opacity: 0;"
+ offset="1"
+ id="stop10148" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient10138">
+ <stop
+ style="stop-color: rgb(255, 255, 255); stop-opacity: 1;"
+ offset="0"
+ id="stop10140" />
+ <stop
+ style="stop-color: rgb(255, 213, 213); stop-opacity: 0;"
+ offset="1"
+ id="stop10142" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient9119"
+ inkscape:collect="always">
+ <stop
+ id="stop9121"
+ offset="0"
+ style="stop-color: rgb(255, 0, 0); stop-opacity: 1;" />
+ <stop
+ id="stop9123"
+ offset="1"
+ style="stop-color: rgb(211, 211, 0); stop-opacity: 0;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient9109"
+ inkscape:collect="always">
+ <stop
+ id="stop9111"
+ offset="0"
+ style="stop-color: rgb(128, 0, 0); stop-opacity: 1;" />
+ <stop
+ id="stop9113"
+ offset="1"
+ style="stop-color: rgb(255, 198, 0); stop-opacity: 0;" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient9103">
+ <stop
+ style="stop-color: rgb(0, 51, 98); stop-opacity: 1;"
+ offset="0"
+ id="stop9105" />
+ <stop
+ style="stop-color: rgb(0, 255, 140); stop-opacity: 0;"
+ offset="1"
+ id="stop9107" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient9014"
+ inkscape:collect="always">
+ <stop
+ id="stop9016"
+ offset="0"
+ style="stop-color: rgb(255, 255, 255); stop-opacity: 0;" />
+ <stop
+ style="stop-color: rgb(255, 255, 255); stop-opacity: 1;"
+ offset="0.49305555"
+ id="stop9018" />
+ <stop
+ id="stop9020"
+ offset="1"
+ style="stop-color: rgb(255, 255, 255); stop-opacity: 0;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient8989"
+ inkscape:collect="always">
+ <stop
+ id="stop8991"
+ offset="0"
+ style="stop-color: rgb(74, 0, 255); stop-opacity: 1;" />
+ <stop
+ id="stop8993"
+ offset="1"
+ style="stop-color: rgb(0, 160, 193); stop-opacity: 0;" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient8903">
+ <stop
+ style="stop-color: rgb(0, 128, 0); stop-opacity: 1;"
+ offset="0"
+ id="stop8905" />
+ <stop
+ style="stop-color: rgb(0, 255, 0); stop-opacity: 0;"
+ offset="1"
+ id="stop8907" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient7303">
+ <stop
+ style="stop-color: rgb(0, 0, 0); stop-opacity: 1;"
+ offset="0"
+ id="stop7305" />
+ <stop
+ style="stop-color: rgb(0, 0, 0); stop-opacity: 0;"
+ offset="1"
+ id="stop7307" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient9153">
+ <stop
+ style="stop-color: rgb(3, 105, 163); stop-opacity: 1;"
+ offset="0"
+ id="stop9155" />
+ <stop
+ style="stop-color: rgb(4, 127, 198); stop-opacity: 1;"
+ offset="1"
+ id="stop9157" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient8674">
+ <stop
+ style="stop-color: rgb(255, 255, 255); stop-opacity: 1;"
+ offset="0"
+ id="stop8676" />
+ <stop
+ style="stop-color: rgb(255, 255, 255); stop-opacity: 0;"
+ offset="1"
+ id="stop8678" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient8655">
+ <stop
+ style="stop-color: rgb(102, 102, 102); stop-opacity: 1;"
+ offset="0"
+ id="stop8657" />
+ <stop
+ style="stop-color: rgb(26, 26, 26); stop-opacity: 1;"
+ offset="1"
+ id="stop8659" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient8635">
+ <stop
+ style="stop-color: rgb(128, 128, 128); stop-opacity: 1;"
+ offset="0"
+ id="stop8637" />
+ <stop
+ style="stop-color: rgb(102, 102, 102); stop-opacity: 1;"
+ offset="1"
+ id="stop8639" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient8627">
+ <stop
+ style="stop-color: rgb(102, 102, 102); stop-opacity: 1;"
+ offset="0"
+ id="stop8629" />
+ <stop
+ style="stop-color: rgb(102, 102, 102); stop-opacity: 0.5;"
+ offset="1"
+ id="stop8631" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient8074">
+ <stop
+ style="stop-color: rgb(0, 0, 0); stop-opacity: 0;"
+ offset="0"
+ id="stop8076" />
+ <stop
+ id="stop8078"
+ offset="0.49305555"
+ style="stop-color: rgb(0, 0, 0); stop-opacity: 1;" />
+ <stop
+ style="stop-color: rgb(0, 0, 0); stop-opacity: 0;"
+ offset="1"
+ id="stop8080" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient7976">
+ <stop
+ id="stop7978"
+ offset="0"
+ style="stop-color: rgb(255, 255, 255); stop-opacity: 0.85;" />
+ <stop
+ id="stop7980"
+ offset="1"
+ style="stop-color: rgb(255, 255, 255); stop-opacity: 0.9;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient7970">
+ <stop
+ style="stop-color: rgb(153, 153, 153); stop-opacity: 1;"
+ offset="0"
+ id="stop7972" />
+ <stop
+ style="stop-color: rgb(230, 230, 230); stop-opacity: 1;"
+ offset="1"
+ id="stop7974" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient7931"
+ inkscape:collect="always">
+ <stop
+ id="stop7933"
+ offset="0"
+ style="stop-color: rgb(0, 0, 0); stop-opacity: 1;" />
+ <stop
+ style="stop-color: rgb(0, 0, 0); stop-opacity: 0.360784;"
+ offset="0.45461464"
+ id="stop7968" />
+ <stop
+ id="stop7935"
+ offset="1"
+ style="stop-color: rgb(0, 0, 0); stop-opacity: 0;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient10125">
+ <stop
+ style="stop-color: rgb(201, 156, 0); stop-opacity: 1;"
+ offset="0"
+ id="stop10127" />
+ <stop
+ style="stop-color: rgb(135, 105, 0); stop-opacity: 1;"
+ offset="1"
+ id="stop10129" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient10119">
+ <stop
+ id="stop10121"
+ offset="0"
+ style="stop-color: rgb(211, 97, 24); stop-opacity: 1;" />
+ <stop
+ id="stop10123"
+ offset="1"
+ style="stop-color: rgb(240, 158, 111); stop-opacity: 1;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient6989">
+ <stop
+ id="stop6991"
+ offset="0"
+ style="stop-color: rgb(240, 158, 111); stop-opacity: 1;" />
+ <stop
+ id="stop6993"
+ offset="1"
+ style="stop-color: rgb(249, 207, 181); stop-opacity: 1;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient6975">
+ <stop
+ id="stop6977"
+ offset="0"
+ style="stop-color: rgb(245, 206, 83); stop-opacity: 1;" />
+ <stop
+ id="stop6979"
+ offset="1"
+ style="stop-color: rgb(253, 233, 169); stop-opacity: 1;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient15606">
+ <stop
+ style="stop-color: rgb(242, 242, 242); stop-opacity: 1;"
+ offset="0"
+ id="stop15608" />
+ <stop
+ style="stop-color: rgb(255, 255, 255); stop-opacity: 1;"
+ offset="1"
+ id="stop15610" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient14494">
+ <stop
+ id="stop14496"
+ offset="0"
+ style="stop-color: rgb(220, 133, 233); stop-opacity: 1;" />
+ <stop
+ id="stop14498"
+ offset="1"
+ style="stop-color: rgb(242, 203, 248); stop-opacity: 1;" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient14486">
+ <stop
+ style="stop-color: rgb(142, 3, 163); stop-opacity: 1;"
+ offset="0"
+ id="stop14488" />
+ <stop
+ style="stop-color: rgb(83, 2, 96); stop-opacity: 1;"
+ offset="1"
+ id="stop14490" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient13791">
+ <stop
+ style="stop-color: rgb(211, 97, 24); stop-opacity: 1;"
+ offset="0"
+ id="stop13793" />
+ <stop
+ style="stop-color: rgb(240, 158, 111); stop-opacity: 1;"
+ offset="1"
+ id="stop13795" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient13785"
+ inkscape:collect="always">
+ <stop
+ id="stop13787"
+ offset="0"
+ style="stop-color: rgb(163, 62, 3); stop-opacity: 1;" />
+ <stop
+ id="stop13789"
+ offset="1"
+ style="stop-color: rgb(98, 37, 2); stop-opacity: 1;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient13220">
+ <stop
+ id="stop13222"
+ offset="0"
+ style="stop-color: rgb(142, 231, 128); stop-opacity: 1;" />
+ <stop
+ id="stop13224"
+ offset="1"
+ style="stop-color: rgb(204, 244, 198); stop-opacity: 1;" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient13214">
+ <stop
+ style="stop-color: rgb(24, 163, 3); stop-opacity: 1;"
+ offset="0"
+ id="stop13216" />
+ <stop
+ style="stop-color: rgb(16, 104, 2); stop-opacity: 1;"
+ offset="1"
+ id="stop13218" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient10292"
+ inkscape:collect="always">
+ <stop
+ id="stop10294"
+ offset="0"
+ style="stop-color: rgb(102, 102, 102); stop-opacity: 1;" />
+ <stop
+ id="stop10296"
+ offset="1"
+ style="stop-color: rgb(51, 51, 51); stop-opacity: 1;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient10286">
+ <stop
+ id="stop10288"
+ offset="0"
+ style="stop-color: rgb(179, 179, 179); stop-opacity: 1;" />
+ <stop
+ id="stop10290"
+ offset="1"
+ style="stop-color: rgb(230, 230, 230); stop-opacity: 1;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient9364">
+ <stop
+ style="stop-color: rgb(99, 187, 238); stop-opacity: 1;"
+ offset="0"
+ id="stop9366" />
+ <stop
+ style="stop-color: rgb(170, 220, 247); stop-opacity: 1;"
+ offset="1"
+ id="stop9368" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient9334"
+ inkscape:collect="always">
+ <stop
+ id="stop9336"
+ offset="0"
+ style="stop-color: rgb(3, 105, 163); stop-opacity: 1;" />
+ <stop
+ id="stop9338"
+ offset="1"
+ style="stop-color: rgb(2, 63, 98); stop-opacity: 1;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient10292-9"
+ inkscape:collect="always">
+ <stop
+ id="stop10294-9"
+ offset="0"
+ style="stop-color: rgb(102, 102, 102); stop-opacity: 1;" />
+ <stop
+ id="stop10296-6"
+ offset="1"
+ style="stop-color: rgb(51, 51, 51); stop-opacity: 1;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient6787-1-2-3-6-5-6-3-0">
+ <stop
+ id="stop6789-2-7-9-01-7-1-2-0"
+ offset="0"
+ style="stop-color: rgb(128, 128, 128); stop-opacity: 1;" />
+ <stop
+ id="stop6791-8-7-1-9-5-5-9-5"
+ offset="1"
+ style="stop-color: rgb(77, 77, 77); stop-opacity: 1;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient10501-8">
+ <stop
+ style="stop-color: rgb(3, 105, 163); stop-opacity: 1;"
+ offset="0"
+ id="stop10503-6" />
+ <stop
+ style="stop-color: rgb(2, 63, 98); stop-opacity: 1;"
+ offset="1"
+ id="stop10505-6" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient9334-46"
+ inkscape:collect="always">
+ <stop
+ id="stop9336-9"
+ offset="0"
+ style="stop-color: rgb(3, 105, 163); stop-opacity: 1;" />
+ <stop
+ id="stop9338-9"
+ offset="1"
+ style="stop-color: rgb(2, 63, 98); stop-opacity: 1;" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9334-46"
+ id="linearGradient20158"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1, 0, 0, 1.00011, 0, -0.10551)"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.99982"
+ y2="991.87488" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10501-8"
+ id="linearGradient20160"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.00399, 0, 0, 1.00959, -1.49914, -9.36636)"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.96875"
+ y2="992.375" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10292"
+ id="linearGradient20162"
+ gradientUnits="userSpaceOnUse"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.96875"
+ y2="992.375" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9364"
+ id="linearGradient20164"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(7.97914, 0, 0, 8.01241, -546.603, -3106.53)"
+ x1="294.3429"
+ y1="256.58133"
+ x2="294.41818"
+ y2="243.13852" />
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient13214-4">
+ <stop
+ style="stop-color: rgb(24, 163, 3); stop-opacity: 1;"
+ offset="0"
+ id="stop13216-7" />
+ <stop
+ style="stop-color: rgb(16, 104, 2); stop-opacity: 1;"
+ offset="1"
+ id="stop13218-2" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient16134-3-1">
+ <stop
+ style="stop-color: rgb(0, 0, 0); stop-opacity: 0.501961;"
+ offset="0"
+ id="stop16136-6-3" />
+ <stop
+ style="stop-color: rgb(0, 0, 0); stop-opacity: 0;"
+ offset="1"
+ id="stop16138-4-6" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient13214"
+ id="linearGradient7824"
+ gradientUnits="userSpaceOnUse"
+ x1="475"
+ y1="-895.63782"
+ x2="475"
+ y2="-848.63782" />
+ <linearGradient
+ id="linearGradient14494-2">
+ <stop
+ id="stop14496-9"
+ offset="0"
+ style="stop-color: rgb(220, 133, 233); stop-opacity: 1;" />
+ <stop
+ id="stop14498-9"
+ offset="1"
+ style="stop-color: rgb(242, 203, 248); stop-opacity: 1;" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9334"
+ id="linearGradient5974"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1, 0, 0, 1.00011, 0, -0.10551)"
+ x1="121.51716"
+ y1="976.37823"
+ x2="121.51716"
+ y2="992.41681" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9334"
+ id="linearGradient5976"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.00399, 0, 0, 1.00959, -1.49914, -9.36636)"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.96875"
+ y2="992.375" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10292"
+ id="linearGradient5978"
+ gradientUnits="userSpaceOnUse"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.96875"
+ y2="992.375" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient13214"
+ id="linearGradient6046"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1, 0, 0, 1.00011, 0, -0.10551)"
+ x1="121.98373"
+ y1="976.33423"
+ x2="121.98373"
+ y2="992.46613" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient13214"
+ id="linearGradient6048"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.00399, 0, 0, 1.00959, -1.49914, -9.36636)"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.96875"
+ y2="992.375" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10292"
+ id="linearGradient6050"
+ gradientUnits="userSpaceOnUse"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.96875"
+ y2="992.375" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient14486"
+ id="linearGradient8045"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1, 0, 0, 1.00011, 0, -0.10551)"
+ x1="120.32938"
+ y1="976.37823"
+ x2="120.32938"
+ y2="992.38428" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient14486"
+ id="linearGradient8047"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.00399, 0, 0, 1.00959, -1.49914, -9.36636)"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.96875"
+ y2="992.375" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10292"
+ id="linearGradient8049"
+ gradientUnits="userSpaceOnUse"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.96875"
+ y2="992.375" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient13214-4"
+ id="linearGradient13606"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1, 0, 0, 1.00011, 0, -0.10551)"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.99982"
+ y2="991.87488" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient13214-4"
+ id="linearGradient13608"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.00399, 0, 0, 1.00959, -1.49914, -9.36636)"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.96875"
+ y2="992.375" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10292"
+ id="linearGradient13610"
+ gradientUnits="userSpaceOnUse"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.96875"
+ y2="992.375" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient13220"
+ id="linearGradient13612"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(7.97914, 0, 0, 8.01241, -285.603, -3106.53)"
+ x1="294.3429"
+ y1="256.58133"
+ x2="294.41818"
+ y2="243.13852" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient13785"
+ id="linearGradient4841"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1, 0, 0, 1.00011, 0, -0.10551)"
+ x1="122.07292"
+ y1="976.37817"
+ x2="122.07292"
+ y2="992.3916" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient13785"
+ id="linearGradient4843"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.00399, 0, 0, 1.00959, -1.49914, -9.36636)"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.96875"
+ y2="992.375" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10292"
+ id="linearGradient4845"
+ gradientUnits="userSpaceOnUse"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.96875"
+ y2="992.375" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient13785"
+ id="linearGradient9674"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1, 0, 0, 1.00011, 0, -0.10551)"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.99982"
+ y2="991.87488" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient13785"
+ id="linearGradient9676"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.00399, 0, 0, 1.00959, -1.49914, -9.36636)"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.96875"
+ y2="992.375" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient13785"
+ id="linearGradient9678"
+ gradientUnits="userSpaceOnUse"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.96875"
+ y2="992.375" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6989"
+ id="linearGradient9680"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(7.97914, 0, 0, 8.01241, -24.6033, -3106.53)"
+ x1="294.3429"
+ y1="256.58133"
+ x2="294.41818"
+ y2="243.13852" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10125"
+ id="linearGradient10075"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1, 0, 0, 1.00011, 0, -0.10551)"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.99982"
+ y2="991.87488" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10125"
+ id="linearGradient10077"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.00399, 0, 0, 1.00959, -1.49914, -9.36636)"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.96875"
+ y2="992.375" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10292"
+ id="linearGradient10079"
+ gradientUnits="userSpaceOnUse"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.96875"
+ y2="992.375" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6975"
+ id="linearGradient10081"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(7.97914, 0, 0, 8.01241, 236.397, -3106.53)"
+ x1="294.3429"
+ y1="256.58133"
+ x2="294.41818"
+ y2="243.13852" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10125"
+ id="linearGradient10586"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1, 0, 0, 1.00011, 0, -0.10551)"
+ x1="122.0614"
+ y1="976.3645"
+ x2="122.0614"
+ y2="992.39667" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10125"
+ id="linearGradient10588"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.00399, 0, 0, 1.00959, -1.49914, -9.36636)"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.96875"
+ y2="992.375" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10292"
+ id="linearGradient10590"
+ gradientUnits="userSpaceOnUse"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.96875"
+ y2="992.375" />
+ <linearGradient
+ id="linearGradient10501-8-4-6">
+ <stop
+ style="stop-color: rgb(28, 153, 224); stop-opacity: 1;"
+ offset="0"
+ id="stop10503-6-23-7" />
+ <stop
+ style="stop-color: rgb(3, 105, 163); stop-opacity: 1;"
+ offset="1"
+ id="stop10505-6-9-9" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient10501-8-4-63-3-0-5-88-1-3-6-4">
+ <stop
+ style="stop-color: rgb(3, 105, 163); stop-opacity: 1;"
+ offset="0"
+ id="stop10503-6-23-23-4-2-9-3-8-19-4-5" />
+ <stop
+ style="stop-color: rgb(2, 63, 98); stop-opacity: 1;"
+ offset="1"
+ id="stop10505-6-9-1-2-5-4-5-2-5-2-5" />
+ </linearGradient>
+ <clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath9617">
+ <path
+ sodipodi:type="arc"
+ style="overflow: visible; marker: none; opacity: 0.227564; color: rgb(0, 0, 0); fill: rgb(28, 153, 224); fill-opacity: 1; fill-rule: nonzero; stroke: none; stroke-width: 1.13793; visibility: visible; display: inline;"
+ id="path9619"
+ sodipodi:cx="1184.5"
+ sodipodi:cy="675.5"
+ sodipodi:rx="16.5"
+ sodipodi:ry="16.5"
+ d="m 1201,675.5 a 16.5,16.5 0 1 1 -33,0 16.5,16.5 0 1 1 33,0 z"
+ transform="matrix(0.307987, 0, 0, 0.307987, 2815.68, 454.154)"
+ inkscape:export-filename="path12513.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ </clipPath>
+ <clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath9629">
+ <path
+ sodipodi:type="arc"
+ style="overflow: visible; marker: none; opacity: 0.227564; color: rgb(0, 0, 0); fill: rgb(28, 153, 224); fill-opacity: 1; fill-rule: nonzero; stroke: none; stroke-width: 1.13793; visibility: visible; display: inline;"
+ id="path9631"
+ sodipodi:cx="1184.5"
+ sodipodi:cy="675.5"
+ sodipodi:rx="16.5"
+ sodipodi:ry="16.5"
+ d="m 1201,675.5 a 16.5,16.5 0 1 1 -33,0 16.5,16.5 0 1 1 33,0 z"
+ transform="matrix(0.909091, 0, 0, 0.909091, 1987.18, -1698.73)"
+ inkscape:export-filename="path12513.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ </clipPath>
+ <clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath9637">
+ <path
+ sodipodi:type="arc"
+ style="overflow: visible; marker: none; opacity: 0.227564; color: rgb(0, 0, 0); fill: rgb(28, 153, 224); fill-opacity: 1; fill-rule: nonzero; stroke: none; stroke-width: 1.13793; visibility: visible; display: inline;"
+ id="path9639"
+ sodipodi:cx="1184.5"
+ sodipodi:cy="675.5"
+ sodipodi:rx="16.5"
+ sodipodi:ry="16.5"
+ d="m 1201,675.5 a 16.5,16.5 0 1 1 -33,0 16.5,16.5 0 1 1 33,0 z"
+ transform="matrix(0.909091, 0, 0, 0.909091, 1987.18, -1698.73)"
+ inkscape:export-filename="path12513.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ </clipPath>
+ <clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath9641">
+ <path
+ sodipodi:type="arc"
+ style="overflow: visible; marker: none; opacity: 0.227564; color: rgb(0, 0, 0); fill: rgb(28, 153, 224); fill-opacity: 1; fill-rule: nonzero; stroke: none; stroke-width: 1.13793; visibility: visible; display: inline;"
+ id="path9643"
+ sodipodi:cx="1184.5"
+ sodipodi:cy="675.5"
+ sodipodi:rx="16.5"
+ sodipodi:ry="16.5"
+ d="m 1201,675.5 a 16.5,16.5 0 1 1 -33,0 16.5,16.5 0 1 1 33,0 z"
+ transform="matrix(0.909091, 0, 0, 0.909091, 1987.18, -1698.73)"
+ inkscape:export-filename="path12513.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ </clipPath>
+ <clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath9645">
+ <path
+ sodipodi:type="arc"
+ style="overflow: visible; marker: none; opacity: 0.227564; color: rgb(0, 0, 0); fill: rgb(28, 153, 224); fill-opacity: 1; fill-rule: nonzero; stroke: none; stroke-width: 1.13793; visibility: visible; display: inline;"
+ id="path9647"
+ sodipodi:cx="1184.5"
+ sodipodi:cy="675.5"
+ sodipodi:rx="16.5"
+ sodipodi:ry="16.5"
+ d="m 1201,675.5 a 16.5,16.5 0 1 1 -33,0 16.5,16.5 0 1 1 33,0 z"
+ transform="matrix(0.909091, 0, 0, 0.909091, 1987.18, -1698.73)"
+ inkscape:export-filename="path12513.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ </clipPath>
+ <clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath9649">
+ <path
+ sodipodi:type="arc"
+ style="overflow: visible; marker: none; opacity: 0.227564; color: rgb(0, 0, 0); fill: rgb(28, 153, 224); fill-opacity: 1; fill-rule: nonzero; stroke: none; stroke-width: 1.13793; visibility: visible; display: inline;"
+ id="path9651"
+ sodipodi:cx="1184.5"
+ sodipodi:cy="675.5"
+ sodipodi:rx="16.5"
+ sodipodi:ry="16.5"
+ d="m 1201,675.5 a 16.5,16.5 0 1 1 -33,0 16.5,16.5 0 1 1 33,0 z"
+ transform="matrix(0.909091, 0, 0, 0.909091, 1987.18, -1698.73)"
+ inkscape:export-filename="path12513.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ </clipPath>
+ <clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath9653">
+ <path
+ sodipodi:type="arc"
+ style="overflow: visible; marker: none; opacity: 0.227564; color: rgb(0, 0, 0); fill: rgb(28, 153, 224); fill-opacity: 1; fill-rule: nonzero; stroke: none; stroke-width: 1.13793; visibility: visible; display: inline;"
+ id="path9655"
+ sodipodi:cx="1184.5"
+ sodipodi:cy="675.5"
+ sodipodi:rx="16.5"
+ sodipodi:ry="16.5"
+ d="m 1201,675.5 a 16.5,16.5 0 1 1 -33,0 16.5,16.5 0 1 1 33,0 z"
+ transform="matrix(0.909091, 0, 0, 0.909091, 1987.18, -1698.73)"
+ inkscape:export-filename="path12513.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ </clipPath>
+ <clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath9657">
+ <path
+ sodipodi:type="arc"
+ style="overflow: visible; marker: none; opacity: 0.227564; color: rgb(0, 0, 0); fill: rgb(28, 153, 224); fill-opacity: 1; fill-rule: nonzero; stroke: none; stroke-width: 1.13793; visibility: visible; display: inline;"
+ id="path9659"
+ sodipodi:cx="1184.5"
+ sodipodi:cy="675.5"
+ sodipodi:rx="16.5"
+ sodipodi:ry="16.5"
+ d="m 1201,675.5 a 16.5,16.5 0 1 1 -33,0 16.5,16.5 0 1 1 33,0 z"
+ transform="matrix(0.909091, 0, 0, 0.909091, 1987.18, -1698.73)"
+ inkscape:export-filename="path12513.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ </clipPath>
+ <clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath9661">
+ <path
+ sodipodi:type="arc"
+ style="overflow: visible; marker: none; opacity: 0.227564; color: rgb(0, 0, 0); fill: rgb(28, 153, 224); fill-opacity: 1; fill-rule: nonzero; stroke: none; stroke-width: 1.13793; visibility: visible; display: inline;"
+ id="path9663"
+ sodipodi:cx="1184.5"
+ sodipodi:cy="675.5"
+ sodipodi:rx="16.5"
+ sodipodi:ry="16.5"
+ d="m 1201,675.5 a 16.5,16.5 0 1 1 -33,0 16.5,16.5 0 1 1 33,0 z"
+ transform="matrix(0.909091, 0, 0, 0.909091, 1987.18, -1698.73)"
+ inkscape:export-filename="path12513.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ </clipPath>
+ <clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath9665">
+ <path
+ sodipodi:type="arc"
+ style="overflow: visible; marker: none; opacity: 0.227564; color: rgb(0, 0, 0); fill: rgb(28, 153, 224); fill-opacity: 1; fill-rule: nonzero; stroke: none; stroke-width: 1.13793; visibility: visible; display: inline;"
+ id="path9667"
+ sodipodi:cx="1184.5"
+ sodipodi:cy="675.5"
+ sodipodi:rx="16.5"
+ sodipodi:ry="16.5"
+ d="m 1201,675.5 a 16.5,16.5 0 1 1 -33,0 16.5,16.5 0 1 1 33,0 z"
+ transform="matrix(1.03448, 0, 0, 1.03448, -40.8448, -23.2931)"
+ inkscape:export-filename="path12513.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ </clipPath>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10292"
+ id="linearGradient11256"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1, 0, 0, 1.00011, 0, -0.10551)"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.99982"
+ y2="991.87488" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10292-9"
+ id="linearGradient11258"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.00399, 0, 0, 1.00959, -1.49914, -9.36636)"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.96875"
+ y2="992.375" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10292"
+ id="linearGradient11260"
+ gradientUnits="userSpaceOnUse"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.96875"
+ y2="992.375" />
+ <linearGradient
+ id="linearGradient9334-5"
+ inkscape:collect="always">
+ <stop
+ id="stop9336-3"
+ offset="0"
+ style="stop-color: rgb(3, 105, 163); stop-opacity: 1;" />
+ <stop
+ id="stop9338-4"
+ offset="1"
+ style="stop-color: rgb(2, 63, 98); stop-opacity: 1;" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9334-5"
+ id="linearGradient8162-8"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.00399, 0, 0, 1.00959, -1.49914, -9.36636)"
+ x1="168.82439"
+ y1="-1409.7456"
+ x2="168.82439"
+ y2="-1156.1785" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9334-46"
+ id="linearGradient8598"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(8.86632, 0, 0, 8.1065, -2745.88, -11097.6)"
+ x1="345"
+ y1="1173"
+ x2="345"
+ y2="1178" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8655"
+ id="linearGradient8604"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(8.86632, 0, 0, 8.1065, -2745.88, -11107.7)"
+ x1="345"
+ y1="1173.9109"
+ x2="345"
+ y2="1178" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10292"
+ id="linearGradient8608"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(-8.86632, 0, 0, 8.1065, 3447.88, -11110.2)"
+ x1="345"
+ y1="1173"
+ x2="345"
+ y2="1178" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8627"
+ id="linearGradient8633"
+ x1="337.37491"
+ y1="-1311.3585"
+ x2="337.37491"
+ y2="-1304.4017"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(0, -263)" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8635"
+ id="linearGradient8641"
+ x1="349.55026"
+ y1="-1308.946"
+ x2="349.55026"
+ y2="-1302.7262"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(0, -263)" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8674"
+ id="linearGradient8680"
+ x1="346.69568"
+ y1="-1313.5192"
+ x2="361.36813"
+ y2="-1303.7965"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(0, -263)" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient13214"
+ id="linearGradient9085"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(2.53328, 0, 0, 2.53328, -398.851, 44.4122)"
+ x1="298.1875"
+ y1="-631.14911"
+ x2="298.1875"
+ y2="-634.26807" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8627-6"
+ id="linearGradient8633-1"
+ x1="337.37491"
+ y1="-1311.3585"
+ x2="337.37491"
+ y2="-1299.649"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(0, -263)" />
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient8627-6">
+ <stop
+ style="stop-color: rgb(102, 102, 102); stop-opacity: 1;"
+ offset="0"
+ id="stop8629-7" />
+ <stop
+ style="stop-color: rgb(102, 102, 102); stop-opacity: 0.5;"
+ offset="1"
+ id="stop8631-0" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8635-3"
+ id="linearGradient8641-8"
+ x1="349.55026"
+ y1="-1307.696"
+ x2="349.55026"
+ y2="-1301.2262"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(0, -263)" />
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient8635-3">
+ <stop
+ style="stop-color: rgb(128, 128, 128); stop-opacity: 1;"
+ offset="0"
+ id="stop8637-5" />
+ <stop
+ style="stop-color: rgb(102, 102, 102); stop-opacity: 1;"
+ offset="1"
+ id="stop8639-8" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9153"
+ id="linearGradient9159"
+ x1="337.375"
+ y1="-1293.6378"
+ x2="337.375"
+ y2="-1287.5115"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(0, -263)" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9334-5"
+ id="linearGradient9201"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.00399, 0, 0, 1.00959, -1.49914, -9.36636)"
+ x1="168.82439"
+ y1="-1409.7456"
+ x2="168.82439"
+ y2="-1156.1785" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9334-5"
+ id="linearGradient9203"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.00399, 0, 0, 1.00959, -1.49914, -9.36636)"
+ x1="168.82439"
+ y1="-1409.7456"
+ x2="168.82439"
+ y2="-1156.1785" />
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient8074-2">
+ <stop
+ style="stop-color: rgb(0, 0, 0); stop-opacity: 0;"
+ offset="0"
+ id="stop8076-1" />
+ <stop
+ id="stop8078-94"
+ offset="0.49305555"
+ style="stop-color: rgb(0, 0, 0); stop-opacity: 1;" />
+ <stop
+ style="stop-color: rgb(0, 0, 0); stop-opacity: 0;"
+ offset="1"
+ id="stop8080-0" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8074-2"
+ id="linearGradient7410"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.524068, 0, 0, 1, 318.409, -356)"
+ x1="-17"
+ y1="-1194.6378"
+ x2="144"
+ y2="-1194.6378" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8074-2"
+ id="linearGradient7414"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.524068, 0, 0, 1, 318.409, -405)"
+ x1="-17"
+ y1="-1194.6378"
+ x2="144"
+ y2="-1194.6378" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient13214"
+ id="linearGradient7725-8"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.00399, 0, 0, 1.00959, -1.49914, -9.36636)"
+ x1="168.82837"
+ y1="-1408.7965"
+ x2="168.82837"
+ y2="-1156.2104" />
+ <linearGradient
+ id="linearGradient16134-3-1-8">
+ <stop
+ style="stop-color: rgb(0, 0, 0); stop-opacity: 0.501961;"
+ offset="0"
+ id="stop16136-6-3-7" />
+ <stop
+ style="stop-color: rgb(0, 0, 0); stop-opacity: 0;"
+ offset="1"
+ id="stop16138-4-6-2" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient10462-7">
+ <stop
+ id="stop10464-0"
+ offset="0"
+ style="stop-color: rgb(128, 128, 128); stop-opacity: 0.502;" />
+ <stop
+ id="stop10466-1"
+ offset="1"
+ style="stop-color: rgb(0, 0, 0); stop-opacity: 0;" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient13785-8"
+ id="linearGradient10712-6"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(15.9995, 0, 0, 15.9955, -1038.94, -17312.2)"
+ x1="74.177872"
+ y1="992.75012"
+ x2="74.177872"
+ y2="1008.7546" />
+ <linearGradient
+ id="linearGradient13785-8"
+ inkscape:collect="always">
+ <stop
+ id="stop13787-2"
+ offset="0"
+ style="stop-color: rgb(163, 62, 3); stop-opacity: 1;" />
+ <stop
+ id="stop13789-9"
+ offset="1"
+ style="stop-color: rgb(98, 37, 2); stop-opacity: 1;" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10755"
+ id="linearGradient10761"
+ x1="445.69522"
+ y1="1103.5776"
+ x2="441.38797"
+ y2="1099.8198"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10125-2"
+ id="linearGradient11046-9"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.00399, 0, 0, 1.00959, -1.49914, -9.36636)"
+ x1="120.32183"
+ y1="-1409.7455"
+ x2="120.32183"
+ y2="-1156.1783" />
+ <linearGradient
+ id="linearGradient10125-2">
+ <stop
+ style="stop-color: rgb(201, 156, 0); stop-opacity: 1;"
+ offset="0"
+ id="stop10127-9" />
+ <stop
+ style="stop-color: rgb(135, 105, 0); stop-opacity: 1;"
+ offset="1"
+ id="stop10129-2" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient11513-4"
+ inkscape:collect="always">
+ <stop
+ id="stop11515-4"
+ offset="0"
+ style="stop-color: rgb(236, 187, 16); stop-opacity: 1;" />
+ <stop
+ id="stop11517-6"
+ offset="1"
+ style="stop-color: rgb(255, 210, 81); stop-opacity: 1;" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient14486-9"
+ id="linearGradient11993-4"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(15.9995, 0, 0, 15.9955, -279.247, -17311.2)"
+ x1="26.993208"
+ y1="992.62183"
+ x2="26.993208"
+ y2="1008.6921" />
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient14486-9">
+ <stop
+ style="stop-color: rgb(142, 3, 163); stop-opacity: 1;"
+ offset="0"
+ id="stop14488-1" />
+ <stop
+ style="stop-color: rgb(83, 2, 96); stop-opacity: 1;"
+ offset="1"
+ id="stop14490-5" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient7931-2"
+ inkscape:collect="always">
+ <stop
+ id="stop7933-1"
+ offset="0"
+ style="stop-color: rgb(0, 0, 0); stop-opacity: 1;" />
+ <stop
+ style="stop-color: rgb(0, 0, 0); stop-opacity: 0.360784;"
+ offset="0.45461464"
+ id="stop7968-3" />
+ <stop
+ id="stop7935-7"
+ offset="1"
+ style="stop-color: rgb(0, 0, 0); stop-opacity: 0;" />
+ </linearGradient>
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8548"
+ id="radialGradient8546"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(-3.31574, 0, 0, -7.58441, -3491.73, -6782.31)"
+ cx="-1535.3044"
+ cy="-842.90808"
+ fx="-1535.3044"
+ fy="-842.90808"
+ r="10" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8642"
+ id="linearGradient8648"
+ x1="387.49451"
+ y1="192.9848"
+ x2="405.17218"
+ y2="192.9848"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-123, -1753.64)" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient19846"
+ id="linearGradient8652"
+ x1="298"
+ y1="-1571.1794"
+ x2="298"
+ y2="-1497.5724"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8642-9"
+ id="linearGradient8648-3"
+ x1="516.04974"
+ y1="192.9848"
+ x2="495.66605"
+ y2="192.9848"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-123, -1753.64)" />
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient8642-9">
+ <stop
+ style="stop-color: rgb(0, 0, 97); stop-opacity: 1;"
+ offset="0"
+ id="stop8644-6" />
+ <stop
+ style="stop-color: rgb(0, 111, 134); stop-opacity: 0;"
+ offset="1"
+ id="stop8646-5" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient14494-2"
+ id="linearGradient16102"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1, 0, 0, 1.00001, 90, -1.9911)"
+ x1="1278"
+ y1="-1062.6379"
+ x2="1278"
+ y2="-1118.6379" />
+ <linearGradient
+ id="linearGradient8964-7">
+ <stop
+ id="stop8966-8"
+ offset="0"
+ style="stop-color: rgb(225, 150, 251); stop-opacity: 1;" />
+ <stop
+ style="stop-color: rgb(244, 199, 250); stop-opacity: 1;"
+ offset="0.13010512"
+ id="stop8968-0" />
+ <stop
+ style="stop-color: rgb(224, 145, 243); stop-opacity: 1;"
+ offset="0.31360075"
+ id="stop8970-8" />
+ <stop
+ id="stop8972-1"
+ offset="0.44078669"
+ style="stop-color: rgb(215, 100, 233); stop-opacity: 1;" />
+ <stop
+ style="stop-color: rgb(231, 173, 240); stop-opacity: 1;"
+ offset="0.68364757"
+ id="stop8974-3" />
+ <stop
+ style="stop-color: rgb(230, 169, 248); stop-opacity: 1;"
+ offset="0.75620717"
+ id="stop8976-9" />
+ <stop
+ style="stop-color: rgb(229, 149, 242); stop-opacity: 1;"
+ offset="0.88021636"
+ id="stop8978-5" />
+ <stop
+ id="stop8980-1"
+ offset="1"
+ style="stop-color: rgb(242, 203, 248); stop-opacity: 1;" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient16501"
+ id="linearGradient16320"
+ x1="1348.0002"
+ y1="663.48438"
+ x2="1398.0002"
+ y2="663.48438"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-63, -1754.14)" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8964-7"
+ id="linearGradient16324"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(-2, 0, 0, 2, 2107, -3234.14)"
+ x1="386.63177"
+ y1="1068.9539"
+ x2="410.49988"
+ y2="1068.9539" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8964-7-3"
+ id="linearGradient16324-9"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(-2, 0, 0, 2, 2107, -3234.14)"
+ x1="386.63177"
+ y1="1068.9539"
+ x2="410.49988"
+ y2="1068.9539" />
+ <linearGradient
+ id="linearGradient8964-7-3">
+ <stop
+ id="stop8966-8-7"
+ offset="0"
+ style="stop-color: rgb(225, 150, 251); stop-opacity: 1;" />
+ <stop
+ style="stop-color: rgb(244, 199, 250); stop-opacity: 1;"
+ offset="0.13010512"
+ id="stop8968-0-2" />
+ <stop
+ style="stop-color: rgb(224, 145, 243); stop-opacity: 1;"
+ offset="0.31360075"
+ id="stop8970-8-5" />
+ <stop
+ id="stop8972-1-7"
+ offset="0.44078669"
+ style="stop-color: rgb(215, 100, 233); stop-opacity: 1;" />
+ <stop
+ style="stop-color: rgb(231, 173, 240); stop-opacity: 1;"
+ offset="0.68364757"
+ id="stop8974-3-7" />
+ <stop
+ style="stop-color: rgb(230, 169, 248); stop-opacity: 1;"
+ offset="0.75620717"
+ id="stop8976-9-4" />
+ <stop
+ style="stop-color: rgb(229, 149, 242); stop-opacity: 1;"
+ offset="0.88021636"
+ id="stop8978-5-9" />
+ <stop
+ id="stop8980-1-7"
+ offset="1"
+ style="stop-color: rgb(242, 203, 248); stop-opacity: 1;" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8964-7-1"
+ id="linearGradient16324-4"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(-2, 0, 0, 2, 2107, -3234.14)"
+ x1="386.63177"
+ y1="1068.9539"
+ x2="410.49988"
+ y2="1068.9539" />
+ <linearGradient
+ id="linearGradient8964-7-1">
+ <stop
+ id="stop8966-8-2"
+ offset="0"
+ style="stop-color: rgb(225, 150, 251); stop-opacity: 1;" />
+ <stop
+ style="stop-color: rgb(244, 199, 250); stop-opacity: 1;"
+ offset="0.13010512"
+ id="stop8968-0-5" />
+ <stop
+ style="stop-color: rgb(224, 145, 243); stop-opacity: 1;"
+ offset="0.31360075"
+ id="stop8970-8-7" />
+ <stop
+ id="stop8972-1-1"
+ offset="0.44078669"
+ style="stop-color: rgb(215, 100, 233); stop-opacity: 1;" />
+ <stop
+ style="stop-color: rgb(231, 173, 240); stop-opacity: 1;"
+ offset="0.68364757"
+ id="stop8974-3-72" />
+ <stop
+ style="stop-color: rgb(230, 169, 248); stop-opacity: 1;"
+ offset="0.75620717"
+ id="stop8976-9-0" />
+ <stop
+ style="stop-color: rgb(229, 149, 242); stop-opacity: 1;"
+ offset="0.88021636"
+ id="stop8978-5-8" />
+ <stop
+ id="stop8980-1-0"
+ offset="1"
+ style="stop-color: rgb(242, 203, 248); stop-opacity: 1;" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8859"
+ id="linearGradient16427"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.495056, 0, 0, 0.495056, 631.288, -327.702)"
+ x1="1372.8844"
+ y1="-1544.3895"
+ x2="1372.8844"
+ y2="-1558.6382" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient14494"
+ id="radialGradient16441"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.959821, 0, 1.35768e-07, 0.268231, 21.681, 534.374)"
+ cx="518.85358"
+ cy="730.48431"
+ fx="518.85358"
+ fy="730.48431"
+ r="22.889726" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8984"
+ id="linearGradient16443"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.492241, 0, 0, 0.486264, 574.326, -1192.3)"
+ x1="1510.4767"
+ y1="169.00002"
+ x2="1485.8766"
+ y2="193.9996" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8742"
+ id="linearGradient16497"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(-0.5, 0, 0, 0.5, 2057, -1194.14)"
+ x1="1559.5"
+ y1="184"
+ x2="1542.0002"
+ y2="184" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8742"
+ id="linearGradient16499"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.5, 0, 0, 0.5, 563, -1194.14)"
+ x1="1559.5"
+ y1="184"
+ x2="1542.0002"
+ y2="184" />
+ <linearGradient
+ id="linearGradient11513-44"
+ inkscape:collect="always">
+ <stop
+ id="stop11515-9"
+ offset="0"
+ style="stop-color: rgb(215, 174, 30); stop-opacity: 1;" />
+ <stop
+ id="stop11517-3"
+ offset="1"
+ style="stop-color: rgb(255, 210, 81); stop-opacity: 1;" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient11612-3">
+ <stop
+ style="stop-color: rgb(237, 195, 62); stop-opacity: 1;"
+ offset="0"
+ id="stop11614-9" />
+ <stop
+ style="stop-color: rgb(250, 230, 165); stop-opacity: 1;"
+ offset="1"
+ id="stop11616-1" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9030"
+ id="linearGradient16929"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.454249, 0.0588292, -0.170959, 0.454466, 412.282, -468.767)"
+ x1="1354.5677"
+ y1="-1522.3585"
+ x2="1383.3801"
+ y2="-1543.9813" />
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient8074-2-2">
+ <stop
+ style="stop-color: rgb(0, 0, 0); stop-opacity: 0;"
+ offset="0"
+ id="stop8076-1-7" />
+ <stop
+ id="stop8078-94-5"
+ offset="0.49305555"
+ style="stop-color: rgb(0, 0, 0); stop-opacity: 1;" />
+ <stop
+ style="stop-color: rgb(0, 0, 0); stop-opacity: 0;"
+ offset="1"
+ id="stop8080-0-4" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient10623-9">
+ <stop
+ id="stop10625-6"
+ offset="0"
+ style="stop-color: rgb(255, 255, 255); stop-opacity: 0;" />
+ <stop
+ id="stop10627-5"
+ offset="1"
+ style="stop-color: rgb(255, 255, 255); stop-opacity: 0.862745;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient10617-0">
+ <stop
+ style="stop-color: rgb(120, 219, 103); stop-opacity: 1;"
+ offset="0"
+ id="stop10619-1" />
+ <stop
+ style="stop-color: rgb(204, 244, 198); stop-opacity: 1;"
+ offset="1"
+ id="stop10621-8" />
+ </linearGradient>
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8717"
+ id="radialGradient17920"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(2.03143e-06, 0.507639, -2.13868, 0, -304.007, -1152.58)"
+ cx="152.3331"
+ cy="-754.6377"
+ fx="152.3331"
+ fy="-754.6377"
+ r="15" />
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient13214-5">
+ <stop
+ style="stop-color: rgb(24, 163, 3); stop-opacity: 1;"
+ offset="0"
+ id="stop13216-2" />
+ <stop
+ style="stop-color: rgb(16, 104, 2); stop-opacity: 1;"
+ offset="1"
+ id="stop13218-7" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient15606-0">
+ <stop
+ style="stop-color: rgb(228, 228, 228); stop-opacity: 1;"
+ offset="0"
+ id="stop15608-4" />
+ <stop
+ style="stop-color: rgb(249, 249, 249); stop-opacity: 1;"
+ offset="1"
+ id="stop15610-4" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient8642-6">
+ <stop
+ style="stop-color: rgb(0, 0, 97); stop-opacity: 1;"
+ offset="0"
+ id="stop8644-2" />
+ <stop
+ style="stop-color: rgb(0, 111, 134); stop-opacity: 0;"
+ offset="1"
+ id="stop8646-4" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient19796"
+ id="linearGradient19761-6"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(9.81802, 0, 0, 8, -1867.87, 3054.46)"
+ x1="230"
+ y1="-581.63782"
+ x2="230"
+ y2="-577.57336" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8074-2"
+ id="linearGradient19804"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.192547, 0, 0, 1, 277.273, -408)"
+ x1="-17"
+ y1="-1194.6378"
+ x2="144"
+ y2="-1194.6378" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient19846-7"
+ id="linearGradient8652-8"
+ x1="298"
+ y1="-1587.6377"
+ x2="298"
+ y2="-1507.6377"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ id="linearGradient19846-7">
+ <stop
+ id="stop19848-1"
+ offset="0"
+ style="stop-color: rgb(37, 157, 210); stop-opacity: 1;" />
+ <stop
+ id="stop19850-7"
+ offset="1"
+ style="stop-color: rgb(2, 85, 131); stop-opacity: 1;" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8074-2"
+ id="linearGradient20129"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.298137, 0, 0, 1, -1593.57, 881.638)"
+ x1="-17"
+ y1="-1194.6378"
+ x2="144"
+ y2="-1194.6378" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8074-2"
+ id="linearGradient20133"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.298137, 0, 0, 1, -1593.57, 804.638)"
+ x1="-17"
+ y1="-1194.6378"
+ x2="144"
+ y2="-1194.6378" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8074-2"
+ id="linearGradient20141"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.298137, 0, 0, 1, -1593.57, 884.638)"
+ x1="-17"
+ y1="-1194.6378"
+ x2="144"
+ y2="-1194.6378" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8074-2"
+ id="linearGradient20145"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.524068, 0, 0, 1, 318.409, -353)"
+ x1="-17"
+ y1="-1194.6378"
+ x2="144"
+ y2="-1194.6378" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8074-2"
+ id="linearGradient20149"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.298137, 0, 0, 1, -1593.57, 801.638)"
+ x1="-17"
+ y1="-1194.6378"
+ x2="144"
+ y2="-1194.6378" />
+ <linearGradient
+ id="linearGradient19846-7-8">
+ <stop
+ id="stop19848-1-1"
+ offset="0"
+ style="stop-color: rgb(37, 157, 210); stop-opacity: 1;" />
+ <stop
+ id="stop19850-7-6"
+ offset="1"
+ style="stop-color: rgb(2, 85, 131); stop-opacity: 1;" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8074"
+ id="linearGradient20895"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.370572, 0.370572, -0.707107, 0.707107, -850.729, -344.471)"
+ x1="78.821571"
+ y1="-1194.6378"
+ x2="144"
+ y2="-1194.6378" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8074"
+ id="linearGradient20897"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.370572, 0.370572, -0.707107, 0.707107, -850.729, -327.471)"
+ x1="30.743851"
+ y1="-1194.6378"
+ x2="144"
+ y2="-1194.6378" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8074"
+ id="linearGradient20899"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.677019, 0, 0, 0.999984, -1146.13, 1239.62)"
+ x1="-17"
+ y1="-1194.6378"
+ x2="144"
+ y2="-1194.6378" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient7931"
+ id="linearGradient20903"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.390244, 0, 0, 0.390244, -19.3171, -584.218)"
+ x1="152"
+ y1="-1192.6378"
+ x2="113.88176"
+ y2="-1230.7561" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8074-2"
+ id="linearGradient20909"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.370572, 0.370572, -0.707107, 0.707107, -852.729, -322.471)"
+ x1="30.743851"
+ y1="-1194.6378"
+ x2="144"
+ y2="-1194.6378" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8074"
+ id="linearGradient20911"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.521722, 0, 0, 1, -32.1306, 146)"
+ x1="-17"
+ y1="-1194.6378"
+ x2="144"
+ y2="-1194.6378" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient19846"
+ id="linearGradient8776"
+ gradientUnits="userSpaceOnUse"
+ x1="298"
+ y1="-1571.1794"
+ x2="298"
+ y2="-1497.5724" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient19846"
+ id="linearGradient8778"
+ gradientUnits="userSpaceOnUse"
+ x1="298"
+ y1="-1571.1794"
+ x2="298"
+ y2="-1497.5724" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient19846"
+ id="linearGradient8780"
+ gradientUnits="userSpaceOnUse"
+ x1="298"
+ y1="-1571.1794"
+ x2="298"
+ y2="-1497.5724" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient19846"
+ id="linearGradient8782"
+ gradientUnits="userSpaceOnUse"
+ x1="298"
+ y1="-1571.1794"
+ x2="298"
+ y2="-1497.5724" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient19846"
+ id="linearGradient8784"
+ gradientUnits="userSpaceOnUse"
+ x1="298"
+ y1="-1571.1794"
+ x2="298"
+ y2="-1497.5724" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient19846"
+ id="linearGradient8786"
+ gradientUnits="userSpaceOnUse"
+ x1="298"
+ y1="-1571.1794"
+ x2="298"
+ y2="-1497.5724" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient19846"
+ id="linearGradient8788"
+ gradientUnits="userSpaceOnUse"
+ x1="298"
+ y1="-1571.1794"
+ x2="298"
+ y2="-1497.5724" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient19846"
+ id="linearGradient8790"
+ gradientUnits="userSpaceOnUse"
+ x1="298"
+ y1="-1571.1794"
+ x2="298"
+ y2="-1497.5724" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient19846"
+ id="linearGradient8792"
+ gradientUnits="userSpaceOnUse"
+ x1="298"
+ y1="-1571.1794"
+ x2="298"
+ y2="-1497.5724" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient19846"
+ id="linearGradient8794"
+ gradientUnits="userSpaceOnUse"
+ x1="298"
+ y1="-1571.1794"
+ x2="298"
+ y2="-1497.5724" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient19846"
+ id="linearGradient8796"
+ gradientUnits="userSpaceOnUse"
+ x1="298"
+ y1="-1571.1794"
+ x2="298"
+ y2="-1497.5724" />
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient9860-2">
+ <stop
+ style="stop-color: rgb(102, 102, 102); stop-opacity: 1;"
+ offset="0"
+ id="stop9862-6" />
+ <stop
+ style="stop-color: rgb(128, 128, 128); stop-opacity: 1;"
+ offset="1"
+ id="stop9864-1" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10412"
+ id="linearGradient10418"
+ x1="3669.4517"
+ y1="-1068.8184"
+ x2="3669.4517"
+ y2="-1073.573"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient7303-9">
+ <stop
+ style="stop-color: rgb(0, 0, 0); stop-opacity: 1;"
+ offset="0"
+ id="stop7305-0" />
+ <stop
+ style="stop-color: rgb(0, 0, 0); stop-opacity: 0;"
+ offset="1"
+ id="stop7307-6" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10719"
+ id="linearGradient10634"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.820513, 0, 0, 0.25, 2991.26, -690.728)"
+ x1="815.12506"
+ y1="-1491.6379"
+ x2="815.12506"
+ y2="-1543.6378" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10713"
+ id="linearGradient10638"
+ gradientUnits="userSpaceOnUse"
+ x1="3793.25"
+ y1="-1603.6466"
+ x2="3793.25"
+ y2="-1561.3872"
+ gradientTransform="matrix(0.500001, 0, 0, 0.488096, 1804, -336.397)" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10725"
+ id="linearGradient10642"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.9375, 0, 0, 0.904762, 229.312, -104.537)"
+ x1="3658.22"
+ y1="-1076.6246"
+ x2="3658.22"
+ y2="-1117.8441" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10303"
+ id="linearGradient10647"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.500001, 0, 0, 0.500001, 1804, -318.318)"
+ x1="3682"
+ y1="-1515.0027"
+ x2="3682"
+ y2="-1494.8434" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10295"
+ id="linearGradient10671"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.360248, 0, 0, 0.999984, 3646.12, 113.981)"
+ x1="-17"
+ y1="-1194.6378"
+ x2="144"
+ y2="-1194.6378" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10910"
+ id="linearGradient10908"
+ gradientUnits="userSpaceOnUse"
+ x1="3689.6035"
+ y1="-1095.2457"
+ x2="3689.6035"
+ y2="-1084.9019"
+ gradientTransform="matrix(1.00041, 0, 0, 0.956522, -3.10466, -55.6364)" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10949"
+ id="linearGradient10908-8"
+ gradientUnits="userSpaceOnUse"
+ x1="3609.488"
+ y1="796.23029"
+ x2="3609.488"
+ y2="799.70251"
+ gradientTransform="matrix(1.00041, 0, 0, 0.956522, 104.895, -68.6364)" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8074-2"
+ id="linearGradient10971"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.375899, 0, 0, 0.999984, -3692.37, 2272.26)"
+ x1="-17"
+ y1="-1194.6378"
+ x2="144"
+ y2="-1194.6378" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8074-2"
+ id="linearGradient10975"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.372671, 0, 0, 0.999984, -3692.66, 2259.26)"
+ x1="-17"
+ y1="-1194.6378"
+ x2="144"
+ y2="-1194.6378" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10292"
+ id="linearGradient11068"
+ gradientUnits="userSpaceOnUse"
+ x1="3670.0999"
+ y1="-1159.6455"
+ x2="3670.0999"
+ y2="-1032.3724" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10292"
+ id="linearGradient11076"
+ gradientUnits="userSpaceOnUse"
+ x1="3716.1616"
+ y1="683.97705"
+ x2="3716.1616"
+ y2="705.13123" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10949"
+ id="linearGradient11167"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.00041, 0, 0, 0.956522, 104.895, -68.6364)"
+ x1="3609.488"
+ y1="796.23029"
+ x2="3609.488"
+ y2="799.70251" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient7931-2"
+ id="linearGradient11259"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.097561, 0, 0, 0.097561, 3683.17, -950.283)"
+ x1="152"
+ y1="-1192.6378"
+ x2="113.88176"
+ y2="-1230.7561" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8074-2"
+ id="linearGradient11263"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.335404, 0, 0, 0.999984, -1112.44, -2443.38)"
+ x1="-17"
+ y1="-1194.6378"
+ x2="144"
+ y2="-1194.6378" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10341"
+ id="linearGradient11267"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.236025, 0, 0, 0.999984, -1112.63, -2446.38)"
+ x1="-17"
+ y1="-1194.6378"
+ x2="144"
+ y2="-1194.6378" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8074"
+ id="linearGradient11309"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.677019, 0, 0, 0.999984, -1146.13, 1235.62)"
+ x1="-17"
+ y1="-1194.6378"
+ x2="144"
+ y2="-1194.6378" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8074"
+ id="linearGradient11311"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.40062, 0, 0, 0.999984, -1106.33, 1150.62)"
+ x1="-17"
+ y1="-1194.6378"
+ x2="144"
+ y2="-1194.6378" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8074"
+ id="linearGradient11313"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.40062, 0, 0, 0.999984, -1106.33, 1146.62)"
+ x1="-17"
+ y1="-1194.6378"
+ x2="144"
+ y2="-1194.6378" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10292"
+ id="linearGradient11347"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1, 0, 0, 1.00011, 0, -0.10551)"
+ x1="121.30617"
+ y1="976.37823"
+ x2="121.30617"
+ y2="992.4245" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10292"
+ id="linearGradient11349"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.00399, 0, 0, 1.00959, -1.49914, -9.36636)"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.96875"
+ y2="992.375" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10292"
+ id="linearGradient11351"
+ gradientUnits="userSpaceOnUse"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.96875"
+ y2="992.375" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10292"
+ id="linearGradient11369"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1, 0, 0, 1.00011, 0, -0.10551)"
+ x1="121.30617"
+ y1="976.37823"
+ x2="121.30617"
+ y2="992.4245" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10292"
+ id="linearGradient11371"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.00399, 0, 0, 1.00959, -1.49914, -9.36636)"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.96875"
+ y2="992.375" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10292"
+ id="linearGradient11373"
+ gradientUnits="userSpaceOnUse"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.96875"
+ y2="992.375" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10292"
+ id="linearGradient11767"
+ gradientUnits="userSpaceOnUse"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.96875"
+ y2="992.375" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10292"
+ id="linearGradient11783"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(8.00059, 0, 0, 7.9986, 2729.94, -8976.25)"
+ x1="121.30617"
+ y1="976.37823"
+ x2="121.30617"
+ y2="992.4245" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10292"
+ id="linearGradient11785"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(8.03255, 0, 0, 8.07448, 2717.94, -9050.31)"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.96875"
+ y2="992.375" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10292"
+ id="linearGradient11874"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(8.00059, 0, 0, 7.9986, 2729.94, -8976.25)"
+ x1="121.30617"
+ y1="976.37823"
+ x2="121.30617"
+ y2="992.4245" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10292"
+ id="linearGradient11876"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(8.03255, 0, 0, 8.07448, 2717.94, -9050.31)"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.96875"
+ y2="992.375" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10292"
+ id="linearGradient12030"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(8.00059, 0, 0, 7.9986, 2729.94, -8976.25)"
+ x1="121.30617"
+ y1="976.37823"
+ x2="121.30617"
+ y2="992.4245" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10292"
+ id="linearGradient12032"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(8.03255, 0, 0, 8.07448, 2717.94, -9050.31)"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.96875"
+ y2="992.375" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10292"
+ id="linearGradient12135"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(8.00059, 0, 0, 7.9986, 2729.94, -8976.25)"
+ x1="121.30617"
+ y1="976.37823"
+ x2="121.30617"
+ y2="992.4245" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10292"
+ id="linearGradient12137"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(8.03255, 0, 0, 8.07448, 2717.94, -9050.31)"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.96875"
+ y2="992.375" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10292"
+ id="linearGradient12168"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(8.00059, 0, 0, 7.9986, 2729.94, -8976.25)"
+ x1="121.30617"
+ y1="976.37823"
+ x2="121.30617"
+ y2="992.4245" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10292"
+ id="linearGradient12170"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(8.03255, 0, 0, 8.07448, 2717.94, -9050.31)"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.96875"
+ y2="992.375" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8074"
+ id="linearGradient13345"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.677019, 0, 0, 0.999984, -1146.13, -597.381)"
+ x1="-17"
+ y1="-1194.6378"
+ x2="144"
+ y2="-1194.6378" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8074"
+ id="linearGradient13347"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.370572, 0.370572, -0.707107, 0.707107, 986.27, -344.471)"
+ x1="78.821571"
+ y1="-1194.6378"
+ x2="144"
+ y2="-1194.6378" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8074"
+ id="linearGradient13349"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.370572, 0.370572, -0.707107, 0.707107, 986.27, -327.471)"
+ x1="30.743851"
+ y1="-1194.6378"
+ x2="144"
+ y2="-1194.6378" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8074"
+ id="linearGradient13351"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.341615, 0, 0, 0.999984, -1859.19, 2238.26)"
+ x1="-17"
+ y1="-1194.6378"
+ x2="144"
+ y2="-1194.6378" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient7931"
+ id="linearGradient13355"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.390244, 0, 0, 0.390244, 1819.68, -584.218)"
+ x1="152"
+ y1="-1192.6378"
+ x2="113.88176"
+ y2="-1230.7561" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8074-2"
+ id="linearGradient13357"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.370572, 0.370572, -0.707107, 0.707107, 984.27, -322.471)"
+ x1="30.743851"
+ y1="-1194.6378"
+ x2="144"
+ y2="-1194.6378" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8074"
+ id="linearGradient13359"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.521722, 0, 0, 1, 1804.87, 146)"
+ x1="-17"
+ y1="-1194.6378"
+ x2="144"
+ y2="-1194.6378" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8074"
+ id="linearGradient14126"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.40062, 0, 0, 0.999984, -1106.33, -686.381)"
+ x1="-17"
+ y1="-1194.6378"
+ x2="144"
+ y2="-1194.6378" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8642-6"
+ id="linearGradient14853"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.5, 0, 0, 0.5, 1158, -2948.28)"
+ x1="762.75"
+ y1="3695.7761"
+ x2="791"
+ y2="3695.7761" />
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient8074-2-24">
+ <stop
+ style="stop-color: rgb(0, 0, 0); stop-opacity: 0;"
+ offset="0"
+ id="stop8076-1-3" />
+ <stop
+ id="stop8078-94-3"
+ offset="0.49305555"
+ style="stop-color: rgb(0, 0, 0); stop-opacity: 1;" />
+ <stop
+ style="stop-color: rgb(0, 0, 0); stop-opacity: 0;"
+ offset="1"
+ id="stop8080-0-5" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient15205"
+ id="linearGradient15166-1"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.5, 0, 0, 0.5, 1416.5, -317.818)"
+ x1="298"
+ y1="-1571.1935"
+ x2="298"
+ y2="-1497.5724" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8642-6"
+ id="linearGradient15203"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(-0.5, 0, 0, 0.5, 1984, -2948.28)"
+ x1="762.75"
+ y1="3695.7761"
+ x2="791"
+ y2="3695.7761" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8074-2-24"
+ id="linearGradient15222"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.397516, 0, 0, 1, 1422.76, -1687.64)"
+ x1="292.55887"
+ y1="571.22461"
+ x2="453.42178"
+ y2="571.22461" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient15310"
+ id="radialGradient15233"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.978638, 0.697642, -0.77137, 1.08205, 542.961, -883.643)"
+ cx="1181.0177"
+ cy="672.73138"
+ fx="1181.0177"
+ fy="672.73138"
+ r="16.5" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient15263"
+ id="linearGradient15269"
+ x1="1184.6832"
+ y1="685.5484"
+ x2="1184.6832"
+ y2="662.02148"
+ gradientUnits="userSpaceOnUse" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient15316"
+ id="radialGradient15322"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(-3.95791e-06, 0.962583, -1.02418, -4.35308e-06, 3857.69, -2401.15)"
+ cx="3180.9375"
+ cy="660.76562"
+ fx="3180.9375"
+ fy="660.76562"
+ r="1.5" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient15316"
+ id="radialGradient15332"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(-3.95791e-06, 0.962583, -1.02418, -4.35308e-06, 3857.69, -2401.15)"
+ cx="3180.9375"
+ cy="660.76562"
+ fx="3180.9375"
+ fy="660.76562"
+ r="1.5" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient15316"
+ id="radialGradient15384"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(-3.95791e-06, 0.962583, -1.02418, -4.35308e-06, 3857.69, -2401.15)"
+ cx="3180.9375"
+ cy="660.76562"
+ fx="3180.9375"
+ fy="660.76562"
+ r="1.5" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient15316"
+ id="radialGradient15388"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(-3.95791e-06, 0.962583, -1.02418, -4.35308e-06, 3857.69, -2401.15)"
+ cx="3180.9375"
+ cy="660.76562"
+ fx="3180.9375"
+ fy="660.76562"
+ r="1.5" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient15316"
+ id="radialGradient15392"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(-3.95791e-06, 0.962583, -1.02418, -4.35308e-06, 3857.69, -2401.15)"
+ cx="3180.9375"
+ cy="660.76562"
+ fx="3180.9375"
+ fy="660.76562"
+ r="1.5" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9364"
+ id="linearGradient8339"
+ gradientUnits="userSpaceOnUse"
+ x1="3065.4424"
+ y1="-1071.2629"
+ x2="3051.4128"
+ y2="-1082.9504" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9364"
+ id="linearGradient8364"
+ gradientUnits="userSpaceOnUse"
+ x1="3054.2241"
+ y1="-1072.6486"
+ x2="3059.6841"
+ y2="-1099.3986" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9364"
+ id="linearGradient8366"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.14289, 0.0903025, -0.123907, 0.996556, -574.642, -278.417)"
+ x1="3075.2966"
+ y1="-1093.031"
+ x2="3049.6565"
+ y2="-1085.656" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9364"
+ id="linearGradient8368"
+ gradientUnits="userSpaceOnUse"
+ x1="3075.0718"
+ y1="-1074.9625"
+ x2="3066.395"
+ y2="-1098.3375" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9364"
+ id="linearGradient8370"
+ gradientUnits="userSpaceOnUse"
+ x1="3067.7839"
+ y1="-1071.481"
+ x2="3057.1631"
+ y2="-1096.1685" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9364"
+ id="linearGradient8372"
+ gradientUnits="userSpaceOnUse"
+ x1="3069.7163"
+ y1="-1071.3759"
+ x2="3059.8894"
+ y2="-1092.9384" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9364"
+ id="linearGradient8374"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.970083, 0.242775, -0.242775, 0.970083, -167.008, -775.513)"
+ x1="3070.9216"
+ y1="-1072.243"
+ x2="3058.1338"
+ y2="-1095.993" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9364"
+ id="linearGradient8376"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.959184, -0.282783, 0.282783, 0.959184, 429.14, 820.107)"
+ x1="3070.9216"
+ y1="-1072.243"
+ x2="3058.1338"
+ y2="-1095.993" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient16889"
+ id="linearGradient8905"
+ gradientUnits="userSpaceOnUse"
+ x1="1180.158"
+ y1="688.52631"
+ x2="1180.158"
+ y2="658.13159" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient11332"
+ id="linearGradient8907"
+ gradientUnits="userSpaceOnUse"
+ x1="1179.2571"
+ y1="678.05798"
+ x2="1195.1416"
+ y2="662.17346" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9658"
+ id="linearGradient8909"
+ gradientUnits="userSpaceOnUse"
+ x1="1183.4689"
+ y1="671.48962"
+ x2="1168"
+ y2="686.9585" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9652"
+ id="radialGradient8911"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.55542, -1.86711e-05, 1.93096e-05, 1.61065, 5211.96, 2375.68)"
+ cx="-2578.6877"
+ cy="-1363.4087"
+ fx="-2578.6877"
+ fy="-1363.4087"
+ r="10" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient11458"
+ id="linearGradient8913"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1, 0, 0, 1.01538, 32.4999, 1584.4)"
+ x1="1079.5464"
+ y1="-2650.2756"
+ x2="1079.5464"
+ y2="-2617.5344" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient11513-44"
+ id="linearGradient8915"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.46875, 0, 0, 0.46875, 560.094, -229.372)"
+ x1="1109"
+ y1="2781.8621"
+ x2="1109"
+ y2="2845.9736" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient11503"
+ id="linearGradient8917"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.466667, 0, 0, 0.466667, 562.333, -368.795)"
+ x1="1105"
+ y1="-1574.6378"
+ x2="1069.2191"
+ y2="-1512.6636" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient11590"
+ id="linearGradient8919"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.08333, 0, 0, 2.33333, -1651.08, 2584.53)"
+ x1="529.25"
+ y1="-1568.6378"
+ x2="535"
+ y2="-1574.6378" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9575"
+ id="linearGradient8921"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.08333, 0, 0, 2.33333, 476.917, 2584.53)"
+ x1="529.25"
+ y1="-1568.6378"
+ x2="535"
+ y2="-1574.6378" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient16813"
+ id="linearGradient8923"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.4888, 0, 0, 0.493506, 505.765, -327.749)"
+ x1="1065.75"
+ y1="-1561.3922"
+ x2="1065.75"
+ y2="-1495.6378" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient16838"
+ id="linearGradient8925"
+ gradientUnits="userSpaceOnUse"
+ x1="1162.5912"
+ y1="900.18634"
+ x2="1162.5912"
+ y2="887.43439" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient11612-3"
+ id="linearGradient8927"
+ gradientUnits="userSpaceOnUse"
+ x1="1162.175"
+ y1="900.71698"
+ x2="1162.175"
+ y2="887.07147" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient11704"
+ id="linearGradient8929"
+ gradientUnits="userSpaceOnUse"
+ x1="1155.0051"
+ y1="899.98523"
+ x2="1165.5482"
+ y2="893.3504" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient11704"
+ id="linearGradient8931"
+ gradientUnits="userSpaceOnUse"
+ x1="1155.0051"
+ y1="899.98523"
+ x2="1165.5482"
+ y2="893.3504" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10138"
+ id="radialGradient8933"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(-1.34702, 0, 0, -1.3, -3134.61, -2150.9)"
+ cx="-1535.4552"
+ cy="-853"
+ fx="-1535.4552"
+ fy="-853"
+ r="10" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8903"
+ id="linearGradient8935"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.25, 0, 0, 0.25, 888.75, -672.478)"
+ x1="529.25"
+ y1="-1568.6378"
+ x2="535.43829"
+ y2="-1574.826" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient11804"
+ id="linearGradient8939"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.192547, 0, 0, 0.999984, 1029.27, 125.981)"
+ x1="-17"
+ y1="-1194.6378"
+ x2="144"
+ y2="-1194.6378" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient11704"
+ id="linearGradient8941"
+ gradientUnits="userSpaceOnUse"
+ x1="1162"
+ y1="889.0058"
+ x2="1162"
+ y2="900.71698" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient11513-4"
+ id="linearGradient8945"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.756674, -0.173227, -0.159433, 0.598894, -37.1777, 27.5931)"
+ x1="1171.25"
+ y1="-1513.3878"
+ x2="1171.25"
+ y2="-1575.6378" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient11804"
+ id="linearGradient8947"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.0869567, 0, 0, 0.5, 1058.48, -477.806)"
+ x1="-17"
+ y1="-1194.6378"
+ x2="144"
+ y2="-1194.6378" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9563"
+ id="radialGradient8949"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(-1.55425, 0, 0, -2.26238, -1281.47, -2990.69)"
+ cx="-1535.2125"
+ cy="-848.91748"
+ fx="-1535.2125"
+ fy="-848.91748"
+ r="10" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient16134-3-1-8"
+ id="radialGradient8951"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(3.89664e-07, 0.0828876, -0.410236, 0, 467.31, -1076.51)"
+ cx="152.3331"
+ cy="-754.6377"
+ fx="152.3331"
+ fy="-754.6377"
+ r="15" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient16134-3-1-8"
+ id="radialGradient8953"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(3.89664e-07, 0.0828876, -0.410236, 0, 489.408, -1076.51)"
+ cx="152.3331"
+ cy="-754.6377"
+ fx="152.3331"
+ fy="-754.6377"
+ r="15" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10462-7"
+ id="radialGradient8955"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.90156e-06, 0.13262, -2.00195, 0, -722.871, -1085.32)"
+ cx="152.3331"
+ cy="-754.6377"
+ fx="152.3331"
+ fy="-754.6377"
+ r="15" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10423"
+ id="linearGradient8957"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.5, 0, 0, 0.499998, 363, -317.322)"
+ x1="850.25"
+ y1="-1508.6377"
+ x2="850.25"
+ y2="-1510.5831" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10436"
+ id="linearGradient8959"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.5, 0, 0, 0.499998, 363, -317.322)"
+ x1="850.25"
+ y1="-1508.6377"
+ x2="850.25"
+ y2="-1510.5831" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10442"
+ id="linearGradient8961"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.5, 0, 0, 0.499998, 363, -317.322)"
+ x1="850.25"
+ y1="-1508.6377"
+ x2="850.25"
+ y2="-1510.5831" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient13791"
+ id="linearGradient8963"
+ gradientUnits="userSpaceOnUse"
+ x1="809.625"
+ y1="-1074.7628"
+ x2="809.625"
+ y2="-1116.7638" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10138"
+ id="radialGradient8965"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(-1.62419, 0, 0, -1.57137, -3568.11, -2128.09)"
+ cx="-1535.4552"
+ cy="-853"
+ fx="-1535.4552"
+ fy="-853"
+ r="10" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9935"
+ id="linearGradient8967"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1, 0, 0, 1.05, 0, 54.7819)"
+ x1="812"
+ y1="-1075.6378"
+ x2="812"
+ y2="-1115.6378" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10150"
+ id="linearGradient8969"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.833333, 0, 0, 3.33333, 318.167, 4153.16)"
+ x1="529.25"
+ y1="-1568.6378"
+ x2="535"
+ y2="-1574.6378" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10150"
+ id="linearGradient8971"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.833333, 0, 0, 3.33333, -1257.83, 4153.16)"
+ x1="529.25"
+ y1="-1568.6378"
+ x2="535"
+ y2="-1574.6378" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient17453"
+ id="linearGradient8973"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(0, 262)"
+ x1="782.62622"
+ y1="-1359.5416"
+ x2="782.62622"
+ y2="-1341.5416" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient17459"
+ id="linearGradient8975"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(0, 262)"
+ x1="782.62622"
+ y1="-1359.5416"
+ x2="782.62622"
+ y2="-1341.5416" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient17465"
+ id="linearGradient8977"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(0, 262)"
+ x1="782.62622"
+ y1="-1359.5416"
+ x2="782.62622"
+ y2="-1341.5416" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient17345"
+ id="linearGradient8979"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.491054, 0, 0, 0.489842, 266.032, -331.951)"
+ x1="1008.9972"
+ y1="-1589.1378"
+ x2="1116.851"
+ y2="-1589.1378" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient17734"
+ id="linearGradient8981"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.491054, 0, 0, 0.489842, 266.032, -331.951)"
+ x1="1078.9924"
+ y1="-1561.0895"
+ x2="1078.9924"
+ y2="-1526.3844" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10623-9"
+ id="linearGradient8983"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.579192, 0, 0, 0.734763, 271.358, -298.73)"
+ x1="714"
+ y1="-1063.6378"
+ x2="714"
+ y2="-1079.1599" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient13214"
+ id="linearGradient8985"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-86, -38.9999)"
+ x1="889"
+ y1="-1054.6378"
+ x2="879"
+ y2="-1042.6378" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10617-0"
+ id="linearGradient8988"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.982107, 0, 0, 0.979684, -174.934, -59.2859)"
+ x1="984.29602"
+ y1="-1045.339"
+ x2="990.65985"
+ y2="-1051.7185" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient17355"
+ id="linearGradient8991"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.491054, 0, 0, 0.489842, 266.032, -331.951)"
+ x1="1031.3417"
+ y1="-1575.7028"
+ x2="1095.0468"
+ y2="-1575.7028" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient11600"
+ id="linearGradient8993"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.248447, 0, 0, 0.999984, -1112.15, 377.619)"
+ x1="-17"
+ y1="-1194.6378"
+ x2="144"
+ y2="-1194.6378" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient11600"
+ id="linearGradient8995"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.248447, 0, 0, 0.999984, -1112.15, 434.619)"
+ x1="-17"
+ y1="-1194.6378"
+ x2="144"
+ y2="-1194.6378" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8074-2-2"
+ id="linearGradient8997"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.317202, 0, 0, 0.489842, 663.285, -525.928)"
+ x1="343.81552"
+ y1="-1183.92"
+ x2="443.49335"
+ y2="-1183.92" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8074-2-2"
+ id="linearGradient8999"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.515454, 0, 0, 0.489842, 585.338, -532.928)"
+ x1="343.81552"
+ y1="-1183.92"
+ x2="443.49335"
+ y2="-1183.92" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8074-2"
+ id="linearGradient9001"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.0931679, 0, 0, 1, 770.584, 97)"
+ x1="-17"
+ y1="-1194.6378"
+ x2="144"
+ y2="-1194.6378" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8074-2"
+ id="linearGradient9003"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.0931679, 0, 0, 1, 770.584, 104)"
+ x1="-17"
+ y1="-1194.6378"
+ x2="144"
+ y2="-1194.6378" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8074-2"
+ id="linearGradient9005"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.0931679, 0, 0, 1, 770.584, 111)"
+ x1="-17"
+ y1="-1194.6378"
+ x2="144"
+ y2="-1194.6378" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8074-2"
+ id="linearGradient9007"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.136646, 0, 0, 1, 792.323, 113)"
+ x1="-17"
+ y1="-1194.6378"
+ x2="144"
+ y2="-1194.6378" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8074-2"
+ id="linearGradient9009"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.136646, 0, 0, 1, 792.323, 98)"
+ x1="-17"
+ y1="-1194.6378"
+ x2="144"
+ y2="-1194.6378" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9014"
+ id="linearGradient9011"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.140493, 0, 0, 0.999984, 792.079, 111.981)"
+ x1="-17"
+ y1="-1194.6378"
+ x2="144"
+ y2="-1194.6378" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8074-2-2"
+ id="linearGradient9013"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.594754, 0, 0, 0.48982, 554.16, 1653.32)"
+ x1="343.81552"
+ y1="-1183.92"
+ x2="443.49335"
+ y2="-1183.92" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8074-2"
+ id="linearGradient9015"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.378882, 0, 0, 0.999984, 501.441, 127.981)"
+ x1="-17"
+ y1="-1194.6378"
+ x2="144"
+ y2="-1194.6378" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient13214-5"
+ id="linearGradient9017"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-229, -1753.64)"
+ x1="733.53375"
+ y1="635.00012"
+ x2="733.53375"
+ y2="687.00012" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient18932"
+ id="linearGradient9079"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.5, 0, 0, 0.5, 126.5, -316.819)"
+ x1="815.12506"
+ y1="-1491.6379"
+ x2="815.12506"
+ y2="-1543.6378" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient15606-0"
+ id="linearGradient9081"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.948718, 0, 0, 1.3, -262.385, 319.091)"
+ x1="829.36053"
+ y1="-1064.7994"
+ x2="829.36053"
+ y2="-1082.3413" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient7931-2"
+ id="linearGradient9083"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.268293, 0, 0, 0.268293, 515.219, -745.662)"
+ x1="152"
+ y1="-1192.6378"
+ x2="113.88176"
+ y2="-1230.7561" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8074-2"
+ id="linearGradient9086"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.192547, 0, 0, 0.999984, 527.273, 117.981)"
+ x1="-17"
+ y1="-1194.6378"
+ x2="144"
+ y2="-1194.6378" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient16134-3-1"
+ id="radialGradient9088"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0, 0.111737, -1.16375, -2.7053e-05, -338.754, -1083.18)"
+ cx="152.3331"
+ cy="-754.6377"
+ fx="152.3331"
+ fy="-754.6377"
+ r="15" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8074-2"
+ id="linearGradient9091"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.192547, 0, 0, 0.999984, 527.273, 122.981)"
+ x1="-17"
+ y1="-1194.6378"
+ x2="144"
+ y2="-1194.6378" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8074-2"
+ id="linearGradient9093"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.192547, 0, 0, 0.999984, 527.273, 112.981)"
+ x1="-17"
+ y1="-1194.6378"
+ x2="144"
+ y2="-1194.6378" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9364"
+ id="linearGradient9095"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.714286, 0, 0, 1.55555, 151.071, 2743.74)"
+ x1="525.63947"
+ y1="-1078.6444"
+ x2="525.63947"
+ y2="-1068.7872" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8074-2"
+ id="linearGradient9097"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.192547, 0, 0, 0.999984, 527.273, 107.981)"
+ x1="-17"
+ y1="-1194.6378"
+ x2="144"
+ y2="-1194.6378" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient18786"
+ id="linearGradient9099"
+ gradientUnits="userSpaceOnUse"
+ x1="538.65625"
+ y1="-1077.6066"
+ x2="538.65625"
+ y2="-1086.6378" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6989"
+ id="linearGradient9101"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.714286, 0, 0, 2.11111, 159.071, 3342.7)"
+ x1="525.63947"
+ y1="-1078.6444"
+ x2="525.63947"
+ y2="-1068.7872" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6975"
+ id="linearGradient9104"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.714286, 0, 0, 0.888884, 167.071, 2024.98)"
+ x1="525.63947"
+ y1="-1078.6444"
+ x2="525.63947"
+ y2="-1068.7872" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient13220"
+ id="linearGradient9106"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.714286, 0, 0, 1.33333, 175.071, 2504.15)"
+ x1="525.63947"
+ y1="-1078.6444"
+ x2="525.63947"
+ y2="-1068.7872" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9014"
+ id="linearGradient9108"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.217391, 0, 0, 0.999984, 525.696, 128.981)"
+ x1="-17"
+ y1="-1194.6378"
+ x2="144"
+ y2="-1194.6378" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9109"
+ id="linearGradient9110"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.25, 0, 0, 1.41667, 401.75, 1154.6)"
+ x1="529.25"
+ y1="-1568.6378"
+ x2="535"
+ y2="-1574.6378" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9014"
+ id="linearGradient9112"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.0310559, 0, 0, 0.999984, 533.528, 108.981)"
+ x1="-17"
+ y1="-1194.6378"
+ x2="144"
+ y2="-1194.6378" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9014"
+ id="linearGradient9114"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.0310559, 0, 0, 0.999984, 525.528, 113.981)"
+ x1="-17"
+ y1="-1194.6378"
+ x2="144"
+ y2="-1194.6378" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9014"
+ id="linearGradient9116"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.0310559, 0, 0, 0.999984, 541.528, 119.981)"
+ x1="-17"
+ y1="-1194.6378"
+ x2="144"
+ y2="-1194.6378" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9014"
+ id="linearGradient9118"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.0310559, 0, 0, 0.999984, 549.528, 115.981)"
+ x1="-17"
+ y1="-1194.6378"
+ x2="144"
+ y2="-1194.6378" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8989"
+ id="linearGradient9120"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.25, 0, 0, 1, 393.75, 501)"
+ x1="529.25"
+ y1="-1568.6378"
+ x2="535"
+ y2="-1574.6379" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9103"
+ id="linearGradient9122"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.25, 0, 0, 0.833333, 417.75, 239.56)"
+ x1="529.25"
+ y1="-1568.6378"
+ x2="535"
+ y2="-1574.6379" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9119"
+ id="linearGradient9124"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.25, 0, 0, 0.5, 409.75, -283.319)"
+ x1="529.25"
+ y1="-1568.6378"
+ x2="535"
+ y2="-1574.6379" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8074-2"
+ id="linearGradient9126"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.192547, 0, 0, 0.999984, 527.273, 129.981)"
+ x1="-17"
+ y1="-1194.6378"
+ x2="144"
+ y2="-1194.6378" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8074-2"
+ id="linearGradient9128"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.192547, 0, 0, 0.999984, 527.273, 104.981)"
+ x1="-17"
+ y1="-1194.6378"
+ x2="144"
+ y2="-1194.6378" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8074-2"
+ id="linearGradient9130"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.149068, 0, 0, 0.999984, -1086.1, 672.619)"
+ x1="-17"
+ y1="-1194.6378"
+ x2="144"
+ y2="-1194.6378" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8074-2"
+ id="linearGradient9132"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.149068, 0, 0, 0.999984, -1086.1, 636.619)"
+ x1="-17"
+ y1="-1194.6378"
+ x2="144"
+ y2="-1194.6378" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient20835"
+ id="linearGradient9182"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.5, 0, 0, 0.5, 234.5, 1435.82)"
+ x1="298"
+ y1="-1571.1935"
+ x2="298"
+ y2="-1497.5724" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient19846-7-8"
+ id="linearGradient9184"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.5, 0, 0, 0.5, 111.5, -317.318)"
+ x1="298"
+ y1="-1587.6377"
+ x2="298"
+ y2="-1507.6377" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9364"
+ id="linearGradient9186"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(4.4999, 0, 0, 3.66665, -739.978, 1017.02)"
+ x1="230"
+ y1="-581.63782"
+ x2="230"
+ y2="-578.63782" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10292"
+ id="linearGradient9188"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(-4.19983, 0, 0, 3.9111, 1743.94, -5705.8)"
+ x1="345"
+ y1="1173"
+ x2="345"
+ y2="1178" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10292"
+ id="linearGradient9190"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(4.19983, 0, 0, 3.9111, -1189.94, -5704.58)"
+ x1="345"
+ y1="1173"
+ x2="345"
+ y2="1178" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient13214"
+ id="linearGradient9192"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.19997, 0, 0, 1.22222, -78.1922, -324.083)"
+ x1="298.1875"
+ y1="-629.66907"
+ x2="298.1875"
+ y2="-635.54944" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9334-46"
+ id="linearGradient9194"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(4.19983, 0, 0, 3.9111, -1189.94, -5699.69)"
+ x1="345"
+ y1="1173"
+ x2="345"
+ y2="1178" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8074-2"
+ id="linearGradient9196"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.223602, 0, 0, 1, 262.801, 101)"
+ x1="-17"
+ y1="-1194.6378"
+ x2="144"
+ y2="-1194.6378" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8074-2"
+ id="linearGradient9198"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.223602, 0, 0, 1, 262.801, 78)"
+ x1="-17"
+ y1="-1194.6378"
+ x2="144"
+ y2="-1194.6378" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8642-6"
+ id="linearGradient9200"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.5, 0, 0, 0.5, -23.9999, -1194.64)"
+ x1="762.75"
+ y1="3695.7761"
+ x2="791"
+ y2="3695.7761" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8548"
+ id="radialGradient9202"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(-1.26643, 0, 0, -3.5926, -828.602, -3323.4)"
+ cx="-1535.3044"
+ cy="-842.90808"
+ fx="-1535.3044"
+ fy="-842.90808"
+ r="10" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10755"
+ id="linearGradient9204"
+ gradientUnits="userSpaceOnUse"
+ x1="445.69522"
+ y1="1103.5776"
+ x2="441.38797"
+ y2="1099.8198" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8074-2"
+ id="linearGradient9206"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.111801, 0, 0, 1, 235.901, 76)"
+ x1="-17"
+ y1="-1194.6378"
+ x2="144"
+ y2="-1194.6378" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8074-2"
+ id="linearGradient9220"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.142857, 0, 0, 1, -1113.21, 935.638)"
+ x1="-17"
+ y1="-1194.6378"
+ x2="144"
+ y2="-1194.6378" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8074-2"
+ id="linearGradient9222"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.142857, 0, 0, 1, -1113.21, 898.638)"
+ x1="-17"
+ y1="-1194.6378"
+ x2="144"
+ y2="-1194.6378" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8074-2"
+ id="linearGradient9224"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.173913, 0, 0, 1, -1115.68, 937.638)"
+ x1="-17"
+ y1="-1194.6378"
+ x2="144"
+ y2="-1194.6378" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8074-2"
+ id="linearGradient9226"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.173913, 0, 0, 1, -1115.68, 896.638)"
+ x1="-17"
+ y1="-1194.6378"
+ x2="144"
+ y2="-1194.6378" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8074-2"
+ id="linearGradient9228"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.223602, 0, 0, 1, 262.801, 103)"
+ x1="-17"
+ y1="-1194.6378"
+ x2="144"
+ y2="-1194.6378" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10216"
+ id="linearGradient9240"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.66667, 0, 0, 3, 2758.33, 3626.28)"
+ x1="529.25"
+ y1="-1568.6378"
+ x2="535"
+ y2="-1574.6378" />
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient8586-6">
+ <stop
+ style="stop-color: rgb(18, 90, 0); stop-opacity: 1;"
+ offset="0"
+ id="stop8588-3" />
+ <stop
+ style="stop-color: rgb(105, 206, 0); stop-opacity: 0;"
+ offset="1"
+ id="stop8592-6" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8074-2"
+ id="linearGradient14438"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.10559, 0, 0, 0.999984, 498.795, 85.9811)"
+ x1="-17"
+ y1="-1194.6378"
+ x2="144"
+ y2="-1194.6378" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8903"
+ id="linearGradient14441"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.666667, 0, 0, 0.5, 145.333, -325.319)"
+ x1="529.25"
+ y1="-1568.6378"
+ x2="535.43829"
+ y2="-1574.826" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8903"
+ id="linearGradient14576"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.666667, 0, 0, 0.5, 145.333, -325.319)"
+ x1="529.25"
+ y1="-1568.6378"
+ x2="535.43829"
+ y2="-1574.826" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8074-2"
+ id="linearGradient14578"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.10559, 0, 0, 0.999984, 498.795, 85.9811)"
+ x1="-17"
+ y1="-1194.6378"
+ x2="144"
+ y2="-1194.6378" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8586"
+ id="linearGradient14602"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.365854, 0, 0, 0.365854, -550.61, -630.307)"
+ x1="152"
+ y1="-1192.6378"
+ x2="113.88176"
+ y2="-1230.7561" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient7770"
+ id="radialGradient14610"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(-1.65787, 0, 0, -2.3, -1428.55, -2486.9)"
+ cx="-1535.3044"
+ cy="-853"
+ fx="-1535.3044"
+ fy="-853"
+ r="10" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8074"
+ id="linearGradient14866"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.571429, 0, 0, 0.999984, -37.2856, 2238.26)"
+ x1="-17"
+ y1="-1194.6378"
+ x2="144"
+ y2="-1194.6378" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient7931"
+ id="linearGradient16111"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.390244, 0, 0, 0.390244, -1861.32, -584.218)"
+ x1="152"
+ y1="-1192.6378"
+ x2="113.88176"
+ y2="-1230.7561" />
+ <linearGradient
+ id="linearGradient13374-1">
+ <stop
+ id="stop13376-3"
+ offset="0"
+ style="stop-color: rgb(255, 255, 255); stop-opacity: 0.65;" />
+ <stop
+ id="stop13378-7"
+ offset="1"
+ style="stop-color: rgb(255, 255, 255); stop-opacity: 0.949;" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient13374-1"
+ id="linearGradient16502"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(4.00012, 0, 0, 4, -752.079, 3725.49)"
+ x1="637.99506"
+ y1="-1204.4242"
+ x2="637.99506"
+ y2="-1220.2429" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient7931"
+ id="linearGradient16522"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.390244, 0, 0, 0.390244, -1852.32, -580.218)"
+ x1="152"
+ y1="-1192.6378"
+ x2="113.88176"
+ y2="-1230.7561" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient7931"
+ id="linearGradient16560"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.0609756, 0, 0, 0.243902, -1802.27, -758.69)"
+ x1="152"
+ y1="-1192.6378"
+ x2="152"
+ y2="-1274.3319" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10286"
+ id="linearGradient16588"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.20252, 0, 0, 2.93135, -71.4101, 2001.41)"
+ x1="349.18112"
+ y1="-1022.4246"
+ x2="349.18112"
+ y2="-1023.6489" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9119"
+ id="linearGradient16896"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.666667, 0, 0, 1.33333, 3580.33, 1019.88)"
+ x1="529.25"
+ y1="-1568.6378"
+ x2="535"
+ y2="-1574.6379" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9103"
+ id="linearGradient16899"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.666667, 0, 0, 2, 3594.33, 2065.64)"
+ x1="529.25"
+ y1="-1568.6378"
+ x2="535"
+ y2="-1574.6379" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9014"
+ id="linearGradient16902"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.372671, 0, 0, 1, 3906.34, 128)"
+ x1="-17"
+ y1="-1194.6378"
+ x2="144"
+ y2="-1194.6378" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8074-2"
+ id="linearGradient16908"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.372671, 0, 0, 1, 3906.34, 125)"
+ x1="-17"
+ y1="-1194.6378"
+ x2="144"
+ y2="-1194.6378" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9014"
+ id="linearGradient16911"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.0621118, 0, 0, 1, 3947.06, 98.0001)"
+ x1="-17"
+ y1="-1194.6378"
+ x2="144"
+ y2="-1194.6378" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9014"
+ id="linearGradient16914"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.0621118, 0, 0, 1, 3933.06, 106)"
+ x1="-17"
+ y1="-1194.6378"
+ x2="144"
+ y2="-1194.6378" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9014"
+ id="linearGradient16917"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.0621118, 0, 0, 1, 3905.06, 94.0001)"
+ x1="-17"
+ y1="-1194.6378"
+ x2="144"
+ y2="-1194.6378" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9014"
+ id="linearGradient16920"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.0621118, 0, 0, 1, 3919.06, 84.0001)"
+ x1="-17"
+ y1="-1194.6378"
+ x2="144"
+ y2="-1194.6378" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9109"
+ id="linearGradient16923"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.666667, 0, 0, 3.16667, 3566.33, 3895.72)"
+ x1="529.25"
+ y1="-1568.6378"
+ x2="535"
+ y2="-1574.6378" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8989"
+ id="linearGradient16926"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.666667, 0, 0, 2.33333, 3552.33, 2588.52)"
+ x1="529.25"
+ y1="-1568.6378"
+ x2="535"
+ y2="-1574.6379" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient13220"
+ id="linearGradient16930"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.42857, 0, 0, 2.88889, 3198.14, 4185.26)"
+ x1="525.63947"
+ y1="-1078.6444"
+ x2="525.63947"
+ y2="-1068.7872" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6975"
+ id="linearGradient16933"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.42857, 0, 0, 2, 3184.14, 3226.91)"
+ x1="525.63947"
+ y1="-1078.6444"
+ x2="525.63947"
+ y2="-1068.7872" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6989"
+ id="linearGradient16936"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.42857, 0, 0, 4.44444, 3170.14, 5862.36)"
+ x1="525.63947"
+ y1="-1078.6444"
+ x2="525.63947"
+ y2="-1068.7872" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9364"
+ id="linearGradient16939"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.42857, 0, 0, 3.33333, 3156.14, 4664.43)"
+ x1="525.63947"
+ y1="-1078.6444"
+ x2="525.63947"
+ y2="-1068.7872" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient16134-3-1"
+ id="radialGradient16942"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0, 0.377844, -0.5985, -9.14811e-05, 3457.33, -1128.34)"
+ cx="152.3331"
+ cy="-754.6377"
+ fx="152.3331"
+ fy="-754.6377"
+ r="15" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient7931-2"
+ id="linearGradient16955"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.439024, 0, 0, 0.609756, 3892.27, -339.42)"
+ x1="152"
+ y1="-1192.6378"
+ x2="113.88176"
+ y2="-1230.7561" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient15606"
+ id="linearGradient16961"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.53846, 0, 0, 2.55, 2801.54, 1646.64)"
+ x1="714"
+ y1="-1063.6378"
+ x2="714"
+ y2="-1083.6378" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient14610"
+ id="linearGradient16964"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.820513, 0, 0, 0.982144, 3426.21, 401.365)"
+ x1="652.25"
+ y1="-1491.6378"
+ x2="652.25"
+ y2="-1548.1383" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8074-2"
+ id="linearGradient16975"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.322981, 0, 0, 1, -1112.15, -2704.36)"
+ x1="-17"
+ y1="-1194.6378"
+ x2="144"
+ y2="-1194.6378" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8074-2"
+ id="linearGradient17007"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.307202, 0, 0, 1, 3910.09, 86.0001)"
+ x1="-17"
+ y1="-1194.6378"
+ x2="144"
+ y2="-1194.6378" />
+ <linearGradient
+ id="linearGradient10292-98"
+ inkscape:collect="always">
+ <stop
+ id="stop10294-91"
+ offset="0"
+ style="stop-color: rgb(146, 226, 133); stop-opacity: 1;" />
+ <stop
+ id="stop10296-8"
+ offset="1"
+ style="stop-color: rgb(24, 163, 3); stop-opacity: 1;" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10501-8-4-63-3-0-5-88-1-3-6-4"
+ id="linearGradient18969"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.111111, 0, 0, 0.5, 4143.89, -581.817)"
+ x1="370"
+ y1="-985.76282"
+ x2="370"
+ y2="-933.63782" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient19377"
+ id="linearGradient19383"
+ x1="4179.0376"
+ y1="-1118.3577"
+ x2="4179.0376"
+ y2="-1094.7173"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10501-8-4-6"
+ id="linearGradient19415"
+ x1="4193.1797"
+ y1="-1118.0042"
+ x2="4193.1797"
+ y2="-1090.0558"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient19105"
+ id="linearGradient19526"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1, 0, 0, -1, 0, -2168.97)"
+ x1="4195.8315"
+ y1="-1105.0995"
+ x2="4195.8315"
+ y2="-1064.9633" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient19105"
+ id="linearGradient19529"
+ gradientUnits="userSpaceOnUse"
+ x1="4195.8315"
+ y1="-1116.3713"
+ x2="4195.8315"
+ y2="-1056.9443"
+ gradientTransform="translate(-20)" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6787-1-2-3-6-5-6-3-0"
+ id="radialGradient19533"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1, 0, 0, 0.995981, 0, -4.35867)"
+ cx="4200.1958"
+ cy="-1079.1608"
+ fx="4200.1958"
+ fy="-1079.1608"
+ r="20.000019" />
+ <linearGradient
+ id="linearGradient10292-4"
+ inkscape:collect="always">
+ <stop
+ id="stop10294-4"
+ offset="0"
+ style="stop-color: rgb(153, 153, 153); stop-opacity: 1;" />
+ <stop
+ id="stop10296-7"
+ offset="1"
+ style="stop-color: rgb(102, 102, 102); stop-opacity: 1;" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient19690"
+ id="linearGradient19696"
+ x1="4591.25"
+ y1="665.125"
+ x2="4591.25"
+ y2="691.00275"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-121, -1754.64)" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient19682"
+ id="linearGradient19710"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.00809, 0, 0, 1.00752, -158.22, -1759.43)"
+ x1="4573"
+ y1="661.25"
+ x2="4573"
+ y2="688.13287" />
+ <linearGradient
+ id="linearGradient7931-49"
+ inkscape:collect="always">
+ <stop
+ id="stop7933-5"
+ offset="0"
+ style="stop-color: rgb(0, 0, 0); stop-opacity: 1;" />
+ <stop
+ style="stop-color: rgb(0, 0, 0); stop-opacity: 0.360784;"
+ offset="0.45461464"
+ id="stop7968-36" />
+ <stop
+ id="stop7935-6"
+ offset="1"
+ style="stop-color: rgb(0, 0, 0); stop-opacity: 0;" />
+ </linearGradient>
+ <linearGradient
+ y2="-1230.7561"
+ x2="113.88176"
+ y1="-1192.6378"
+ x1="152"
+ gradientTransform="matrix(0.182927, 0, 0, 0.182927, -1094.44, -4216.83)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient19871"
+ xlink:href="#linearGradient7931-49"
+ inkscape:collect="always" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient19712"
+ id="linearGradient19908"
+ gradientUnits="userSpaceOnUse"
+ x1="4465.0625"
+ y1="-1115.5293"
+ x2="4465.0625"
+ y2="-1073.7601"
+ gradientTransform="translate(3)" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8074"
+ id="linearGradient19953"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.267081, 0, 0, 2.99995, -4483.46, 4647.49)"
+ x1="-17"
+ y1="-1194.6378"
+ x2="144"
+ y2="-1194.6378" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient20002"
+ id="linearGradient20008"
+ x1="4584.5269"
+ y1="681.94916"
+ x2="4596.2212"
+ y2="681.94916"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.680579, 0, 0, 1.03224, 1343.47, -1775.66)" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient20010"
+ id="linearGradient20016"
+ x1="4441.75"
+ y1="-1084.1628"
+ x2="4441.75"
+ y2="-1064.1378"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(1)" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient20002"
+ id="linearGradient20022"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0, -0.64116, -1.03224, 0, 5153.02, 1839.43)"
+ x1="4584.5269"
+ y1="681.94916"
+ x2="4596.2212"
+ y2="681.94916" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient20031"
+ id="linearGradient20037"
+ x1="-1072.9503"
+ y1="4450.75"
+ x2="-1063.8406"
+ y2="4456.0996"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0, 1, 1, 0, 1, 0)" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient20031"
+ id="linearGradient20041"
+ gradientUnits="userSpaceOnUse"
+ x1="-1072.9503"
+ y1="4450.75"
+ x2="-1063.8406"
+ y2="4456.0996"
+ gradientTransform="matrix(-1, 0, 0, -1, 3366.49, 3365.61)" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient7931"
+ id="linearGradient20063"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.170732, 0, 0, 0.170732, 4457.05, -871.017)"
+ x1="152"
+ y1="-1192.6378"
+ x2="113.88176"
+ y2="-1230.7561" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8074"
+ id="linearGradient20067"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.186335, 0, 0, 0.999984, -4479.83, 2267.26)"
+ x1="-17"
+ y1="-1194.6378"
+ x2="144"
+ y2="-1194.6378" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10292-4"
+ id="linearGradient20069"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(2.99994, 0, 0, 2.99948, 4115.01, -4047.24)"
+ x1="121.30617"
+ y1="976.37823"
+ x2="121.30617"
+ y2="992.4245" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8074"
+ id="linearGradient20089"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.36646, 0, 0, 1.00855, -4477.77, 2268.5)"
+ x1="-17"
+ y1="-1194.6378"
+ x2="144"
+ y2="-1194.6378" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9334-46-6"
+ id="linearGradient25013"
+ gradientUnits="userSpaceOnUse"
+ x1="116.48132"
+ y1="982.36108"
+ x2="116.48132"
+ y2="986.86115" />
+ <linearGradient
+ id="linearGradient9334-46-6"
+ inkscape:collect="always">
+ <stop
+ id="stop9336-9-0"
+ offset="0"
+ style="stop-color: rgb(3, 105, 163); stop-opacity: 1;" />
+ <stop
+ id="stop9338-9-5"
+ offset="1"
+ style="stop-color: rgb(2, 63, 98); stop-opacity: 1;" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9334-46-6"
+ id="linearGradient24995"
+ gradientUnits="userSpaceOnUse"
+ x1="116.48132"
+ y1="982.36108"
+ x2="116.48132"
+ y2="986.86115" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9334-46-6"
+ id="linearGradient24977"
+ gradientUnits="userSpaceOnUse"
+ x1="116.48132"
+ y1="982.36108"
+ x2="116.48132"
+ y2="986.86115" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9334-46-6"
+ id="linearGradient24959"
+ gradientUnits="userSpaceOnUse"
+ x1="116.48132"
+ y1="982.36108"
+ x2="116.48132"
+ y2="986.86115" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9334-46-4"
+ id="linearGradient25013-8"
+ gradientUnits="userSpaceOnUse"
+ x1="116.48132"
+ y1="982.36108"
+ x2="116.48132"
+ y2="986.86115" />
+ <linearGradient
+ id="linearGradient9334-46-4"
+ inkscape:collect="always">
+ <stop
+ id="stop9336-9-2"
+ offset="0"
+ style="stop-color: rgb(3, 105, 163); stop-opacity: 1;" />
+ <stop
+ id="stop9338-9-9"
+ offset="1"
+ style="stop-color: rgb(2, 63, 98); stop-opacity: 1;" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9334-46-4"
+ id="linearGradient24995-0"
+ gradientUnits="userSpaceOnUse"
+ x1="116.48132"
+ y1="982.36108"
+ x2="116.48132"
+ y2="986.86115" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9334-46-4"
+ id="linearGradient24977-5"
+ gradientUnits="userSpaceOnUse"
+ x1="116.48132"
+ y1="982.36108"
+ x2="116.48132"
+ y2="986.86115" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9334-46-4"
+ id="linearGradient24959-2"
+ gradientUnits="userSpaceOnUse"
+ x1="116.48132"
+ y1="982.36108"
+ x2="116.48132"
+ y2="986.86115" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient14494-0"
+ id="linearGradient16245-6"
+ gradientUnits="userSpaceOnUse"
+ x1="520.58502"
+ y1="735.05206"
+ x2="516.15179"
+ y2="720.86298" />
+ <linearGradient
+ id="linearGradient14494-0">
+ <stop
+ id="stop14496-2"
+ offset="0"
+ style="stop-color: rgb(220, 133, 233); stop-opacity: 1;" />
+ <stop
+ id="stop14498-8"
+ offset="1"
+ style="stop-color: rgb(242, 203, 248); stop-opacity: 1;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient16134-3-1-91">
+ <stop
+ style="stop-color: rgb(0, 0, 0); stop-opacity: 0.501961;"
+ offset="0"
+ id="stop16136-6-3-6" />
+ <stop
+ style="stop-color: rgb(0, 0, 0); stop-opacity: 0;"
+ offset="1"
+ id="stop16138-4-6-5" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient9364-7">
+ <stop
+ style="stop-color: rgb(99, 187, 238); stop-opacity: 1;"
+ offset="0"
+ id="stop9366-8" />
+ <stop
+ style="stop-color: rgb(170, 220, 247); stop-opacity: 1;"
+ offset="1"
+ id="stop9368-8" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9334-46-5"
+ id="linearGradient24959-3"
+ gradientUnits="userSpaceOnUse"
+ x1="116.48132"
+ y1="982.36108"
+ x2="116.48132"
+ y2="986.86115" />
+ <linearGradient
+ id="linearGradient9334-46-5"
+ inkscape:collect="always">
+ <stop
+ id="stop9336-9-07"
+ offset="0"
+ style="stop-color: rgb(3, 105, 163); stop-opacity: 1;" />
+ <stop
+ id="stop9338-9-0"
+ offset="1"
+ style="stop-color: rgb(2, 63, 98); stop-opacity: 1;" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9334-46-5"
+ id="linearGradient24949-52"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.21429, 0, 0, 0.500016, 90.8575, 491.165)"
+ x1="117.71875"
+ y1="976.30396"
+ x2="117.71875"
+ y2="992.23761" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10501-8-01"
+ id="linearGradient24951-0"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.250003, 0, 0, 0.500016, 86.7504, 491.165)"
+ x1="117.71875"
+ y1="982.36218"
+ x2="117.71875"
+ y2="989.40918" />
+ <linearGradient
+ id="linearGradient10501-8-01">
+ <stop
+ style="stop-color: rgb(3, 105, 163); stop-opacity: 1;"
+ offset="0"
+ id="stop10503-6-1" />
+ <stop
+ style="stop-color: rgb(2, 63, 98); stop-opacity: 1;"
+ offset="1"
+ id="stop10505-6-33" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9334-46-5"
+ id="linearGradient24953-1"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.21429, 0, 0, 0.500016, 90.8575, 492.165)"
+ x1="117.71875"
+ y1="976.30396"
+ x2="117.71875"
+ y2="992.23761" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9334-46-5"
+ id="linearGradient24955-9"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.785729, 0, 0, 0.500016, 25.1414, 493.165)"
+ x1="117.71875"
+ y1="976.30396"
+ x2="117.71875"
+ y2="992.23761" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9334-46-5"
+ id="linearGradient24957-03"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.571439, 0, 0, 0.500016, 49.785, 494.165)"
+ x1="117.71875"
+ y1="976.30396"
+ x2="117.71875"
+ y2="992.23761" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10501-8-01"
+ id="linearGradient24961-1"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.777787, 0, 0, 0.833343, 49.998, -130.099)"
+ x1="208.96875"
+ y1="-780.60657"
+ x2="208.96875"
+ y2="-769.82318" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9364-7"
+ id="linearGradient24963-0"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.625008, 0, 0, 0.499999, 80.2482, -488.819)"
+ x1="230"
+ y1="-581.63782"
+ x2="230"
+ y2="-578.63782" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10292-2"
+ id="linearGradient24965-5"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.875, 0, 0, 0.8, -84.8751, -1719.04)"
+ x1="345"
+ y1="1173"
+ x2="345"
+ y2="1178" />
+ <linearGradient
+ id="linearGradient10292-2"
+ inkscape:collect="always">
+ <stop
+ id="stop10294-3"
+ offset="0"
+ style="stop-color: rgb(102, 102, 102); stop-opacity: 1;" />
+ <stop
+ id="stop10296-1"
+ offset="1"
+ style="stop-color: rgb(51, 51, 51); stop-opacity: 1;" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9334-46-5"
+ id="linearGradient24977-7"
+ gradientUnits="userSpaceOnUse"
+ x1="116.48132"
+ y1="982.36108"
+ x2="116.48132"
+ y2="986.86115" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9334-46-5"
+ id="linearGradient24967-0"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.21429, 0, 0, 0.500016, 90.8575, 491.165)"
+ x1="117.71875"
+ y1="976.30396"
+ x2="117.71875"
+ y2="992.23761" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10501-8-01"
+ id="linearGradient24969-1"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.250003, 0, 0, 0.500016, 86.7504, 491.165)"
+ x1="117.71875"
+ y1="982.36218"
+ x2="117.71875"
+ y2="989.40918" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9334-46-5"
+ id="linearGradient24971-7"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.21429, 0, 0, 0.500016, 90.8575, 492.165)"
+ x1="117.71875"
+ y1="976.30396"
+ x2="117.71875"
+ y2="992.23761" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9334-46-5"
+ id="linearGradient24973-0"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.785729, 0, 0, 0.500016, 25.1414, 493.165)"
+ x1="117.71875"
+ y1="976.30396"
+ x2="117.71875"
+ y2="992.23761" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9334-46-5"
+ id="linearGradient24975-9"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.571439, 0, 0, 0.500016, 49.785, 494.165)"
+ x1="117.71875"
+ y1="976.30396"
+ x2="117.71875"
+ y2="992.23761" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10501-8-01"
+ id="linearGradient24979-4"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.777787, 0, 0, 0.833343, 49.998, -130.099)"
+ x1="208.96875"
+ y1="-780.60657"
+ x2="208.96875"
+ y2="-769.82318" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9364-7"
+ id="linearGradient24981-5"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.625008, 0, 0, 0.499999, 80.2482, -488.819)"
+ x1="230"
+ y1="-581.63782"
+ x2="230"
+ y2="-578.63782" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10292-2"
+ id="linearGradient24983-4"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.875, 0, 0, 0.8, -84.8751, -1719.04)"
+ x1="345"
+ y1="1173"
+ x2="345"
+ y2="1178" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9334-46-5"
+ id="linearGradient24995-1"
+ gradientUnits="userSpaceOnUse"
+ x1="116.48132"
+ y1="982.36108"
+ x2="116.48132"
+ y2="986.86115" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9334-46-5"
+ id="linearGradient24985-73"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.21429, 0, 0, 0.500016, 90.8575, 491.165)"
+ x1="117.71875"
+ y1="976.30396"
+ x2="117.71875"
+ y2="992.23761" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10501-8-01"
+ id="linearGradient24987-1"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.250003, 0, 0, 0.500016, 86.7504, 491.165)"
+ x1="117.71875"
+ y1="982.36218"
+ x2="117.71875"
+ y2="989.40918" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9334-46-5"
+ id="linearGradient24989-2"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.21429, 0, 0, 0.500016, 90.8575, 492.165)"
+ x1="117.71875"
+ y1="976.30396"
+ x2="117.71875"
+ y2="992.23761" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9334-46-5"
+ id="linearGradient24991-63"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.785729, 0, 0, 0.500016, 25.1414, 493.165)"
+ x1="117.71875"
+ y1="976.30396"
+ x2="117.71875"
+ y2="992.23761" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9334-46-5"
+ id="linearGradient24993-2"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.571439, 0, 0, 0.500016, 49.785, 494.165)"
+ x1="117.71875"
+ y1="976.30396"
+ x2="117.71875"
+ y2="992.23761" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10501-8-01"
+ id="linearGradient24997-47"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.777787, 0, 0, 0.833343, 49.998, -130.099)"
+ x1="208.96875"
+ y1="-780.60657"
+ x2="208.96875"
+ y2="-769.82318" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9364-7"
+ id="linearGradient24999-2"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.625008, 0, 0, 0.499999, 80.2482, -488.819)"
+ x1="230"
+ y1="-581.63782"
+ x2="230"
+ y2="-578.63782" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10292-2"
+ id="linearGradient25001-7"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.875, 0, 0, 0.8, -84.8751, -1719.04)"
+ x1="345"
+ y1="1173"
+ x2="345"
+ y2="1178" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9334-46-5"
+ id="linearGradient25013-7"
+ gradientUnits="userSpaceOnUse"
+ x1="116.48132"
+ y1="982.36108"
+ x2="116.48132"
+ y2="986.86115" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9334-46-5"
+ id="linearGradient25003-4"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.21429, 0, 0, 0.500016, 90.8575, 491.165)"
+ x1="117.71875"
+ y1="976.30396"
+ x2="117.71875"
+ y2="992.23761" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10501-8-01"
+ id="linearGradient25005-0"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.250003, 0, 0, 0.500016, 86.7504, 491.165)"
+ x1="117.71875"
+ y1="982.36218"
+ x2="117.71875"
+ y2="989.40918" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9334-46-5"
+ id="linearGradient25007-8"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.21429, 0, 0, 0.500016, 90.8575, 492.165)"
+ x1="117.71875"
+ y1="976.30396"
+ x2="117.71875"
+ y2="992.23761" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9334-46-5"
+ id="linearGradient25009-4"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.785729, 0, 0, 0.500016, 25.1414, 493.165)"
+ x1="117.71875"
+ y1="976.30396"
+ x2="117.71875"
+ y2="992.23761" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9334-46-5"
+ id="linearGradient25011-5"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.571439, 0, 0, 0.500016, 49.785, 494.165)"
+ x1="117.71875"
+ y1="976.30396"
+ x2="117.71875"
+ y2="992.23761" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10501-8-01"
+ id="linearGradient25015-1"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.777787, 0, 0, 0.833343, 49.998, -130.099)"
+ x1="208.96875"
+ y1="-780.60657"
+ x2="208.96875"
+ y2="-769.82318" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9364-7"
+ id="linearGradient25017-7"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.625008, 0, 0, 0.499999, 80.2482, -488.819)"
+ x1="230"
+ y1="-581.63782"
+ x2="230"
+ y2="-578.63782" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10292-2"
+ id="linearGradient25019-9"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.875, 0, 0, 0.8, -84.8751, -1719.04)"
+ x1="345"
+ y1="1173"
+ x2="345"
+ y2="1178" />
+ <clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath10326-0">
+ <path
+ transform="translate(-123, -1753.64)"
+ d="m 3238,891.5 a 6.5,6.5 0 1 1 -13,0 6.5,6.5 0 1 1 13,0 z"
+ sodipodi:ry="6.5"
+ sodipodi:rx="6.5"
+ sodipodi:cy="891.5"
+ sodipodi:cx="3231.5"
+ id="path10328-80"
+ style="overflow: visible; marker: none; color: rgb(0, 0, 0); fill: rgb(0, 160, 252); fill-opacity: 1; fill-rule: nonzero; stroke: none; stroke-width: 1; visibility: visible; display: inline;"
+ sodipodi:type="arc" />
+ </clipPath>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9364-7"
+ id="linearGradient20797"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.379315, 0, 0, 0.346155, 2076.43, -426.416)"
+ x1="3404.9995"
+ y1="-1092.6378"
+ x2="3404.9995"
+ y2="-1117.6578" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9364-7"
+ id="linearGradient20800"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.379315, 0, 0, 0.346155, 2089.43, -426.416)"
+ x1="3404.9995"
+ y1="-1092.6378"
+ x2="3404.9995"
+ y2="-1117.6578" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9364-7"
+ id="linearGradient20803"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.379315, 0, 0, 0.346155, 2089.43, -437.416)"
+ x1="3404.9995"
+ y1="-1092.6378"
+ x2="3404.9995"
+ y2="-1117.6578" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9364-7"
+ id="linearGradient20806"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.379315, 0, 0, 0.346155, 2076.43, -437.416)"
+ x1="3404.9995"
+ y1="-1092.6378"
+ x2="3404.9995"
+ y2="-1117.6578" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient16134-3-1-91"
+ id="radialGradient20814"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0, 0.111737, -0.76475, -2.7053e-05, 3314.36, -822.179)"
+ cx="152.3331"
+ cy="-754.6377"
+ fx="152.3331"
+ fy="-754.6377"
+ r="15" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10292"
+ id="linearGradient21193"
+ gradientUnits="userSpaceOnUse"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.96875"
+ y2="992.375" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10292"
+ id="linearGradient21262"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(15.9995, 0, 0, 15.9955, -1815.94, -17050.2)"
+ x1="121.30617"
+ y1="976.37823"
+ x2="121.30617"
+ y2="992.4245" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10292"
+ id="linearGradient21264"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(16.0634, 0, 0, 16.1473, -1839.92, -17198.3)"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.96875"
+ y2="992.375" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient7970"
+ id="linearGradient21266"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(15.958, 0, 0, 16.0248, -4705.13, -5573.42)"
+ x1="294.3429"
+ y1="256.58133"
+ x2="294.41818"
+ y2="243.13852" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient7976"
+ id="linearGradient21268"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(8, 0, 0, 8, -1688, 4583.47)"
+ x1="209.0625"
+ y1="-754.08502"
+ x2="209.0625"
+ y2="-782.63782" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient7931"
+ id="linearGradient21270"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.780488, 0, 0, 0.780488, -92.6341, -520.799)"
+ x1="152"
+ y1="-1192.6378"
+ x2="113.88176"
+ y2="-1230.7561" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8074"
+ id="linearGradient21272"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.621118, 0, 0, 1, 23.559, -257)"
+ x1="-17"
+ y1="-1194.6378"
+ x2="144"
+ y2="-1194.6378" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8074"
+ id="linearGradient21274"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.41615, 0, 0, 1, -1655.56, 1220.64)"
+ x1="-17"
+ y1="-1194.6378"
+ x2="144"
+ y2="-1194.6378" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8074"
+ id="linearGradient21276"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.867106, 0, 0, 1, -1578, 1033.64)"
+ x1="-17"
+ y1="-1194.6378"
+ x2="144"
+ y2="-1194.6378" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8074"
+ id="linearGradient21278"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.621118, 0, 0, 1, 23.559, -251)"
+ x1="-17"
+ y1="-1194.6378"
+ x2="144"
+ y2="-1194.6378" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient7303"
+ id="linearGradient21280"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-390, -1753.64)"
+ x1="364.8671"
+ y1="300.81857"
+ x2="389.10162"
+ y2="276.58405" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient7303"
+ id="linearGradient21282"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1, 0, 0, -1, -392, -1379.64)"
+ x1="364.8671"
+ y1="300.81857"
+ x2="389.10162"
+ y2="276.58405" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8074-2"
+ id="linearGradient21284"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.524068, 0, 0, 1, -1110.65, -48.9609)"
+ x1="-17"
+ y1="-1194.6378"
+ x2="144"
+ y2="-1194.6378" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8074-2"
+ id="linearGradient21286"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.524068, 0, 0, 1, -1111.36, -41.1827)"
+ x1="-17"
+ y1="-1194.6378"
+ x2="144"
+ y2="-1194.6378" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8074-2"
+ id="linearGradient21288"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.524068, 0, 0, 1, -1111.36, -69.467)"
+ x1="-17"
+ y1="-1194.6378"
+ x2="144"
+ y2="-1194.6378" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8074"
+ id="linearGradient21290"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.41615, 0, 0, 1, -1655.56, 1226.64)"
+ x1="-17"
+ y1="-1194.6378"
+ x2="144"
+ y2="-1194.6378" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8074"
+ id="linearGradient21292"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.899038, 0, 0, 1, -1580.99, 1348.64)"
+ x1="-17"
+ y1="-1194.6378"
+ x2="144"
+ y2="-1194.6378" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10462-7"
+ id="radialGradient21562"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(3.84067e-06, 0.270741, -4.04344, 0, -2201.98, -1535.94)"
+ cx="152.3331"
+ cy="-754.6377"
+ fx="152.3331"
+ fy="-754.6377"
+ r="15" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10436"
+ id="linearGradient21566"
+ gradientUnits="userSpaceOnUse"
+ x1="850.25"
+ y1="-1506.5753"
+ x2="850.25"
+ y2="-1510.5831" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient13791"
+ id="linearGradient21568"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(2.03333, 0, 0, 2.04762, -752.267, 686.81)"
+ x1="809.625"
+ y1="-1074.7628"
+ x2="809.625"
+ y2="-1116.7638" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9929"
+ id="linearGradient21570"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(2.03333, 0, 0, 2.15, -752.267, 798.982)"
+ x1="812"
+ y1="-1075.6378"
+ x2="812"
+ y2="-1115.6378" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10138"
+ id="radialGradient21574"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(-3.31574, 0, 0, -3.2, -6604.01, -3579.6)"
+ cx="-1535.4552"
+ cy="-853"
+ fx="-1535.4552"
+ fy="-853"
+ r="10" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10658"
+ id="linearGradient21576"
+ gradientUnits="userSpaceOnUse"
+ x1="825.25"
+ y1="-1559.6377"
+ x2="825.25"
+ y2="-1525.6377" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10391"
+ id="linearGradient21578"
+ gradientUnits="userSpaceOnUse"
+ x1="895.49988"
+ y1="647.81232"
+ x2="895.49988"
+ y2="735.74982" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10226"
+ id="linearGradient21580"
+ gradientUnits="userSpaceOnUse"
+ x1="798.24518"
+ y1="-1589.1378"
+ x2="902.00031"
+ y2="-1589.1378" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10682"
+ id="linearGradient21582"
+ gradientUnits="userSpaceOnUse"
+ x1="902.25"
+ y1="-1534.4158"
+ x2="902.25"
+ y2="-1524.3566" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10623"
+ id="linearGradient21584"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.17949, 0, 0, 1.5, 10.8462, 67.8194)"
+ x1="714"
+ y1="-1063.6378"
+ x2="714"
+ y2="-1079.1599" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient13214"
+ id="linearGradient21586"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(2, 0, 0, 2, -898, 556.638)"
+ x1="889"
+ y1="-1054.6378"
+ x2="879"
+ y2="-1042.6378" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10367"
+ id="linearGradient21588"
+ gradientUnits="userSpaceOnUse"
+ x1="818.03473"
+ y1="-1575.7028"
+ x2="882.23718"
+ y2="-1575.7028" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9014"
+ id="linearGradient21590"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.726708, 0, 0, 1, 802.354, -405)"
+ x1="-17"
+ y1="-1194.6378"
+ x2="144"
+ y2="-1194.6378" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10664"
+ id="linearGradient21592"
+ gradientUnits="userSpaceOnUse"
+ x1="825.25"
+ y1="-1559.6377"
+ x2="825.25"
+ y2="-1525.6377" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10397"
+ id="linearGradient21594"
+ gradientUnits="userSpaceOnUse"
+ x1="895.49988"
+ y1="621.56232"
+ x2="895.49988"
+ y2="709.49982" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10670"
+ id="linearGradient21596"
+ gradientUnits="userSpaceOnUse"
+ x1="825.25"
+ y1="-1559.6377"
+ x2="825.25"
+ y2="-1525.6377" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10403"
+ id="linearGradient21598"
+ gradientUnits="userSpaceOnUse"
+ x1="895.49988"
+ y1="595.31232"
+ x2="895.49988"
+ y2="683.24982" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10676"
+ id="linearGradient21600"
+ gradientUnits="userSpaceOnUse"
+ x1="825.25"
+ y1="-1559.6377"
+ x2="825.25"
+ y2="-1525.6377" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10377"
+ id="linearGradient21602"
+ gradientUnits="userSpaceOnUse"
+ x1="895.49988"
+ y1="569.06232"
+ x2="895.49988"
+ y2="656.99982" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8074-2"
+ id="linearGradient21604"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.645963, 0, 0, 1, 808.981, -396)"
+ x1="-17"
+ y1="-1194.6378"
+ x2="144"
+ y2="-1194.6378" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8074-2"
+ id="linearGradient21606"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.397516, 0, 0, 1, 824.758, -386)"
+ x1="-17"
+ y1="-1194.6378"
+ x2="144"
+ y2="-1194.6378" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8074-2"
+ id="linearGradient21608"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.720497, 0, 0, 1, 804.248, -319)"
+ x1="-17"
+ y1="-1194.6378"
+ x2="144"
+ y2="-1194.6378" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9014"
+ id="linearGradient21612"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.286106, 0, 0, 1, 858.013, -333.937)"
+ x1="-17"
+ y1="-1194.6378"
+ x2="144"
+ y2="-1194.6378" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10617"
+ id="linearGradient21618"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(2, 0, 0, 2, -898, 556.638)"
+ x1="881"
+ y1="-1042.6378"
+ x2="887"
+ y2="-1048.6378" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient13785-8"
+ id="linearGradient21620"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(15.9995, 0, 0, 15.9955, -1038.94, -17312.2)"
+ x1="74.177872"
+ y1="992.75012"
+ x2="74.177872"
+ y2="1008.7546" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient13785-8"
+ id="linearGradient21622"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(15.9995, 0, 0, 15.9955, -1038.94, -17312.2)"
+ x1="74.177872"
+ y1="992.75012"
+ x2="74.177872"
+ y2="1008.7546" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient13785-8"
+ id="linearGradient21624"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(15.9995, 0, 0, 15.9955, -1038.94, -17312.2)"
+ x1="74.177872"
+ y1="992.75012"
+ x2="74.177872"
+ y2="1008.7546" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient13214"
+ id="linearGradient21626"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(2, 0, 0, 2, -711, -2873.64)"
+ x1="640"
+ y1="632.99835"
+ x2="640"
+ y2="688.52026" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8586-6"
+ id="linearGradient21634"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.731707, 0, 0, 0.731707, -637.22, -625.976)"
+ x1="152"
+ y1="-1192.6378"
+ x2="113.88176"
+ y2="-1230.7561" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8074-2"
+ id="linearGradient21636"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.73913, 0, 0, 1, 538.565, -303)"
+ x1="-17"
+ y1="-1194.6378"
+ x2="144"
+ y2="-1194.6378" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient7770"
+ id="radialGradient21638"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(-3.31574, 0, 0, -4.65, -3490.73, -4550.95)"
+ cx="-1535.3044"
+ cy="-853"
+ fx="-1535.3044"
+ fy="-853"
+ r="10" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8074-2"
+ id="linearGradient21640"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.484472, 0, 0, 1, 583.236, -297)"
+ x1="-17"
+ y1="-1194.6378"
+ x2="144"
+ y2="-1194.6378" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient14610"
+ id="linearGradient21642"
+ gradientUnits="userSpaceOnUse"
+ x1="652.25"
+ y1="-1491.6378"
+ x2="652.25"
+ y2="-1548.1383" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient15606"
+ id="linearGradient21644"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.89744, 0, 0, 2.6, -777.769, 1271.82)"
+ x1="714"
+ y1="-1063.6378"
+ x2="714"
+ y2="-1083.6378" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient7931-2"
+ id="linearGradient21646"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.609756, 0, 0, 0.609756, 557.317, -767.42)"
+ x1="152"
+ y1="-1192.6378"
+ x2="113.88176"
+ y2="-1230.7561" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9364"
+ id="linearGradient21652"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.71429, 0, 0, 3.33333, -316.429, 5092.43)"
+ x1="525.63947"
+ y1="-1078.6444"
+ x2="525.63947"
+ y2="-1068.7872" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6989"
+ id="linearGradient21654"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.71429, 0, 0, 4.44444, -298.429, 6290.36)"
+ x1="525.63947"
+ y1="-1078.6444"
+ x2="525.63947"
+ y2="-1068.7872" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6975"
+ id="linearGradient21656"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.71429, 0, 0, 2, -280.429, 3654.91)"
+ x1="525.63947"
+ y1="-1078.6444"
+ x2="525.63947"
+ y2="-1068.7872" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient13220"
+ id="linearGradient21658"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.71429, 0, 0, 2.88889, -262.429, 4613.26)"
+ x1="525.63947"
+ y1="-1078.6444"
+ x2="525.63947"
+ y2="-1068.7872" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8989"
+ id="linearGradient21660"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.833333, 0, 0, 2.33333, 141.167, 2160.52)"
+ x1="529.25"
+ y1="-1568.6378"
+ x2="535"
+ y2="-1574.6379" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9109"
+ id="linearGradient21662"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.833333, 0, 0, 3.16667, 159.167, 3467.72)"
+ x1="529.25"
+ y1="-1568.6378"
+ x2="535"
+ y2="-1574.6378" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8074-2"
+ id="linearGradient21666"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.459627, 0, 0, 1, 584.814, -303)"
+ x1="-17"
+ y1="-1194.6378"
+ x2="144"
+ y2="-1194.6378" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9014"
+ id="linearGradient21668"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.459627, 0, 0, 1, 584.814, -300)"
+ x1="-17"
+ y1="-1194.6378"
+ x2="144"
+ y2="-1194.6378" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9103"
+ id="linearGradient21670"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.833333, 0, 0, 2, 195.167, 1637.64)"
+ x1="529.25"
+ y1="-1568.6378"
+ x2="535"
+ y2="-1574.6379" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9119"
+ id="linearGradient21672"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.833333, 0, 0, 1.33333, 177.167, 591.879)"
+ x1="529.25"
+ y1="-1568.6378"
+ x2="535"
+ y2="-1574.6379" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient13214"
+ id="linearGradient21690"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.00399, 0, 0, 1.00959, -1.49914, -9.36636)"
+ x1="168.82837"
+ y1="-1408.7965"
+ x2="168.82837"
+ y2="-1156.2104" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient13214"
+ id="linearGradient21692"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.00399, 0, 0, 1.00959, -1.49914, -9.36636)"
+ x1="168.82837"
+ y1="-1408.7965"
+ x2="168.82837"
+ y2="-1156.2104" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient13214"
+ id="linearGradient21694"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.00399, 0, 0, 1.00959, -1.49914, -9.36636)"
+ x1="168.82837"
+ y1="-1408.7965"
+ x2="168.82837"
+ y2="-1156.2104" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8074-2"
+ id="linearGradient21696"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.161491, 0, 0, 1, 530.745, -391)"
+ x1="-17"
+ y1="-1194.6378"
+ x2="144"
+ y2="-1194.6378" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8903"
+ id="linearGradient21698"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(0, -18)"
+ x1="529.25"
+ y1="-1568.6378"
+ x2="535.43829"
+ y2="-1574.826" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8903"
+ id="linearGradient21700"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(0, -1)"
+ x1="529.25"
+ y1="-1568.6378"
+ x2="535.43829"
+ y2="-1574.826" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8074-2"
+ id="linearGradient21702"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.378882, 0, 0, 1, 589.441, -344)"
+ x1="-17"
+ y1="-1194.6378"
+ x2="144"
+ y2="-1194.6378" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient16134-3-1"
+ id="radialGradient21704"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0, 0.377844, -0.665, -9.14811e-05, 85.1409, -1556.34)"
+ cx="152.3331"
+ cy="-754.6377"
+ fx="152.3331"
+ fy="-754.6377"
+ r="15" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9014"
+ id="linearGradient21706"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.0745342, 0, 0, 1, 582.267, -334)"
+ x1="-17"
+ y1="-1194.6378"
+ x2="144"
+ y2="-1194.6378" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8074-2"
+ id="linearGradient21708"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.459627, 0, 0, 1, -643.186, 2740.28)"
+ x1="-17"
+ y1="-1194.6378"
+ x2="144"
+ y2="-1194.6378" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient11255"
+ id="linearGradient21768"
+ gradientUnits="userSpaceOnUse"
+ x1="1180.158"
+ y1="688.52631"
+ x2="1180.158"
+ y2="658.13159" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient11332"
+ id="linearGradient21770"
+ gradientUnits="userSpaceOnUse"
+ x1="1179.2571"
+ y1="678.05798"
+ x2="1195.1416"
+ y2="662.17346" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9658"
+ id="linearGradient21772"
+ gradientUnits="userSpaceOnUse"
+ x1="1183.4689"
+ y1="671.48962"
+ x2="1168"
+ y2="686.9585" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9652"
+ id="radialGradient21774"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.55542, -1.86711e-05, 1.93096e-05, 1.61065, 5211.96, 2375.68)"
+ cx="-2578.6877"
+ cy="-1363.4087"
+ fx="-2578.6877"
+ fy="-1363.4087"
+ r="10" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient11458"
+ id="linearGradient21776"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(2, 0, 0, 2.03077, -987, 3803.46)"
+ x1="1079.5464"
+ y1="-2650.2756"
+ x2="1079.5464"
+ y2="-2617.5344" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient11513"
+ id="linearGradient21778"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(0, -1)"
+ x1="1171.25"
+ y1="-1513.3878"
+ x2="1171.25"
+ y2="-1575.6378" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient11503"
+ id="linearGradient21780"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(0, -1)"
+ x1="1171"
+ y1="-1562.1042"
+ x2="1138.0002"
+ y2="-1504.947" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9569"
+ id="linearGradient21782"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(2.5, 0, 0, 5.00002, -2493.5, 6327.58)"
+ x1="529.25"
+ y1="-1568.6378"
+ x2="535"
+ y2="-1574.6378" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9569"
+ id="linearGradient21784"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(2.5, 0, 0, 5.00002, -211.5, 6327.58)"
+ x1="529.25"
+ y1="-1568.6378"
+ x2="535"
+ y2="-1574.6378" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient16819"
+ id="linearGradient21786"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(0, -2)"
+ x1="1065.75"
+ y1="-1561.3922"
+ x2="1065.75"
+ y2="-1495.6378" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient11674"
+ id="linearGradient21788"
+ gradientUnits="userSpaceOnUse"
+ x1="1162.5912"
+ y1="900.18634"
+ x2="1162.5912"
+ y2="887.43439" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient11612"
+ id="linearGradient21790"
+ gradientUnits="userSpaceOnUse"
+ x1="1162.175"
+ y1="900.71698"
+ x2="1162.175"
+ y2="887.07147" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient11704"
+ id="linearGradient21792"
+ gradientUnits="userSpaceOnUse"
+ x1="1155.0051"
+ y1="899.98523"
+ x2="1165.5482"
+ y2="893.3504" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient11704"
+ id="linearGradient21794"
+ gradientUnits="userSpaceOnUse"
+ x1="1155.0051"
+ y1="899.98523"
+ x2="1165.5482"
+ y2="893.3504" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10138"
+ id="radialGradient21796"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(-2.59043, 0, 0, -2.5, -5476.5, -3228.5)"
+ cx="-1535.4552"
+ cy="-853"
+ fx="-1535.4552"
+ fy="-853"
+ r="10" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient11704"
+ id="linearGradient21798"
+ gradientUnits="userSpaceOnUse"
+ x1="1162"
+ y1="889.0058"
+ x2="1162"
+ y2="900.71698" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient11804"
+ id="linearGradient21800"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.173913, 0, 0, 1, 1129.96, -322)"
+ x1="-17"
+ y1="-1194.6378"
+ x2="144"
+ y2="-1194.6378" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8903"
+ id="linearGradient21802"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.666667, 0, 0, 0.666667, 700.333, -448.879)"
+ x1="529.25"
+ y1="-1568.6378"
+ x2="535.43829"
+ y2="-1574.826" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient11804"
+ id="linearGradient21804"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.447206, 0, 0, 1, 1066.6, -307)"
+ x1="-17"
+ y1="-1194.6378"
+ x2="144"
+ y2="-1194.6378" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient11513-4"
+ id="linearGradient21806"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(0, -0.4503)"
+ x1="1171.25"
+ y1="-1513.3878"
+ x2="1171.25"
+ y2="-1575.6378" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9563"
+ id="radialGradient21808"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(-3.10851, 0, 0, -4.52476, -3195.58, -4994.39)"
+ cx="-1535.2125"
+ cy="-848.91748"
+ fx="-1535.2125"
+ fy="-848.91748"
+ r="10" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10125-2"
+ id="linearGradient21810"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.00399, 0, 0, 1.00959, -1.49914, -9.36636)"
+ x1="120.32183"
+ y1="-1409.7455"
+ x2="120.32183"
+ y2="-1156.1783" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10125-2"
+ id="linearGradient21812"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.00399, 0, 0, 1.00959, -1.49914, -9.36636)"
+ x1="120.32183"
+ y1="-1409.7455"
+ x2="120.32183"
+ y2="-1156.1783" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10125-2"
+ id="linearGradient21814"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.00399, 0, 0, 1.00959, -1.49914, -9.36636)"
+ x1="120.32183"
+ y1="-1409.7455"
+ x2="120.32183"
+ y2="-1156.1783" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient14486-9"
+ id="linearGradient21859"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(15.9995, 0, 0, 15.9955, -279.247, -17311.2)"
+ x1="26.993208"
+ y1="992.62183"
+ x2="26.993208"
+ y2="1008.6921" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient14486-9"
+ id="linearGradient21861"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(15.9995, 0, 0, 15.9955, -279.247, -17311.2)"
+ x1="26.993208"
+ y1="992.62183"
+ x2="26.993208"
+ y2="1008.6921" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient14486-9"
+ id="linearGradient21863"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(15.9995, 0, 0, 15.9955, -279.247, -17311.2)"
+ x1="26.993208"
+ y1="992.62183"
+ x2="26.993208"
+ y2="1008.6921" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8754"
+ id="linearGradient21865"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(2, 0, 0, 2.00002, -1069, 630.656)"
+ x1="1278"
+ y1="-1062.6379"
+ x2="1278"
+ y2="-1118.6379" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8742"
+ id="linearGradient21867"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(-1, 0, 0, 1, 2865, -1753.64)"
+ x1="1559.5"
+ y1="184"
+ x2="1542.0002"
+ y2="184" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8742"
+ id="linearGradient21869"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-123, -1753.64)"
+ x1="1559.5"
+ y1="184"
+ x2="1542.0002"
+ y2="184" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8717"
+ id="radialGradient21871"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(4.06286e-06, 1.01528, -4.27735, 0, -1857.01, -1670.52)"
+ cx="152.3331"
+ cy="-754.6377"
+ fx="152.3331"
+ fy="-754.6377"
+ r="15" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8964"
+ id="linearGradient21873"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(2, 0, 0, 2, 513, -3495.64)"
+ x1="453.50003"
+ y1="970.5"
+ x2="404.49997"
+ y2="970.5" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8663"
+ id="linearGradient21875"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(0.022825, 4.5e-05)"
+ x1="1322.0002"
+ y1="-1568.5111"
+ x2="1419.0002"
+ y2="-1568.5111" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient14494"
+ id="radialGradient21877"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.959821, 0, 1.35768e-07, 0.268231, 21.681, 534.374)"
+ cx="518.85358"
+ cy="730.48431"
+ fx="518.85358"
+ fy="730.48431"
+ r="22.889726" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8984"
+ id="linearGradient21881"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.984483, 0, 0, 0.972527, -100.349, -1748.97)"
+ x1="1510.4767"
+ y1="169.00002"
+ x2="1485.8766"
+ y2="193.9996" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9030"
+ id="linearGradient21883"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.976263, 0.126435, -0.367421, 0.97673, -556.181, -210.596)"
+ x1="1354.5677"
+ y1="-1522.3585"
+ x2="1383.3801"
+ y2="-1543.9813" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8859"
+ id="linearGradient21885"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(0, -0.4994)"
+ x1="1372.8844"
+ y1="-1544.3895"
+ x2="1372.8844"
+ y2="-1558.6382" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient16134-3-1-8"
+ id="radialGradient21899"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(7.93527e-07, 0.169213, -0.835421, 0, 197.029, -1517.95)"
+ cx="152.3331"
+ cy="-754.6377"
+ fx="152.3331"
+ fy="-754.6377"
+ r="15" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10423"
+ id="linearGradient21901"
+ gradientUnits="userSpaceOnUse"
+ x1="850.25"
+ y1="-1506.5753"
+ x2="850.25"
+ y2="-1510.5831" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10144"
+ id="linearGradient21903"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.66667, 0, 0, 7, -91.6668, 9465.83)"
+ x1="529.25"
+ y1="-1568.6378"
+ x2="535"
+ y2="-1574.6378" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8074-2"
+ id="linearGradient21905"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.286106, 0, 0, 1, 857.864, -364)"
+ x1="-17"
+ y1="-1194.6378"
+ x2="144"
+ y2="-1194.6378" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8074-2"
+ id="linearGradient21907"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.186336, 0, 0, 1, 813.168, -365)"
+ x1="-17"
+ y1="-1194.6378"
+ x2="144"
+ y2="-1194.6378" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient11600"
+ id="linearGradient21909"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.509317, 0, 0, 1, -1588.98, 403.638)"
+ x1="-17"
+ y1="-1194.6378"
+ x2="144"
+ y2="-1194.6378" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10478"
+ id="linearGradient22171"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.64102, 0, 0, 0.500001, 2374.52, -746.817)"
+ x1="815.12506"
+ y1="-1491.6379"
+ x2="815.12506"
+ y2="-1543.6378" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10331"
+ id="linearGradient22173"
+ gradientUnits="userSpaceOnUse"
+ x1="3793.25"
+ y1="-1603.6466"
+ x2="3793.25"
+ y2="-1561.3872" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9981"
+ id="linearGradient22175"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.90625, 0, 0, 1.85714, -3264.03, 477.832)"
+ x1="3658.22"
+ y1="-1076.6246"
+ x2="3658.22"
+ y2="-1117.8441" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10303"
+ id="linearGradient22179"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.01667, 0, 0, 1.1, -62.1745, 148.467)"
+ x1="3682"
+ y1="-1515.0027"
+ x2="3682"
+ y2="-1494.8434" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10412"
+ id="linearGradient22181"
+ gradientUnits="userSpaceOnUse"
+ x1="3669.4517"
+ y1="-1068.8184"
+ x2="3669.4517"
+ y2="-1073.573" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10412"
+ id="linearGradient22183"
+ gradientUnits="userSpaceOnUse"
+ x1="3669.4517"
+ y1="-1068.8184"
+ x2="3669.4517"
+ y2="-1073.573" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10412"
+ id="linearGradient22185"
+ gradientUnits="userSpaceOnUse"
+ x1="3669.4517"
+ y1="-1068.8184"
+ x2="3669.4517"
+ y2="-1073.573" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10412"
+ id="linearGradient22187"
+ gradientUnits="userSpaceOnUse"
+ x1="3669.4517"
+ y1="-1068.8184"
+ x2="3669.4517"
+ y2="-1073.573" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10412"
+ id="linearGradient22189"
+ gradientUnits="userSpaceOnUse"
+ x1="3669.4517"
+ y1="-1068.8184"
+ x2="3669.4517"
+ y2="-1073.573" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10412"
+ id="linearGradient22191"
+ gradientUnits="userSpaceOnUse"
+ x1="3669.4517"
+ y1="-1068.8184"
+ x2="3669.4517"
+ y2="-1073.573" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10412"
+ id="linearGradient22193"
+ gradientUnits="userSpaceOnUse"
+ x1="3669.4517"
+ y1="-1068.8184"
+ x2="3669.4517"
+ y2="-1073.573" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10412"
+ id="linearGradient22195"
+ gradientUnits="userSpaceOnUse"
+ x1="3669.4517"
+ y1="-1068.8184"
+ x2="3669.4517"
+ y2="-1073.573" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9860"
+ id="linearGradient22197"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(12.0378, 0, 0, 12.0329, -41007.4, -9931.87)"
+ x1="3715.8936"
+ y1="693.0368"
+ x2="3715.8936"
+ y2="695.84778" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9860-2"
+ id="linearGradient22199"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(12.0378, 0, 0, 12.0329, -41007.4, -9931.87)"
+ x1="3715.8936"
+ y1="694.65692"
+ x2="3715.8936"
+ y2="696.49622" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10295"
+ id="linearGradient22201"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.745342, 0, 0, 1, 3682.67, -329)"
+ x1="-17"
+ y1="-1194.6378"
+ x2="144"
+ y2="-1194.6378" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10216"
+ id="linearGradient22213"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(2.5, 0, 0, 6.33333, 2347.5, 8412.07)"
+ x1="529.25"
+ y1="-1568.6378"
+ x2="535"
+ y2="-1574.6378" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10341"
+ id="linearGradient22215"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.459627, 0, 0, 1, -1589.82, -2476.36)"
+ x1="-17"
+ y1="-1194.6378"
+ x2="144"
+ y2="-1194.6378" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8074-2"
+ id="linearGradient22217"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.482919, 0, 0, 1, -1591.18, -2474.36)"
+ x1="-17"
+ y1="-1194.6378"
+ x2="144"
+ y2="-1194.6378" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient7931-2"
+ id="linearGradient22219"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.243902, 0, 0, 0.243902, 3752.93, -1205.75)"
+ x1="152"
+ y1="-1192.6378"
+ x2="113.88176"
+ y2="-1230.7561" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient7303-9"
+ id="linearGradient22221"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(3301, -1793.64)"
+ x1="364.8671"
+ y1="300.81857"
+ x2="389.10162"
+ y2="276.58405" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8074-2"
+ id="linearGradient22223"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.136646, 0, 0, 0.999984, -1515.31, -2474.38)"
+ x1="-17"
+ y1="-1194.6378"
+ x2="144"
+ y2="-1194.6378" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient13374"
+ id="linearGradient22252"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(4.00013, 0, 0, 4, -875.027, 1971.85)"
+ x1="209.0625"
+ y1="-755.38788"
+ x2="209.0625"
+ y2="-781.62268" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8074"
+ id="linearGradient22256"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.40062, 0, 0, 0.999984, -1106.33, -690.381)"
+ x1="-17"
+ y1="-1194.6378"
+ x2="144"
+ y2="-1194.6378" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10286"
+ id="linearGradient22264"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(7.97915, 0, 0, 8.01241, -2383.61, -3106.53)"
+ x1="294.3429"
+ y1="256.58133"
+ x2="294.41818"
+ y2="243.13852" />
+ <linearGradient
+ id="linearGradient10292-0"
+ inkscape:collect="always">
+ <stop
+ id="stop10294-32"
+ offset="0"
+ style="stop-color: rgb(102, 102, 102); stop-opacity: 1;" />
+ <stop
+ id="stop10296-61"
+ offset="1"
+ style="stop-color: rgb(51, 51, 51); stop-opacity: 1;" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10292-9-2-6"
+ id="linearGradient11272"
+ gradientUnits="userSpaceOnUse"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.96875"
+ y2="992.375" />
+ <linearGradient
+ id="linearGradient10292-9-2-6"
+ inkscape:collect="always">
+ <stop
+ id="stop10294-9-9-7"
+ offset="0"
+ style="stop-color: rgb(102, 102, 102); stop-opacity: 1;" />
+ <stop
+ id="stop10296-6-6-7"
+ offset="1"
+ style="stop-color: rgb(51, 51, 51); stop-opacity: 1;" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9334-3"
+ id="linearGradient11250"
+ gradientUnits="userSpaceOnUse"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.96875"
+ y2="992.375" />
+ <linearGradient
+ id="linearGradient9334-3"
+ inkscape:collect="always">
+ <stop
+ id="stop9336-97"
+ offset="0"
+ style="stop-color: rgb(3, 105, 163); stop-opacity: 1;" />
+ <stop
+ id="stop9338-1"
+ offset="1"
+ style="stop-color: rgb(2, 63, 98); stop-opacity: 1;" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9334-46-41"
+ id="linearGradient11240"
+ gradientUnits="userSpaceOnUse"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.96875"
+ y2="992.375" />
+ <linearGradient
+ id="linearGradient9334-46-41"
+ inkscape:collect="always">
+ <stop
+ id="stop9336-9-08"
+ offset="0"
+ style="stop-color: rgb(3, 105, 163); stop-opacity: 1;" />
+ <stop
+ id="stop9338-9-08"
+ offset="1"
+ style="stop-color: rgb(2, 63, 98); stop-opacity: 1;" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9334-46-41"
+ id="linearGradient10610"
+ gradientUnits="userSpaceOnUse"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.96875"
+ y2="992.375" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10292-9-2-6"
+ id="linearGradient10600"
+ gradientUnits="userSpaceOnUse"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.96875"
+ y2="992.375" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10292-0"
+ id="linearGradient10580"
+ gradientUnits="userSpaceOnUse"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.96875"
+ y2="992.375" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9334-3"
+ id="linearGradient10101"
+ gradientUnits="userSpaceOnUse"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.96875"
+ y2="992.375" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10292-9-2-6"
+ id="linearGradient10091"
+ gradientUnits="userSpaceOnUse"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.96875"
+ y2="992.375" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient13214-1"
+ id="linearGradient10071"
+ gradientUnits="userSpaceOnUse"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.96875"
+ y2="992.375" />
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient13214-1">
+ <stop
+ style="stop-color: rgb(24, 163, 3); stop-opacity: 1;"
+ offset="0"
+ id="stop13216-8" />
+ <stop
+ style="stop-color: rgb(16, 104, 2); stop-opacity: 1;"
+ offset="1"
+ id="stop13218-3" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9334-3"
+ id="linearGradient9700"
+ gradientUnits="userSpaceOnUse"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.96875"
+ y2="992.375" />
+ <linearGradient
+ id="linearGradient13785-9"
+ inkscape:collect="always">
+ <stop
+ id="stop13787-6"
+ offset="0"
+ style="stop-color: rgb(163, 62, 3); stop-opacity: 1;" />
+ <stop
+ id="stop13789-2"
+ offset="1"
+ style="stop-color: rgb(98, 37, 2); stop-opacity: 1;" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10292-9-2-6"
+ id="linearGradient9690"
+ gradientUnits="userSpaceOnUse"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.96875"
+ y2="992.375" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient13214-1"
+ id="linearGradient9670"
+ gradientUnits="userSpaceOnUse"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.96875"
+ y2="992.375" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9334-3"
+ id="linearGradient7470"
+ gradientUnits="userSpaceOnUse"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.96875"
+ y2="992.375" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient13785-9"
+ id="linearGradient7105"
+ gradientUnits="userSpaceOnUse"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.96875"
+ y2="992.375" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9334-46-41"
+ id="linearGradient4767"
+ gradientUnits="userSpaceOnUse"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.96875"
+ y2="992.375" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9334-3"
+ id="linearGradient16012"
+ gradientUnits="userSpaceOnUse"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.96875"
+ y2="992.375" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10292-9-2-6"
+ id="linearGradient15478"
+ gradientUnits="userSpaceOnUse"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.96875"
+ y2="992.375" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9334-3"
+ id="linearGradient15110"
+ gradientUnits="userSpaceOnUse"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.96875"
+ y2="992.375" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9334-3"
+ id="linearGradient15050"
+ gradientUnits="userSpaceOnUse"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.96875"
+ y2="992.375" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9334-3"
+ id="linearGradient14449"
+ gradientUnits="userSpaceOnUse"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.96875"
+ y2="992.375" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10292-9-2-6"
+ id="linearGradient14101"
+ gradientUnits="userSpaceOnUse"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.96875"
+ y2="992.375" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10292-9-2-6"
+ id="linearGradient14047"
+ gradientUnits="userSpaceOnUse"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.96875"
+ y2="992.375" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10292-9-2-6"
+ id="linearGradient13979"
+ gradientUnits="userSpaceOnUse"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.96875"
+ y2="992.375" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9334-46-41"
+ id="linearGradient6343"
+ gradientUnits="userSpaceOnUse"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.96875"
+ y2="992.375" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient13214-1"
+ id="linearGradient8464"
+ gradientUnits="userSpaceOnUse"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.96875"
+ y2="992.375" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9334-46-41"
+ id="linearGradient6514"
+ gradientUnits="userSpaceOnUse"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.96875"
+ y2="992.375" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10292-9-2-6"
+ id="linearGradient23776"
+ gradientUnits="userSpaceOnUse"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.96875"
+ y2="992.375" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9334-3"
+ id="linearGradient16575"
+ gradientUnits="userSpaceOnUse"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.96875"
+ y2="992.375" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9334-46-41"
+ id="linearGradient16170"
+ gradientUnits="userSpaceOnUse"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.96875"
+ y2="992.375" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9334-46-41"
+ id="linearGradient14921"
+ gradientUnits="userSpaceOnUse"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.96875"
+ y2="992.375" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10292-0"
+ id="linearGradient30784"
+ gradientUnits="userSpaceOnUse"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.96875"
+ y2="992.375" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10292-9-2-6"
+ id="linearGradient30794"
+ gradientUnits="userSpaceOnUse"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.96875"
+ y2="992.375" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9334-46-41"
+ id="linearGradient30804"
+ gradientUnits="userSpaceOnUse"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.96875"
+ y2="992.375" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10292-0"
+ id="linearGradient30952"
+ gradientUnits="userSpaceOnUse"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.96875"
+ y2="992.375" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10292-0"
+ id="linearGradient30974"
+ gradientUnits="userSpaceOnUse"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.96875"
+ y2="992.375" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10292-0"
+ id="linearGradient30996"
+ gradientUnits="userSpaceOnUse"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.96875"
+ y2="992.375" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10292-0"
+ id="linearGradient31018"
+ gradientUnits="userSpaceOnUse"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.96875"
+ y2="992.375" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10292-0"
+ id="linearGradient31040"
+ gradientUnits="userSpaceOnUse"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.96875"
+ y2="992.375" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10292-0"
+ id="linearGradient31062"
+ gradientUnits="userSpaceOnUse"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.96875"
+ y2="992.375" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10292-0"
+ id="linearGradient31084"
+ gradientUnits="userSpaceOnUse"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.96875"
+ y2="992.375" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10292-9-2-6"
+ id="linearGradient31674"
+ gradientUnits="userSpaceOnUse"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.96875"
+ y2="992.375" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10292-9-2-6"
+ id="linearGradient31696"
+ gradientUnits="userSpaceOnUse"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.96875"
+ y2="992.375" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10292-9-2-6"
+ id="linearGradient31718"
+ gradientUnits="userSpaceOnUse"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.96875"
+ y2="992.375" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10292-9-2-6"
+ id="linearGradient31740"
+ gradientUnits="userSpaceOnUse"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.96875"
+ y2="992.375" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10292-9-2-6"
+ id="linearGradient31762"
+ gradientUnits="userSpaceOnUse"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.96875"
+ y2="992.375" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10292-9-2-6"
+ id="linearGradient31784"
+ gradientUnits="userSpaceOnUse"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.96875"
+ y2="992.375" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10292-9-2-6"
+ id="linearGradient31806"
+ gradientUnits="userSpaceOnUse"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.96875"
+ y2="992.375" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9334-46-41"
+ id="linearGradient31958"
+ gradientUnits="userSpaceOnUse"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.96875"
+ y2="992.375" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9334-46-41"
+ id="linearGradient31978"
+ gradientUnits="userSpaceOnUse"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.96875"
+ y2="992.375" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9334-46-41"
+ id="linearGradient31998"
+ gradientUnits="userSpaceOnUse"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.96875"
+ y2="992.375" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9334-46-41"
+ id="linearGradient32018"
+ gradientUnits="userSpaceOnUse"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.96875"
+ y2="992.375" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9334-46-41"
+ id="linearGradient32038"
+ gradientUnits="userSpaceOnUse"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.96875"
+ y2="992.375" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9334-46-41"
+ id="linearGradient32058"
+ gradientUnits="userSpaceOnUse"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.96875"
+ y2="992.375" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9334-46-41"
+ id="linearGradient32078"
+ gradientUnits="userSpaceOnUse"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.96875"
+ y2="992.375" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9334-46-3"
+ id="linearGradient14921-0"
+ gradientUnits="userSpaceOnUse"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.96875"
+ y2="992.375" />
+ <linearGradient
+ id="linearGradient9334-46-3"
+ inkscape:collect="always">
+ <stop
+ id="stop9336-9-9"
+ offset="0"
+ style="stop-color: rgb(3, 105, 163); stop-opacity: 1;" />
+ <stop
+ id="stop9338-9-02"
+ offset="1"
+ style="stop-color: rgb(2, 63, 98); stop-opacity: 1;" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9334-46-3"
+ id="linearGradient14917-9"
+ gradientUnits="userSpaceOnUse"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.96875"
+ y2="992.375" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9334-46-3"
+ id="linearGradient14919-3"
+ gradientUnits="userSpaceOnUse"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.96875"
+ y2="992.375" />
+ <linearGradient
+ id="linearGradient10286-3">
+ <stop
+ id="stop10288-8"
+ offset="0"
+ style="stop-color: rgb(179, 179, 179); stop-opacity: 1;" />
+ <stop
+ id="stop10290-7"
+ offset="1"
+ style="stop-color: rgb(230, 230, 230); stop-opacity: 1;" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9334-46-3"
+ id="linearGradient16170-2"
+ gradientUnits="userSpaceOnUse"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.96875"
+ y2="992.375" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9334-58"
+ id="linearGradient16166-3"
+ gradientUnits="userSpaceOnUse"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.96875"
+ y2="992.375" />
+ <linearGradient
+ id="linearGradient9334-58"
+ inkscape:collect="always">
+ <stop
+ id="stop9336-32"
+ offset="0"
+ style="stop-color: rgb(3, 105, 163); stop-opacity: 1;" />
+ <stop
+ id="stop9338-8"
+ offset="1"
+ style="stop-color: rgb(2, 63, 98); stop-opacity: 1;" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9334-46-3"
+ id="linearGradient16168-7"
+ gradientUnits="userSpaceOnUse"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.96875"
+ y2="992.375" />
+ <linearGradient
+ id="linearGradient9364-92">
+ <stop
+ style="stop-color: rgb(99, 187, 238); stop-opacity: 1;"
+ offset="0"
+ id="stop9366-9" />
+ <stop
+ style="stop-color: rgb(170, 220, 247); stop-opacity: 1;"
+ offset="1"
+ id="stop9368-5" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient10292-00"
+ inkscape:collect="always">
+ <stop
+ id="stop10294-49"
+ offset="0"
+ style="stop-color: rgb(102, 102, 102); stop-opacity: 1;" />
+ <stop
+ id="stop10296-4"
+ offset="1"
+ style="stop-color: rgb(51, 51, 51); stop-opacity: 1;" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9334-58"
+ id="linearGradient16575-7"
+ gradientUnits="userSpaceOnUse"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.96875"
+ y2="992.375" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9334-58"
+ id="linearGradient16571-9"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1, 0, 0, 1.00011, 0, -0.10551)"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.99982"
+ y2="991.87488" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9334-58"
+ id="linearGradient16573-9"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.00399, 0, 0, 1.00959, -1.49914, -9.36636)"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.96875"
+ y2="992.375" />
+ <linearGradient
+ id="linearGradient15606-1">
+ <stop
+ style="stop-color: rgb(255, 255, 255); stop-opacity: 0.588235;"
+ offset="0"
+ id="stop15608-0" />
+ <stop
+ style="stop-color: rgb(255, 255, 255); stop-opacity: 0.862745;"
+ offset="1"
+ id="stop15610-5" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10292-9-2-6-6"
+ id="linearGradient23776-9"
+ gradientUnits="userSpaceOnUse"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.96875"
+ y2="992.375" />
+ <linearGradient
+ id="linearGradient10292-9-2-6-6"
+ inkscape:collect="always">
+ <stop
+ id="stop10294-9-9-7-8"
+ offset="0"
+ style="stop-color: rgb(102, 102, 102); stop-opacity: 1;" />
+ <stop
+ id="stop10296-6-6-7-4"
+ offset="1"
+ style="stop-color: rgb(51, 51, 51); stop-opacity: 1;" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9334-46-3"
+ id="linearGradient23772-8"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1, 0, 0, 1.00011, 0, -0.10551)"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.99982"
+ y2="991.87488" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10501-8-2"
+ id="linearGradient23774-8"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.00399, 0, 0, 1.00959, -1.1658, -9.36636)"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.96875"
+ y2="992.375" />
+ <linearGradient
+ id="linearGradient10501-8-2">
+ <stop
+ style="stop-color: rgb(3, 105, 163); stop-opacity: 1;"
+ offset="0"
+ id="stop10503-6-2" />
+ <stop
+ style="stop-color: rgb(2, 63, 98); stop-opacity: 1;"
+ offset="1"
+ id="stop10505-6-0" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9334-46-3"
+ id="linearGradient6514-5"
+ gradientUnits="userSpaceOnUse"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.96875"
+ y2="992.375" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient13214-6"
+ id="linearGradient6510-0"
+ gradientUnits="userSpaceOnUse"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.96875"
+ y2="992.375" />
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient13214-6">
+ <stop
+ style="stop-color: rgb(24, 163, 3); stop-opacity: 1;"
+ offset="0"
+ id="stop13216-6" />
+ <stop
+ style="stop-color: rgb(16, 104, 2); stop-opacity: 1;"
+ offset="1"
+ id="stop13218-1" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient13214-6"
+ id="linearGradient6512-4"
+ gradientUnits="userSpaceOnUse"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.96875"
+ y2="992.375" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient13214-6"
+ id="linearGradient8464-7"
+ gradientUnits="userSpaceOnUse"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.96875"
+ y2="992.375" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient13214-6"
+ id="linearGradient8460-9"
+ gradientUnits="userSpaceOnUse"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.96875"
+ y2="992.375" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient13214-4-58"
+ id="linearGradient8462-0"
+ gradientUnits="userSpaceOnUse"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.96875"
+ y2="992.375" />
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient13214-4-58">
+ <stop
+ style="stop-color: rgb(24, 163, 3); stop-opacity: 1;"
+ offset="0"
+ id="stop13216-7-6" />
+ <stop
+ style="stop-color: rgb(16, 104, 2); stop-opacity: 1;"
+ offset="1"
+ id="stop13218-2-5" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient13220-7">
+ <stop
+ id="stop13222-5"
+ offset="0"
+ style="stop-color: rgb(146, 226, 133); stop-opacity: 1;" />
+ <stop
+ id="stop13224-7"
+ offset="1"
+ style="stop-color: rgb(204, 244, 198); stop-opacity: 1;" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9334-46-3"
+ id="linearGradient6343-9"
+ gradientUnits="userSpaceOnUse"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.96875"
+ y2="992.375" />
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient14486-1">
+ <stop
+ style="stop-color: rgb(142, 3, 163); stop-opacity: 1;"
+ offset="0"
+ id="stop14488-2" />
+ <stop
+ style="stop-color: rgb(83, 2, 96); stop-opacity: 1;"
+ offset="1"
+ id="stop14490-3" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient14486-1"
+ id="linearGradient6341-6"
+ gradientUnits="userSpaceOnUse"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.96875"
+ y2="992.375" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10292-9-2-6-6"
+ id="linearGradient13979-4"
+ gradientUnits="userSpaceOnUse"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.96875"
+ y2="992.375" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9334-58"
+ id="linearGradient13975-6"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1, 0, 0, 1.00011, 0, -0.10551)"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.99982"
+ y2="991.87488" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9334-58"
+ id="linearGradient13977-0"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.00399, 0, 0, 1.00959, -1.1658, -9.36636)"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.96875"
+ y2="992.375" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10292-9-2-6-6"
+ id="linearGradient14047-7"
+ gradientUnits="userSpaceOnUse"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.96875"
+ y2="992.375" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient13214-6"
+ id="linearGradient14043-3"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1, 0, 0, 1.00011, 0, -0.10551)"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.99982"
+ y2="991.87488" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient13214-6"
+ id="linearGradient14045-8"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.00399, 0, 0, 1.00959, -1.1658, -9.36636)"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.96875"
+ y2="992.375" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10292-9-2-6-6"
+ id="linearGradient14101-9"
+ gradientUnits="userSpaceOnUse"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.96875"
+ y2="992.375" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient14486-1"
+ id="linearGradient14097-7"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1, 0, 0, 1.00011, 0, -0.10551)"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.99982"
+ y2="991.87488" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient14486-1"
+ id="linearGradient14099-2"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.00399, 0, 0, 1.00959, -1.1658, -9.36636)"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.96875"
+ y2="992.375" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9334-58"
+ id="linearGradient14449-4"
+ gradientUnits="userSpaceOnUse"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.96875"
+ y2="992.375" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9334-58"
+ id="linearGradient14445-5"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1, 0, 0, 1.00011, 0, -0.10551)"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.99982"
+ y2="991.87488" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9334-58"
+ id="linearGradient14447-7"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.00399, 0, 0, 1.00959, -1.49914, -9.36636)"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.96875"
+ y2="992.375" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9334-58"
+ id="linearGradient15050-2"
+ gradientUnits="userSpaceOnUse"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.96875"
+ y2="992.375" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient14486-1"
+ id="linearGradient15046-9"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1, 0, 0, 1.00011, 0, -0.10551)"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.99982"
+ y2="991.87488" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9334-58"
+ id="linearGradient15110-3"
+ gradientUnits="userSpaceOnUse"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.96875"
+ y2="992.375" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient13214-6"
+ id="linearGradient15105-2"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1, 0, 0, 1.00011, 0, -0.10551)"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.99982"
+ y2="991.87488" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient13214-6"
+ id="linearGradient15108-4"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.00399, 0, 0, 1.00959, -1.49914, -9.36636)"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.96875"
+ y2="992.375" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10292-9-2-6-6"
+ id="linearGradient15478-2"
+ gradientUnits="userSpaceOnUse"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.96875"
+ y2="992.375" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient13214-6"
+ id="linearGradient15474-1"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1, 0, 0, 1.00011, 0, -0.10551)"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.99982"
+ y2="991.87488" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9334-58"
+ id="linearGradient16012-5"
+ gradientUnits="userSpaceOnUse"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.96875"
+ y2="992.375" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient13214-6"
+ id="linearGradient16008-9"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1, 0, 0, 1.00011, 0, -0.10551)"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.99982"
+ y2="991.87488" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient13214-6"
+ id="linearGradient16010-6"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.00399, 0, 0, 1.00959, -1.49914, -9.36636)"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.96875"
+ y2="992.375" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9334-46-3"
+ id="linearGradient4767-7"
+ gradientUnits="userSpaceOnUse"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.96875"
+ y2="992.375" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient13785-4"
+ id="linearGradient4763-5"
+ gradientUnits="userSpaceOnUse"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.96875"
+ y2="992.375" />
+ <linearGradient
+ id="linearGradient13785-4"
+ inkscape:collect="always">
+ <stop
+ id="stop13787-1"
+ offset="0"
+ style="stop-color: rgb(163, 62, 3); stop-opacity: 1;" />
+ <stop
+ id="stop13789-4"
+ offset="1"
+ style="stop-color: rgb(98, 37, 2); stop-opacity: 1;" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient13785-4"
+ id="linearGradient4765-3"
+ gradientUnits="userSpaceOnUse"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.96875"
+ y2="992.375" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient13785-4"
+ id="linearGradient7105-9"
+ gradientUnits="userSpaceOnUse"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.96875"
+ y2="992.375" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient13785-4"
+ id="linearGradient7101-1"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1, 0, 0, 1.00011, 0, -0.10551)"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.99982"
+ y2="991.87488" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient13785-4"
+ id="linearGradient7103-2"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.00399, 0, 0, 1.00959, -1.1658, -9.36636)"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.96875"
+ y2="992.375" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9334-58"
+ id="linearGradient7470-3"
+ gradientUnits="userSpaceOnUse"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.96875"
+ y2="992.375" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient13785-4"
+ id="linearGradient7466-8"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1, 0, 0, 1.00011, 0, -0.10551)"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.99982"
+ y2="991.87488" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient13785-4"
+ id="linearGradient7468-5"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.00399, 0, 0, 1.00959, -1.49914, -9.36636)"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.96875"
+ y2="992.375" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient13214-6"
+ id="linearGradient9670-7"
+ gradientUnits="userSpaceOnUse"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.96875"
+ y2="992.375" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient13785-4"
+ id="linearGradient9666-8"
+ gradientUnits="userSpaceOnUse"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.96875"
+ y2="992.375" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient13785-4"
+ id="linearGradient9668-0"
+ gradientUnits="userSpaceOnUse"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.96875"
+ y2="992.375" />
+ <linearGradient
+ id="linearGradient6989-0">
+ <stop
+ id="stop6991-3"
+ offset="0"
+ style="stop-color: rgb(240, 158, 111); stop-opacity: 1;" />
+ <stop
+ id="stop6993-6"
+ offset="1"
+ style="stop-color: rgb(249, 207, 181); stop-opacity: 1;" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10292-9-2-6-6"
+ id="linearGradient9690-5"
+ gradientUnits="userSpaceOnUse"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.96875"
+ y2="992.375" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient13785-4"
+ id="linearGradient9686-4"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1, 0, 0, 1.00011, 0, -0.10551)"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.99982"
+ y2="991.87488" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient13785-4"
+ id="linearGradient9688-3"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.00399, 0, 0, 1.00959, -1.1658, -9.36636)"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.96875"
+ y2="992.375" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9334-58"
+ id="linearGradient9700-9"
+ gradientUnits="userSpaceOnUse"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.96875"
+ y2="992.375" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient13785-4"
+ id="linearGradient9696-3"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1, 0, 0, 1.00011, 0, -0.10551)"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.99982"
+ y2="991.87488" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient13214-6"
+ id="linearGradient10071-3"
+ gradientUnits="userSpaceOnUse"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.96875"
+ y2="992.375" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10125-12"
+ id="linearGradient10067-1"
+ gradientUnits="userSpaceOnUse"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.96875"
+ y2="992.375" />
+ <linearGradient
+ id="linearGradient10125-12">
+ <stop
+ style="stop-color: rgb(201, 156, 0); stop-opacity: 1;"
+ offset="0"
+ id="stop10127-04" />
+ <stop
+ style="stop-color: rgb(135, 105, 0); stop-opacity: 1;"
+ offset="1"
+ id="stop10129-4" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient6975-8">
+ <stop
+ id="stop6977-2"
+ offset="0"
+ style="stop-color: rgb(245, 206, 83); stop-opacity: 1;" />
+ <stop
+ id="stop6979-5"
+ offset="1"
+ style="stop-color: rgb(253, 233, 169); stop-opacity: 1;" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10292-9-2-6-6"
+ id="linearGradient10091-2"
+ gradientUnits="userSpaceOnUse"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.96875"
+ y2="992.375" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9334-58"
+ id="linearGradient10101-3"
+ gradientUnits="userSpaceOnUse"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.96875"
+ y2="992.375" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10125-12"
+ id="linearGradient10097-5"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1, 0, 0, 1.00011, 0, -0.10551)"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.99982"
+ y2="991.87488" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10125-12"
+ id="linearGradient10099-1"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.00399, 0, 0, 1.00959, -1.49914, -9.36636)"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.96875"
+ y2="992.375" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10292-00"
+ id="linearGradient10580-7"
+ gradientUnits="userSpaceOnUse"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.96875"
+ y2="992.375" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10125-12"
+ id="linearGradient10578-8"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.00399, 0, 0, 1.00959, -1.49914, -9.36636)"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.96875"
+ y2="992.375" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10286-3"
+ id="linearGradient10582-9"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.99475, 0, 0, 2.0031, -643.141, -1269.6)"
+ x1="294.3429"
+ y1="256.58133"
+ x2="294.41818"
+ y2="243.13852" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient15606-1"
+ id="linearGradient10584-6"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-266)"
+ x1="209.0625"
+ y1="-765.46082"
+ x2="209.0625"
+ y2="-781.62268" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10292-9-2-6-6"
+ id="linearGradient10600-2"
+ gradientUnits="userSpaceOnUse"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.96875"
+ y2="992.375" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10125-12"
+ id="linearGradient10596-0"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1, 0, 0, 1.00011, 0, -0.10551)"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.99982"
+ y2="991.87488" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10125-12"
+ id="linearGradient10598-1"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.00399, 0, 0, 1.00959, -1.1658, -9.36636)"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.96875"
+ y2="992.375" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10286-3"
+ id="linearGradient10602-2"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(2.99213, 0, 0, 3.00466, -933.712, -1623.08)"
+ x1="294.3429"
+ y1="256.58133"
+ x2="294.41818"
+ y2="243.13852" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient15606-1"
+ id="linearGradient10604-5"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.5, 0, 0, 1.5, -368, 281.32)"
+ x1="209.0625"
+ y1="-765.46082"
+ x2="209.0625"
+ y2="-781.62268" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9334-46-3"
+ id="linearGradient10610-4"
+ gradientUnits="userSpaceOnUse"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.96875"
+ y2="992.375" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10125-12"
+ id="linearGradient10606-3"
+ gradientUnits="userSpaceOnUse"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.96875"
+ y2="992.375" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10125-12"
+ id="linearGradient10608-8"
+ gradientUnits="userSpaceOnUse"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.96875"
+ y2="992.375" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10286-3"
+ id="linearGradient10612-4"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.997389, 0, 0, 1.00194, -353.578, -948.221)"
+ x1="294.41818"
+ y1="256.9838"
+ x2="294.41818"
+ y2="243.13852" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9334-46-3"
+ id="linearGradient11240-0"
+ gradientUnits="userSpaceOnUse"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.96875"
+ y2="992.375" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10292-00"
+ id="linearGradient11236-2"
+ gradientUnits="userSpaceOnUse"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.96875"
+ y2="992.375" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10292-00"
+ id="linearGradient11238-9"
+ gradientUnits="userSpaceOnUse"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.96875"
+ y2="992.375" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9334-58"
+ id="linearGradient11250-3"
+ gradientUnits="userSpaceOnUse"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.96875"
+ y2="992.375" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10292-00"
+ id="linearGradient11246-5"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1, 0, 0, 1.00011, 0, -0.10551)"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.99982"
+ y2="991.87488" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10292-9-2-6-6"
+ id="linearGradient11272-9"
+ gradientUnits="userSpaceOnUse"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.96875"
+ y2="992.375" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10292-9-2"
+ id="linearGradient11268-9"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1, 0, 0, 1.00011, 0, -0.10551)"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.99982"
+ y2="991.87488" />
+ <linearGradient
+ id="linearGradient10292-9-2"
+ inkscape:collect="always">
+ <stop
+ id="stop10294-9-4"
+ offset="0"
+ style="stop-color: rgb(102, 102, 102); stop-opacity: 1;" />
+ <stop
+ id="stop10296-6-0"
+ offset="1"
+ style="stop-color: rgb(51, 51, 51); stop-opacity: 1;" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10292-9-2"
+ id="linearGradient11270-5"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.00399, 0, 0, 1.00959, -1.1658, -9.36636)"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.96875"
+ y2="992.375" />
+ <linearGradient
+ y2="992.375"
+ x2="110.96875"
+ y1="976.29968"
+ x1="110.96875"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient35886"
+ xlink:href="#linearGradient10292-00"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="992.375"
+ x2="110.96875"
+ y1="976.29968"
+ x1="110.96875"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient35896"
+ xlink:href="#linearGradient10292-9-2-6-6"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="992.375"
+ x2="110.96875"
+ y1="976.29968"
+ x1="110.96875"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient35906"
+ xlink:href="#linearGradient9334-46-3"
+ inkscape:collect="always" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient14486-1"
+ id="linearGradient43234"
+ gradientUnits="userSpaceOnUse"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.96875"
+ y2="992.375" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10292-9-2-6-6"
+ id="linearGradient43236"
+ gradientUnits="userSpaceOnUse"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.96875"
+ y2="992.375" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient14486-1"
+ id="linearGradient43242"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.00399, 0, 0, 1.00959, -1.49914, -9.36636)"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.96875"
+ y2="992.375" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9334-58"
+ id="linearGradient43244"
+ gradientUnits="userSpaceOnUse"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.96875"
+ y2="992.375" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient13214-6"
+ id="linearGradient43248"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.00399, 0, 0, 1.00959, -1.1658, -9.36636)"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.96875"
+ y2="992.375" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient13785-4"
+ id="linearGradient43254"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.00399, 0, 0, 1.00959, -1.49914, -9.36636)"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.96875"
+ y2="992.375" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10125-12"
+ id="linearGradient43258"
+ gradientUnits="userSpaceOnUse"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.96875"
+ y2="992.375" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10125-12"
+ id="linearGradient43260"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1, 0, 0, 1.00011, 0, -0.10551)"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.99982"
+ y2="991.87488" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10125-12"
+ id="linearGradient43262"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.00399, 0, 0, 1.00959, -1.1658, -9.36636)"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.96875"
+ y2="992.375" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10125-12"
+ id="linearGradient43264"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1, 0, 0, 1.00011, 0, -0.10551)"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.99982"
+ y2="991.87488" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10292-00"
+ id="linearGradient43266"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.00399, 0, 0, 1.00959, -1.49914, -9.36636)"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.96875"
+ y2="992.375" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10292-00"
+ id="linearGradient43482"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1, 0, 0, 1.00011, 0, -0.10551)"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.99982"
+ y2="991.87488" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10292-00"
+ id="linearGradient43484"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.00399, 0, 0, 1.00959, -1.49914, -9.36636)"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.96875"
+ y2="992.375" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10292-00"
+ id="linearGradient43486"
+ gradientUnits="userSpaceOnUse"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.96875"
+ y2="992.375" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10286-3"
+ id="linearGradient43488"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.99475, 0, 0, 2.0031, -643.141, -1269.6)"
+ x1="294.3429"
+ y1="256.58133"
+ x2="294.41818"
+ y2="243.13852" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient15606-1"
+ id="linearGradient43490"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-266)"
+ x1="209.0625"
+ y1="-765.46082"
+ x2="209.0625"
+ y2="-781.62268" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10292-00"
+ id="linearGradient43492"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1, 0, 0, 1.00011, 0, -0.10551)"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.99982"
+ y2="991.87488" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10292-00"
+ id="linearGradient43494"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.00399, 0, 0, 1.00959, -1.1658, -9.36636)"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.96875"
+ y2="992.375" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10292-9-2-6-6"
+ id="linearGradient43496"
+ gradientUnits="userSpaceOnUse"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.96875"
+ y2="992.375" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10286-3"
+ id="linearGradient43498"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(2.99213, 0, 0, 3.00466, -933.712, -1623.08)"
+ x1="294.3429"
+ y1="256.58133"
+ x2="294.41818"
+ y2="243.13852" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient15606-1"
+ id="linearGradient43500"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.5, 0, 0, 1.5, -368, 281.32)"
+ x1="209.0625"
+ y1="-765.46082"
+ x2="209.0625"
+ y2="-781.62268" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10292-00"
+ id="linearGradient43502"
+ gradientUnits="userSpaceOnUse"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.96875"
+ y2="992.375" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10292-00"
+ id="linearGradient43504"
+ gradientUnits="userSpaceOnUse"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.96875"
+ y2="992.375" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9334-46-3"
+ id="linearGradient43506"
+ gradientUnits="userSpaceOnUse"
+ x1="110.96875"
+ y1="976.29968"
+ x2="110.96875"
+ y2="992.375" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10286-3"
+ id="linearGradient43508"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.997389, 0, 0, 1.00194, -353.578, -948.221)"
+ x1="294.41818"
+ y1="256.9838"
+ x2="294.41818"
+ y2="243.13852" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient15606-1"
+ id="linearGradient43568"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.5, 0, 0, 1.5, 2774, 281.32)"
+ x1="209.0625"
+ y1="-765.46082"
+ x2="209.0625"
+ y2="-781.62268" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10286-3"
+ id="linearGradient43571"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(2.99213, 0, 0, 3.00466, 2208.29, -1623.08)"
+ x1="294.3429"
+ y1="256.58133"
+ x2="294.41818"
+ y2="243.13852" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient15606-1"
+ id="linearGradient43603"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(2876, 1.6925e-06)"
+ x1="209.0625"
+ y1="-765.46082"
+ x2="209.0625"
+ y2="-781.62268" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10286-3"
+ id="linearGradient43606"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.99475, 0, 0, 2.0031, 2498.86, -1269.6)"
+ x1="294.3429"
+ y1="256.58133"
+ x2="294.41818"
+ y2="243.13852" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10292-00"
+ id="linearGradient43612"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(2969, -1743)"
+ x1="111.94384"
+ y1="1036.3418"
+ x2="111.94384"
+ y2="1052.4286" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10286-3"
+ id="linearGradient43616"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.997389, 0, 0, 1.00194, 2788.42, -948.221)"
+ x1="294.41818"
+ y1="256.9838"
+ x2="294.41818"
+ y2="243.13852" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient15606-1"
+ id="linearGradient43707"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(2354, 1.6925e-06)"
+ x1="209.0625"
+ y1="-765.46082"
+ x2="209.0625"
+ y2="-781.62268" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6975-8"
+ id="linearGradient43710"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.99475, 0, 0, 2.0031, 1976.86, -1269.6)"
+ x1="294.3429"
+ y1="256.58133"
+ x2="294.41818"
+ y2="243.13852" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient15606-1"
+ id="linearGradient43744"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.5, 0, 0, 1.5, 2252, 281.32)"
+ x1="209.0625"
+ y1="-765.46082"
+ x2="209.0625"
+ y2="-781.62268" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6975-8"
+ id="linearGradient43747"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(2.99213, 0, 0, 3.00466, 1686.29, -1623.08)"
+ x1="294.3429"
+ y1="256.58133"
+ x2="294.41818"
+ y2="243.13852" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6975-8"
+ id="linearGradient43767"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.997389, 0, 0, 1.00194, 2266.42, -948.221)"
+ x1="294.41818"
+ y1="256.9838"
+ x2="294.41818"
+ y2="243.13852" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient15606-1"
+ id="linearGradient43818"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(2093, 1.6925e-06)"
+ x1="209.0625"
+ y1="-765.46082"
+ x2="209.0625"
+ y2="-781.62268" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6989-0"
+ id="linearGradient43821"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.99475, 0, 0, 2.0031, 1715.86, -1269.6)"
+ x1="294.3429"
+ y1="256.58133"
+ x2="294.41818"
+ y2="243.13852" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient15606-1"
+ id="linearGradient43855"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.5, 0, 0, 1.5, 1991, 281.32)"
+ x1="209.0625"
+ y1="-765.46082"
+ x2="209.0625"
+ y2="-781.62268" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6989-0"
+ id="linearGradient43858"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(2.99213, 0, 0, 3.00466, 1425.29, -1623.08)"
+ x1="294.3429"
+ y1="256.58133"
+ x2="294.41818"
+ y2="243.13852" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6989-0"
+ id="linearGradient43872"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.997389, 0, 0, 1.00194, 2005.42, -948.221)"
+ x1="294.41818"
+ y1="256.9838"
+ x2="294.41818"
+ y2="243.13852" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient15606-1"
+ id="linearGradient43913"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(522, 1.6925e-06)"
+ x1="209.0625"
+ y1="-765.46082"
+ x2="209.0625"
+ y2="-781.62268" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10286-3"
+ id="linearGradient43916"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.99475, 0, 0, 2.0031, 144.859, -1269.6)"
+ x1="294.3429"
+ y1="256.58133"
+ x2="294.41818"
+ y2="243.13852" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient15606-1"
+ id="linearGradient43922"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.5, 0, 0, 1.5, 420, 281.32)"
+ x1="209.0625"
+ y1="-765.46082"
+ x2="209.0625"
+ y2="-781.62268" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10286-3"
+ id="linearGradient43925"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(2.99213, 0, 0, 3.00466, -145.712, -1623.08)"
+ x1="294.3429"
+ y1="256.58133"
+ x2="294.41818"
+ y2="243.13852" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10286-3"
+ id="linearGradient43932"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.997389, 0, 0, 1.00194, 434.422, -948.221)"
+ x1="294.41818"
+ y1="256.9838"
+ x2="294.41818"
+ y2="243.13852" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient15606-1"
+ id="linearGradient43966"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(1832, 1.6925e-06)"
+ x1="209.0625"
+ y1="-765.46082"
+ x2="209.0625"
+ y2="-781.62268" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient13220-7"
+ id="linearGradient43969"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.99475, 0, 0, 2.0031, 1454.86, -1269.6)"
+ x1="294.3429"
+ y1="256.58133"
+ x2="294.41818"
+ y2="243.13852" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient15606-1"
+ id="linearGradient44003"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.5, 0, 0, 1.5, 1730, 281.32)"
+ x1="209.0625"
+ y1="-765.46082"
+ x2="209.0625"
+ y2="-781.62268" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient13220-7"
+ id="linearGradient44006"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(2.99213, 0, 0, 3.00466, 1164.29, -1623.08)"
+ x1="294.3429"
+ y1="256.58133"
+ x2="294.41818"
+ y2="243.13852" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient15606-1"
+ id="linearGradient44012"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(261, 1.6925e-06)"
+ x1="209.0625"
+ y1="-765.46082"
+ x2="209.0625"
+ y2="-781.62268" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10286-3"
+ id="linearGradient44015"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.99475, 0, 0, 2.0031, -116.141, -1269.6)"
+ x1="294.3429"
+ y1="256.58133"
+ x2="294.41818"
+ y2="243.13852" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient15606-1"
+ id="linearGradient44021"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(1044, 1.6925e-06)"
+ x1="209.0625"
+ y1="-765.46082"
+ x2="209.0625"
+ y2="-781.62268" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10286-3"
+ id="linearGradient44024"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.99475, 0, 0, 2.0031, 666.859, -1269.6)"
+ x1="294.3429"
+ y1="256.58133"
+ x2="294.41818"
+ y2="243.13852" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient15606-1"
+ id="linearGradient44030"
+ gradientUnits="userSpaceOnUse"
+ x1="209.0625"
+ y1="-765.46082"
+ x2="209.0625"
+ y2="-781.62268"
+ gradientTransform="translate(1.72768e-06, 1.6925e-06)" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10286-3"
+ id="linearGradient44033"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.99475, 0, 0, 2.0031, -377.141, -1269.6)"
+ x1="294.3429"
+ y1="256.58133"
+ x2="294.41818"
+ y2="243.13852" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient15606-1"
+ id="linearGradient44039"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.5, 0, 0, 1.5, 942, 281.32)"
+ x1="209.0625"
+ y1="-765.46082"
+ x2="209.0625"
+ y2="-781.62268" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10286-3"
+ id="linearGradient44042"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(2.99213, 0, 0, 3.00466, 376.288, -1623.08)"
+ x1="294.3429"
+ y1="256.58133"
+ x2="294.41818"
+ y2="243.13852" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient15606-1"
+ id="linearGradient44048"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.5, 0, 0, 1.5, 159, 281.32)"
+ x1="209.0625"
+ y1="-765.46082"
+ x2="209.0625"
+ y2="-781.62268" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10286-3"
+ id="linearGradient44051"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(2.99213, 0, 0, 3.00466, -406.712, -1623.08)"
+ x1="294.3429"
+ y1="256.58133"
+ x2="294.41818"
+ y2="243.13852" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient15606-1"
+ id="linearGradient44057"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.5, 0, 0, 1.5, -102, 281.32)"
+ x1="209.0625"
+ y1="-765.46082"
+ x2="209.0625"
+ y2="-781.62268" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10286-3"
+ id="linearGradient44060"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(2.99213, 0, 0, 3.00466, -667.712, -1623.08)"
+ x1="294.3429"
+ y1="256.58133"
+ x2="294.41818"
+ y2="243.13852" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10286-3"
+ id="linearGradient44067"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.997389, 0, 0, 1.00194, 956.422, -948.221)"
+ x1="294.41818"
+ y1="256.9838"
+ x2="294.41818"
+ y2="243.13852" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient13220-7"
+ id="linearGradient44087"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.997389, 0, 0, 1.00194, 1744.42, -948.221)"
+ x1="294.41818"
+ y1="256.9838"
+ x2="294.41818"
+ y2="243.13852" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10286-3"
+ id="linearGradient44115"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.997389, 0, 0, 1.00194, 173.422, -948.221)"
+ x1="294.41818"
+ y1="256.9838"
+ x2="294.41818"
+ y2="243.13852" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient15606-1"
+ id="linearGradient44198"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.5, 0, 0, 1.5, 1469, 281.32)"
+ x1="209.0625"
+ y1="-765.46082"
+ x2="209.0625"
+ y2="-781.62268" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9364-92"
+ id="linearGradient44201"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(2.99213, 0, 0, 3.00466, 903.288, -1623.08)"
+ x1="294.3429"
+ y1="256.58133"
+ x2="294.41818"
+ y2="243.13852" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient15606-1"
+ id="linearGradient44239"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(1571, 1.6925e-06)"
+ x1="209.0625"
+ y1="-765.46082"
+ x2="209.0625"
+ y2="-781.62268" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9364-92"
+ id="linearGradient44242"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.99475, 0, 0, 2.0031, 1193.86, -1269.6)"
+ x1="294.3429"
+ y1="256.58133"
+ x2="294.41818"
+ y2="243.13852" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10292-00"
+ id="linearGradient44248"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(1664, -1743)"
+ x1="111.94384"
+ y1="1036.3418"
+ x2="111.94384"
+ y2="1052.4286" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9364-92"
+ id="linearGradient44252"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.997389, 0, 0, 1.00194, 1483.42, -948.221)"
+ x1="294.41818"
+ y1="256.9838"
+ x2="294.41818"
+ y2="243.13852" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10286-3"
+ id="linearGradient44259"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.997389, 0, 0, 1.00194, -87.5784, -948.221)"
+ x1="294.41818"
+ y1="256.9838"
+ x2="294.41818"
+ y2="243.13852" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9364-1"
+ id="linearGradient24499"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.241383, 0, 0, 0.23077, 2538.09, -514.489)"
+ x1="3404.9995"
+ y1="-1092.6378"
+ x2="3404.9995"
+ y2="-1117.6578" />
+ <linearGradient
+ id="linearGradient9364-1">
+ <stop
+ style="stop-color: rgb(99, 187, 238); stop-opacity: 1;"
+ offset="0"
+ id="stop9366-0" />
+ <stop
+ style="stop-color: rgb(170, 220, 247); stop-opacity: 1;"
+ offset="1"
+ id="stop9368-84" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9364-1"
+ id="linearGradient24563"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.241383, 0, 0, 0.23077, 2547.09, -514.489)"
+ x1="3404.9995"
+ y1="-1092.6378"
+ x2="3404.9995"
+ y2="-1117.6578" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9364-1"
+ id="linearGradient24567"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.241383, 0, 0, 0.23077, 2547.09, -507.49)"
+ x1="3404.9995"
+ y1="-1092.6378"
+ x2="3404.9995"
+ y2="-1117.6578" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9364-1"
+ id="linearGradient24571"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.241383, 0, 0, 0.23077, 2538.09, -507.489)"
+ x1="3404.9995"
+ y1="-1092.6378"
+ x2="3404.9995"
+ y2="-1117.6578" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9364-1"
+ id="linearGradient24365"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.379315, 0, 0, 0.346155, 2076.43, -490.416)"
+ x1="3404.9995"
+ y1="-1092.6378"
+ x2="3404.9995"
+ y2="-1117.6578" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9364-1"
+ id="linearGradient24369"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.379315, 0, 0, 0.346155, 2089.43, -490.416)"
+ x1="3404.9995"
+ y1="-1092.6378"
+ x2="3404.9995"
+ y2="-1117.6578" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9364-1"
+ id="linearGradient24373"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.379315, 0, 0, 0.346155, 2089.43, -479.416)"
+ x1="3404.9995"
+ y1="-1092.6378"
+ x2="3404.9995"
+ y2="-1117.6578" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9364-1"
+ id="linearGradient24377"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.379315, 0, 0, 0.346155, 2076.43, -479.416)"
+ x1="3404.9995"
+ y1="-1092.6378"
+ x2="3404.9995"
+ y2="-1117.6578" />
+ <linearGradient
+ id="linearGradient16134-3-1-9">
+ <stop
+ style="stop-color: rgb(0, 0, 0); stop-opacity: 0.501961;"
+ offset="0"
+ id="stop16136-6-3-9" />
+ <stop
+ style="stop-color: rgb(0, 0, 0); stop-opacity: 0;"
+ offset="1"
+ id="stop16138-4-6-6" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10286-6"
+ id="linearGradient151009"
+ x1="254.84375"
+ y1="1017.3622"
+ x2="254.84375"
+ y2="1031.363"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.22222, 0, 0, 1.33333, 4348.33, -2064.95)" />
+ <linearGradient
+ id="linearGradient10286-6">
+ <stop
+ id="stop10288-9"
+ offset="0"
+ style="stop-color: rgb(179, 179, 179); stop-opacity: 1;" />
+ <stop
+ id="stop10290-3"
+ offset="1"
+ style="stop-color: rgb(230, 230, 230); stop-opacity: 1;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient9334-46-1"
+ inkscape:collect="always">
+ <stop
+ id="stop9336-9-6"
+ offset="0"
+ style="stop-color: rgb(3, 105, 163); stop-opacity: 1;" />
+ <stop
+ id="stop9338-9-8"
+ offset="1"
+ style="stop-color: rgb(2, 63, 98); stop-opacity: 1;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient10501-8-62">
+ <stop
+ style="stop-color: rgb(3, 105, 163); stop-opacity: 1;"
+ offset="0"
+ id="stop10503-6-7" />
+ <stop
+ style="stop-color: rgb(2, 63, 98); stop-opacity: 1;"
+ offset="1"
+ id="stop10505-6-8" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient10292-3"
+ inkscape:collect="always">
+ <stop
+ id="stop10294-6"
+ offset="0"
+ style="stop-color: rgb(102, 102, 102); stop-opacity: 1;" />
+ <stop
+ id="stop10296-0"
+ offset="1"
+ style="stop-color: rgb(51, 51, 51); stop-opacity: 1;" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10501-8-62"
+ id="linearGradient13875"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.55551, 0, 0, 1.66668, -110.991, 476.437)"
+ x1="208.96875"
+ y1="-780.60657"
+ x2="208.96875"
+ y2="-766.66815" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9364-1"
+ id="linearGradient13877"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.5, 0, 0, 1.33334, -107, -48.1185)"
+ x1="230"
+ y1="-581.63782"
+ x2="230"
+ y2="-578.63782" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10292-3"
+ id="linearGradient13879"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.49995, 0, 0, 1.53335, -291.484, -2621.97)"
+ x1="345"
+ y1="1173"
+ x2="345"
+ y2="1178" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10501-8-62"
+ id="linearGradient13935"
+ gradientUnits="userSpaceOnUse"
+ x1="215"
+ y1="-824.63782"
+ x2="215"
+ y2="-802.63782" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10501-8-62"
+ id="linearGradient13923"
+ gradientUnits="userSpaceOnUse"
+ x1="215"
+ y1="-824.63782"
+ x2="215"
+ y2="-802.63782" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10501-8-62"
+ id="linearGradient13925"
+ gradientUnits="userSpaceOnUse"
+ x1="215"
+ y1="-824.63782"
+ x2="215"
+ y2="-802.63782" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10501-8-62"
+ id="linearGradient13927"
+ gradientUnits="userSpaceOnUse"
+ x1="215"
+ y1="-824.63782"
+ x2="215"
+ y2="-802.63782" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10501-8-62"
+ id="linearGradient13929"
+ gradientUnits="userSpaceOnUse"
+ x1="215"
+ y1="-824.63782"
+ x2="215"
+ y2="-802.63782" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10501-8-62"
+ id="linearGradient13931"
+ gradientUnits="userSpaceOnUse"
+ x1="215"
+ y1="-824.63782"
+ x2="215"
+ y2="-802.63782" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10501-8-62"
+ id="linearGradient13933"
+ gradientUnits="userSpaceOnUse"
+ x1="215"
+ y1="-824.63782"
+ x2="215"
+ y2="-802.63782" />
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient13214-4-4">
+ <stop
+ style="stop-color: rgb(24, 163, 3); stop-opacity: 1;"
+ offset="0"
+ id="stop13216-7-0" />
+ <stop
+ style="stop-color: rgb(16, 104, 2); stop-opacity: 1;"
+ offset="1"
+ id="stop13218-2-6" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient13214-3">
+ <stop
+ style="stop-color: rgb(24, 163, 3); stop-opacity: 1;"
+ offset="0"
+ id="stop13216-0" />
+ <stop
+ style="stop-color: rgb(16, 104, 2); stop-opacity: 1;"
+ offset="1"
+ id="stop13218-4" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient15606-6">
+ <stop
+ style="stop-color: rgb(255, 255, 255); stop-opacity: 0.588235;"
+ offset="0"
+ id="stop15608-8" />
+ <stop
+ style="stop-color: rgb(255, 255, 255); stop-opacity: 0.862745;"
+ offset="1"
+ id="stop15610-7" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient14494-5">
+ <stop
+ id="stop14496-5"
+ offset="0"
+ style="stop-color: rgb(220, 133, 233); stop-opacity: 1;" />
+ <stop
+ id="stop14498-1"
+ offset="1"
+ style="stop-color: rgb(242, 203, 248); stop-opacity: 1;" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient14494-5"
+ id="linearGradient9342"
+ gradientUnits="userSpaceOnUse"
+ x1="520.58502"
+ y1="735.05206"
+ x2="516.15179"
+ y2="720.86298" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10501-8-62"
+ id="linearGradient13985"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.55551, 0, 0, 1.66668, -110.991, 476.437)"
+ x1="208.96875"
+ y1="-780.60657"
+ x2="208.96875"
+ y2="-766.66815" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9364-1"
+ id="linearGradient13987"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.5, 0, 0, 1.33334, -107, -48.1185)"
+ x1="230"
+ y1="-581.63782"
+ x2="230"
+ y2="-578.63782" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10292-3"
+ id="linearGradient13989"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.49995, 0, 0, 1.53335, -291.484, -2621.97)"
+ x1="345"
+ y1="1173"
+ x2="345"
+ y2="1178" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10501-8-62"
+ id="linearGradient14003"
+ gradientUnits="userSpaceOnUse"
+ x1="215"
+ y1="-824.63782"
+ x2="215"
+ y2="-802.63782" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10501-8-62"
+ id="linearGradient13991"
+ gradientUnits="userSpaceOnUse"
+ x1="215"
+ y1="-824.63782"
+ x2="215"
+ y2="-802.63782" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10501-8-62"
+ id="linearGradient13993"
+ gradientUnits="userSpaceOnUse"
+ x1="215"
+ y1="-824.63782"
+ x2="215"
+ y2="-802.63782" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10501-8-62"
+ id="linearGradient13995"
+ gradientUnits="userSpaceOnUse"
+ x1="215"
+ y1="-824.63782"
+ x2="215"
+ y2="-802.63782" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10501-8-62"
+ id="linearGradient13997"
+ gradientUnits="userSpaceOnUse"
+ x1="215"
+ y1="-824.63782"
+ x2="215"
+ y2="-802.63782" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10501-8-62"
+ id="linearGradient13999"
+ gradientUnits="userSpaceOnUse"
+ x1="215"
+ y1="-824.63782"
+ x2="215"
+ y2="-802.63782" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10501-8-62"
+ id="linearGradient14001"
+ gradientUnits="userSpaceOnUse"
+ x1="215"
+ y1="-824.63782"
+ x2="215"
+ y2="-802.63782" />
+ <linearGradient
+ id="linearGradient14494-2-7">
+ <stop
+ id="stop14496-9-3"
+ offset="0"
+ style="stop-color: rgb(220, 133, 233); stop-opacity: 1;" />
+ <stop
+ id="stop14498-9-7"
+ offset="1"
+ style="stop-color: rgb(242, 203, 248); stop-opacity: 1;" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient14494-5"
+ id="linearGradient14109"
+ gradientUnits="userSpaceOnUse"
+ x1="520.58502"
+ y1="735.05206"
+ x2="516.15179"
+ y2="720.86298" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient14494-2-7"
+ id="linearGradient14113"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-125.5, -1702.64)"
+ x1="525.4375"
+ y1="836.1875"
+ x2="516.65625"
+ y2="828.5" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient14494-5"
+ id="linearGradient14115"
+ gradientUnits="userSpaceOnUse"
+ x1="520.58502"
+ y1="735.05206"
+ x2="516.15179"
+ y2="720.86298" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient14494-5"
+ id="linearGradient16245"
+ gradientUnits="userSpaceOnUse"
+ x1="520.58502"
+ y1="735.05206"
+ x2="516.15179"
+ y2="720.86298" />
+ <linearGradient
+ id="linearGradient10501-8-6">
+ <stop
+ style="stop-color: rgb(3, 105, 163); stop-opacity: 1;"
+ offset="0"
+ id="stop10503-6-6" />
+ <stop
+ style="stop-color: rgb(2, 63, 98); stop-opacity: 1;"
+ offset="1"
+ id="stop10505-6-1" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient13791-7">
+ <stop
+ style="stop-color: rgb(211, 97, 24); stop-opacity: 1;"
+ offset="0"
+ id="stop13793-4" />
+ <stop
+ style="stop-color: rgb(240, 158, 111); stop-opacity: 1;"
+ offset="1"
+ id="stop13795-6" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient13785-5"
+ inkscape:collect="always">
+ <stop
+ id="stop13787-5"
+ offset="0"
+ style="stop-color: rgb(163, 62, 3); stop-opacity: 1;" />
+ <stop
+ id="stop13789-99"
+ offset="1"
+ style="stop-color: rgb(98, 37, 2); stop-opacity: 1;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient10286-8">
+ <stop
+ id="stop10288-2-1"
+ offset="0"
+ style="stop-color: rgb(179, 179, 179); stop-opacity: 1;" />
+ <stop
+ id="stop10290-6"
+ offset="1"
+ style="stop-color: rgb(230, 230, 230); stop-opacity: 1;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient15606-5">
+ <stop
+ style="stop-color: rgb(255, 255, 255); stop-opacity: 0.588235;"
+ offset="0"
+ id="stop15608-1" />
+ <stop
+ style="stop-color: rgb(255, 255, 255); stop-opacity: 0.862745;"
+ offset="1"
+ id="stop15610-5-7" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient10292-9-5"
+ inkscape:collect="always">
+ <stop
+ id="stop10294-9-37"
+ offset="0"
+ style="stop-color: rgb(102, 102, 102); stop-opacity: 1;" />
+ <stop
+ id="stop10296-6-3"
+ offset="1"
+ style="stop-color: rgb(51, 51, 51); stop-opacity: 1;" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10292-3"
+ id="linearGradient8365"
+ gradientUnits="userSpaceOnUse"
+ x1="3716.1616"
+ y1="683.97705"
+ x2="3716.1616"
+ y2="705.13123" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10292-3"
+ id="linearGradient8363"
+ gradientUnits="userSpaceOnUse"
+ x1="3716.1616"
+ y1="685.14032"
+ x2="3716.1616"
+ y2="706.41693" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10292-3"
+ id="linearGradient8485"
+ gradientUnits="userSpaceOnUse"
+ x1="3716.1616"
+ y1="683.97705"
+ x2="3716.1616"
+ y2="705.13123" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10292-3"
+ id="linearGradient8483"
+ gradientUnits="userSpaceOnUse"
+ x1="3716.1616"
+ y1="683.97705"
+ x2="3716.1616"
+ y2="705.13123" />
+ <linearGradient
+ id="linearGradient10125-8">
+ <stop
+ style="stop-color: rgb(201, 156, 0); stop-opacity: 1;"
+ offset="0"
+ id="stop10127-5" />
+ <stop
+ style="stop-color: rgb(135, 105, 0); stop-opacity: 1;"
+ offset="1"
+ id="stop10129-5" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient6989-5">
+ <stop
+ id="stop6991-5"
+ offset="0"
+ style="stop-color: rgb(240, 158, 111); stop-opacity: 1;" />
+ <stop
+ id="stop6993-1"
+ offset="1"
+ style="stop-color: rgb(249, 207, 181); stop-opacity: 1;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient6975-88">
+ <stop
+ id="stop6977-8"
+ offset="0"
+ style="stop-color: rgb(245, 206, 83); stop-opacity: 1;" />
+ <stop
+ id="stop6979-6"
+ offset="1"
+ style="stop-color: rgb(253, 233, 169); stop-opacity: 1;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient6787-1-2-3-6-5-6-3-0-6">
+ <stop
+ id="stop6789-2-7-9-01-7-1-2-0-5"
+ offset="0"
+ style="stop-color: rgb(50, 50, 50); stop-opacity: 1;" />
+ <stop
+ id="stop6791-8-7-1-9-5-5-9-5-3"
+ offset="1"
+ style="stop-color: rgb(83, 83, 83); stop-opacity: 1;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient6787-1-2-3-6-5-6-3-0-2">
+ <stop
+ id="stop6789-2-7-9-01-7-1-2-0-49"
+ offset="0"
+ style="stop-color: rgb(50, 50, 50); stop-opacity: 1;" />
+ <stop
+ id="stop6791-8-7-1-9-5-5-9-5-4"
+ offset="1"
+ style="stop-color: rgb(83, 83, 83); stop-opacity: 1;" />
+ </linearGradient>
+ <linearGradient
+ y2="-933.63782"
+ x2="370"
+ y1="-985.76282"
+ x1="370"
+ gradientTransform="matrix(0.333333, 0, 0, 0.5, 4017.67, -384.821)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient13552"
+ xlink:href="#linearGradient10501-8-4-63-4-0"
+ inkscape:collect="always" />
+ <linearGradient
+ id="linearGradient10501-8-4-63-4-0">
+ <stop
+ style="stop-color: rgb(3, 105, 163); stop-opacity: 1;"
+ offset="0"
+ id="stop10503-6-23-23-1-3" />
+ <stop
+ style="stop-color: rgb(2, 63, 98); stop-opacity: 1;"
+ offset="1"
+ id="stop10505-6-9-1-1-4" />
+ </linearGradient>
+ <linearGradient
+ y2="-933.63782"
+ x2="370"
+ y1="-985.76282"
+ x1="370"
+ gradientTransform="matrix(0.222222, 0, 0, 0.5, 4070.78, -380.821)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient11801-7"
+ xlink:href="#linearGradient10501-8-4-63-3-0-5-70"
+ inkscape:collect="always" />
+ <linearGradient
+ id="linearGradient10501-8-4-63-3-0-5-70">
+ <stop
+ style="stop-color: rgb(3, 105, 163); stop-opacity: 1;"
+ offset="0"
+ id="stop10503-6-23-23-4-2-9-0" />
+ <stop
+ style="stop-color: rgb(2, 63, 98); stop-opacity: 1;"
+ offset="1"
+ id="stop10505-6-9-1-2-5-4-85" />
+ </linearGradient>
+ <linearGradient
+ y2="-933.63782"
+ x2="370"
+ y1="-985.76282"
+ x1="370"
+ gradientTransform="matrix(0.444444, 0, 0, 0.5, 3982.56, -372.821)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient11886-3"
+ xlink:href="#linearGradient10501-8-4-69-1"
+ inkscape:collect="always" />
+ <linearGradient
+ id="linearGradient10501-8-4-69-1">
+ <stop
+ style="stop-color: rgb(3, 105, 163); stop-opacity: 1;"
+ offset="0"
+ id="stop10503-6-23-6-0" />
+ <stop
+ style="stop-color: rgb(2, 63, 98); stop-opacity: 1;"
+ offset="1"
+ id="stop10505-6-9-96-76" />
+ </linearGradient>
+ <linearGradient
+ y2="-933.63782"
+ x2="370"
+ y1="-985.76282"
+ x1="370"
+ gradientTransform="matrix(0.333333, 0, 0, 0.5, 4017.67, -384.821)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient11988-159"
+ xlink:href="#linearGradient10501-8-4-69-5-3-04"
+ inkscape:collect="always" />
+ <linearGradient
+ id="linearGradient10501-8-4-69-5-3-04">
+ <stop
+ style="stop-color: rgb(3, 105, 163); stop-opacity: 1;"
+ offset="0"
+ id="stop10503-6-23-6-89-5-3" />
+ <stop
+ style="stop-color: rgb(2, 63, 98); stop-opacity: 1;"
+ offset="1"
+ id="stop10505-6-9-96-7-4-4" />
+ </linearGradient>
+ <linearGradient
+ y2="-933.63782"
+ x2="370"
+ y1="-985.76282"
+ x1="370"
+ gradientTransform="matrix(0.111111, 0, 0, 0.5, 4117.89, -376.823)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient12179-6"
+ xlink:href="#linearGradient10501-8-4-63-3-0-5-88-1-1"
+ inkscape:collect="always" />
+ <linearGradient
+ id="linearGradient10501-8-4-63-3-0-5-88-1-1">
+ <stop
+ style="stop-color: rgb(3, 105, 163); stop-opacity: 1;"
+ offset="0"
+ id="stop10503-6-23-23-4-2-9-3-8-6" />
+ <stop
+ style="stop-color: rgb(2, 63, 98); stop-opacity: 1;"
+ offset="1"
+ id="stop10505-6-9-1-2-5-4-5-2-7" />
+ </linearGradient>
+ <linearGradient
+ y2="-933.63782"
+ x2="370"
+ y1="-985.76282"
+ x1="370"
+ gradientTransform="matrix(0.111111, 0, 0, 0.5, 4117.89, -372.821)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient12179-3-1"
+ xlink:href="#linearGradient10501-8-4-63-3-0-5-88-1-3-9"
+ inkscape:collect="always" />
+ <linearGradient
+ id="linearGradient10501-8-4-63-3-0-5-88-1-3-9">
+ <stop
+ style="stop-color: rgb(3, 105, 163); stop-opacity: 1;"
+ offset="0"
+ id="stop10503-6-23-23-4-2-9-3-8-19-5" />
+ <stop
+ style="stop-color: rgb(2, 63, 98); stop-opacity: 1;"
+ offset="1"
+ id="stop10505-6-9-1-2-5-4-5-2-5-3" />
+ </linearGradient>
+ <linearGradient
+ y2="-933.63782"
+ x2="370"
+ y1="-985.76282"
+ x1="370"
+ gradientTransform="matrix(0.222222, 0, 0, 0.5, 4072.78, -372.821)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient13779"
+ xlink:href="#linearGradient10501-8-4-63-3-0-5-70-7"
+ inkscape:collect="always" />
+ <linearGradient
+ id="linearGradient10501-8-4-63-3-0-5-70-7">
+ <stop
+ style="stop-color: rgb(3, 105, 163); stop-opacity: 1;"
+ offset="0"
+ id="stop10503-6-23-23-4-2-9-0-0" />
+ <stop
+ style="stop-color: rgb(2, 63, 98); stop-opacity: 1;"
+ offset="1"
+ id="stop10505-6-9-1-2-5-4-85-7" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10292-3"
+ id="linearGradient21568-4"
+ x1="4157.6753"
+ y1="-894.80188"
+ x2="4157.6753"
+ y2="-847.63995"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ y2="-933.63782"
+ x2="370"
+ y1="-985.76282"
+ x1="370"
+ gradientTransform="matrix(0.222222, 0, 0, 0.5, 4058.78, -364.821)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient13683-9"
+ xlink:href="#linearGradient10501-8-4-63-3-0-5-7-9-6"
+ inkscape:collect="always" />
+ <linearGradient
+ id="linearGradient10501-8-4-63-3-0-5-7-9-6">
+ <stop
+ style="stop-color: rgb(3, 105, 163); stop-opacity: 1;"
+ offset="0"
+ id="stop10503-6-23-23-4-2-9-7-0-3" />
+ <stop
+ style="stop-color: rgb(2, 63, 98); stop-opacity: 1;"
+ offset="1"
+ id="stop10505-6-9-1-2-5-4-2-3-2" />
+ </linearGradient>
+ <linearGradient
+ y2="-933.63782"
+ x2="370"
+ y1="-985.76282"
+ x1="370"
+ gradientTransform="matrix(0.222222, 0, 0, 0.5, 4058.78, -368.821)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient20606"
+ xlink:href="#linearGradient10501-8-4-63-3-0-5-7-9-6-2"
+ inkscape:collect="always" />
+ <linearGradient
+ id="linearGradient10501-8-4-63-3-0-5-7-9-6-2">
+ <stop
+ style="stop-color: rgb(3, 105, 163); stop-opacity: 1;"
+ offset="0"
+ id="stop10503-6-23-23-4-2-9-7-0-3-8" />
+ <stop
+ style="stop-color: rgb(2, 63, 98); stop-opacity: 1;"
+ offset="1"
+ id="stop10505-6-9-1-2-5-4-2-3-2-3" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient13220-3">
+ <stop
+ id="stop13222-8"
+ offset="0"
+ style="stop-color: rgb(146, 226, 133); stop-opacity: 1;" />
+ <stop
+ id="stop13224-3"
+ offset="1"
+ style="stop-color: rgb(204, 244, 198); stop-opacity: 1;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient9233">
+ <stop
+ id="stop9235"
+ offset="0.0000000"
+ style="stop-color: rgb(24, 163, 3); stop-opacity: 1;" />
+ <stop
+ id="stop9237"
+ offset="1.0000000"
+ style="stop-color: rgb(146, 226, 133); stop-opacity: 1;" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10501-8-6"
+ id="linearGradient23627"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.666679, 0, 0, 3, 42.3323, -1964.72)"
+ x1="117.71875"
+ y1="982.36218"
+ x2="117.71875"
+ y2="984.72046" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10501-8-6"
+ id="linearGradient23621"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.777675, 0, 0, 3, 30.2336, -1963.72)"
+ x1="117.71875"
+ y1="982.36218"
+ x2="117.71875"
+ y2="984.72046" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10501-8-6"
+ id="linearGradient23623"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.583257, 0, 0, 3, 51.4255, -1965.72)"
+ x1="117.71875"
+ y1="982.36218"
+ x2="117.71875"
+ y2="984.72046" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10501-8-6"
+ id="linearGradient23625"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.555445, 0, 0, 3, 54.457, -1965.72)"
+ x1="117.71875"
+ y1="982.36218"
+ x2="117.71875"
+ y2="984.72046" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10501-8-6"
+ id="linearGradient24531"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.777675, 0, 0, 3, 39.2338, -1963.72)"
+ x1="117.71875"
+ y1="982.36218"
+ x2="117.71875"
+ y2="984.72046" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10501-8-6"
+ id="linearGradient24533"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.583257, 0, 0, 3, 60.4256, -1965.72)"
+ x1="117.71875"
+ y1="982.36218"
+ x2="117.71875"
+ y2="984.72046" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10501-8-6"
+ id="linearGradient24535"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.555445, 0, 0, 3, 63.4571, -1965.72)"
+ x1="117.71875"
+ y1="982.36218"
+ x2="117.71875"
+ y2="984.72046" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10501-8-6"
+ id="linearGradient24543"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.777675, 0, 0, 3, 30.2336, -1956.72)"
+ x1="117.71875"
+ y1="982.36218"
+ x2="117.71875"
+ y2="984.72046" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10501-8-6"
+ id="linearGradient24545"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.583257, 0, 0, 3, 51.4255, -1958.72)"
+ x1="117.71875"
+ y1="982.36218"
+ x2="117.71875"
+ y2="984.72046" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10501-8-6"
+ id="linearGradient24547"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.555445, 0, 0, 3, 54.457, -1958.72)"
+ x1="117.71875"
+ y1="982.36218"
+ x2="117.71875"
+ y2="984.72046" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10501-8-6"
+ id="linearGradient24555"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.777675, 0, 0, 3, 39.2338, -1956.72)"
+ x1="117.71875"
+ y1="982.36218"
+ x2="117.71875"
+ y2="984.72046" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10501-8-6"
+ id="linearGradient24557"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.583257, 0, 0, 3, 60.4256, -1958.72)"
+ x1="117.71875"
+ y1="982.36218"
+ x2="117.71875"
+ y2="984.72046" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10501-8-6"
+ id="linearGradient24559"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.555445, 0, 0, 3, 63.4571, -1958.72)"
+ x1="117.71875"
+ y1="982.36218"
+ x2="117.71875"
+ y2="984.72046" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9334-46-1"
+ id="linearGradient24213"
+ gradientUnits="userSpaceOnUse"
+ x1="116.48132"
+ y1="982.36108"
+ x2="116.48132"
+ y2="986.86115" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9334-46-1"
+ id="linearGradient24203"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.21429, 0, 0, 0.500016, 90.8575, 491.165)"
+ x1="117.71875"
+ y1="976.30396"
+ x2="117.71875"
+ y2="992.23761" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10501-8-62"
+ id="linearGradient24205"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.250003, 0, 0, 0.500016, 86.7504, 491.165)"
+ x1="117.71875"
+ y1="982.36218"
+ x2="117.71875"
+ y2="989.40918" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9334-46-1"
+ id="linearGradient24207"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.21429, 0, 0, 0.500016, 90.8575, 492.165)"
+ x1="117.71875"
+ y1="976.30396"
+ x2="117.71875"
+ y2="992.23761" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9334-46-1"
+ id="linearGradient24209"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.785729, 0, 0, 0.500016, 25.1414, 493.165)"
+ x1="117.71875"
+ y1="976.30396"
+ x2="117.71875"
+ y2="992.23761" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9334-46-1"
+ id="linearGradient24211"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.571439, 0, 0, 0.500016, 49.785, 494.165)"
+ x1="117.71875"
+ y1="976.30396"
+ x2="117.71875"
+ y2="992.23761" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10501-8-62"
+ id="linearGradient24215"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.777787, 0, 0, 0.833343, 49.998, -130.099)"
+ x1="208.96875"
+ y1="-780.60657"
+ x2="208.96875"
+ y2="-769.82318" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9364-1"
+ id="linearGradient24217"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.625008, 0, 0, 0.499999, 80.2482, -488.819)"
+ x1="230"
+ y1="-581.63782"
+ x2="230"
+ y2="-578.63782" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10292-3"
+ id="linearGradient24219"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.875, 0, 0, 0.8, -84.8751, -1719.04)"
+ x1="345"
+ y1="1173"
+ x2="345"
+ y2="1178" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9334-46-1"
+ id="linearGradient24253"
+ gradientUnits="userSpaceOnUse"
+ x1="116.48132"
+ y1="982.36108"
+ x2="116.48132"
+ y2="986.86115" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9334-46-1"
+ id="linearGradient24243"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.21429, 0, 0, 0.500016, 90.8575, 491.165)"
+ x1="117.71875"
+ y1="976.30396"
+ x2="117.71875"
+ y2="992.23761" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10501-8-62"
+ id="linearGradient24245"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.250003, 0, 0, 0.500016, 86.7504, 491.165)"
+ x1="117.71875"
+ y1="982.36218"
+ x2="117.71875"
+ y2="989.40918" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9334-46-1"
+ id="linearGradient24247"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.21429, 0, 0, 0.500016, 90.8575, 492.165)"
+ x1="117.71875"
+ y1="976.30396"
+ x2="117.71875"
+ y2="992.23761" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9334-46-1"
+ id="linearGradient24249"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.785729, 0, 0, 0.500016, 25.1414, 493.165)"
+ x1="117.71875"
+ y1="976.30396"
+ x2="117.71875"
+ y2="992.23761" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9334-46-1"
+ id="linearGradient24251"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.571439, 0, 0, 0.500016, 49.785, 494.165)"
+ x1="117.71875"
+ y1="976.30396"
+ x2="117.71875"
+ y2="992.23761" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10501-8-62"
+ id="linearGradient24255"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.777787, 0, 0, 0.833343, 49.998, -130.099)"
+ x1="208.96875"
+ y1="-780.60657"
+ x2="208.96875"
+ y2="-769.82318" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9364-1"
+ id="linearGradient24257"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.625008, 0, 0, 0.499999, 80.2482, -488.819)"
+ x1="230"
+ y1="-581.63782"
+ x2="230"
+ y2="-578.63782" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10292-3"
+ id="linearGradient24259"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.875, 0, 0, 0.8, -84.8751, -1719.04)"
+ x1="345"
+ y1="1173"
+ x2="345"
+ y2="1178" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9334-46-1"
+ id="linearGradient24293"
+ gradientUnits="userSpaceOnUse"
+ x1="116.48132"
+ y1="982.36108"
+ x2="116.48132"
+ y2="986.86115" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9334-46-1"
+ id="linearGradient24283"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.21429, 0, 0, 0.500016, 90.8575, 491.165)"
+ x1="117.71875"
+ y1="976.30396"
+ x2="117.71875"
+ y2="992.23761" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10501-8-62"
+ id="linearGradient24285"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.250003, 0, 0, 0.500016, 86.7504, 491.165)"
+ x1="117.71875"
+ y1="982.36218"
+ x2="117.71875"
+ y2="989.40918" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9334-46-1"
+ id="linearGradient24287"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.21429, 0, 0, 0.500016, 90.8575, 492.165)"
+ x1="117.71875"
+ y1="976.30396"
+ x2="117.71875"
+ y2="992.23761" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9334-46-1"
+ id="linearGradient24289"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.785729, 0, 0, 0.500016, 25.1414, 493.165)"
+ x1="117.71875"
+ y1="976.30396"
+ x2="117.71875"
+ y2="992.23761" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9334-46-1"
+ id="linearGradient24291"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.571439, 0, 0, 0.500016, 49.785, 494.165)"
+ x1="117.71875"
+ y1="976.30396"
+ x2="117.71875"
+ y2="992.23761" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10501-8-62"
+ id="linearGradient24295"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.777787, 0, 0, 0.833343, 49.998, -130.099)"
+ x1="208.96875"
+ y1="-780.60657"
+ x2="208.96875"
+ y2="-769.82318" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9364-1"
+ id="linearGradient24297"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.625008, 0, 0, 0.499999, 80.2482, -488.819)"
+ x1="230"
+ y1="-581.63782"
+ x2="230"
+ y2="-578.63782" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10292-3"
+ id="linearGradient24299"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.875, 0, 0, 0.8, -84.8751, -1719.04)"
+ x1="345"
+ y1="1173"
+ x2="345"
+ y2="1178" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9334-46-1"
+ id="linearGradient24333"
+ gradientUnits="userSpaceOnUse"
+ x1="116.48132"
+ y1="982.36108"
+ x2="116.48132"
+ y2="986.86115" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9334-46-1"
+ id="linearGradient24323"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.21429, 0, 0, 0.500016, 90.8575, 491.165)"
+ x1="117.71875"
+ y1="976.30396"
+ x2="117.71875"
+ y2="992.23761" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10501-8-62"
+ id="linearGradient24325"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.250003, 0, 0, 0.500016, 86.7504, 491.165)"
+ x1="117.71875"
+ y1="982.36218"
+ x2="117.71875"
+ y2="989.40918" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9334-46-1"
+ id="linearGradient24327"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.21429, 0, 0, 0.500016, 90.8575, 492.165)"
+ x1="117.71875"
+ y1="976.30396"
+ x2="117.71875"
+ y2="992.23761" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9334-46-1"
+ id="linearGradient24329"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.785729, 0, 0, 0.500016, 25.1414, 493.165)"
+ x1="117.71875"
+ y1="976.30396"
+ x2="117.71875"
+ y2="992.23761" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9334-46-1"
+ id="linearGradient24331"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.571439, 0, 0, 0.500016, 49.785, 494.165)"
+ x1="117.71875"
+ y1="976.30396"
+ x2="117.71875"
+ y2="992.23761" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10501-8-62"
+ id="linearGradient24335"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.777787, 0, 0, 0.833343, 49.998, -130.099)"
+ x1="208.96875"
+ y1="-780.60657"
+ x2="208.96875"
+ y2="-769.82318" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9364-1"
+ id="linearGradient24337"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.625008, 0, 0, 0.499999, 80.2482, -488.819)"
+ x1="230"
+ y1="-581.63782"
+ x2="230"
+ y2="-578.63782" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10292-3"
+ id="linearGradient24339"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.875, 0, 0, 0.8, -84.8751, -1719.04)"
+ x1="345"
+ y1="1173"
+ x2="345"
+ y2="1178" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9334-46-1"
+ id="linearGradient24733"
+ gradientUnits="userSpaceOnUse"
+ x1="116.48132"
+ y1="982.36108"
+ x2="116.48132"
+ y2="986.86115" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9334-46-1"
+ id="linearGradient24723"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.21429, 0, 0, 0.500016, 90.8575, 491.165)"
+ x1="117.71875"
+ y1="976.30396"
+ x2="117.71875"
+ y2="992.23761" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10501-8-62"
+ id="linearGradient24725"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.250003, 0, 0, 0.500016, 86.7504, 491.165)"
+ x1="117.71875"
+ y1="982.36218"
+ x2="117.71875"
+ y2="989.40918" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9334-46-1"
+ id="linearGradient24727"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.21429, 0, 0, 0.500016, 90.8575, 492.165)"
+ x1="117.71875"
+ y1="976.30396"
+ x2="117.71875"
+ y2="992.23761" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9334-46-1"
+ id="linearGradient24729-8"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.785729, 0, 0, 0.500016, 25.1414, 493.165)"
+ x1="117.71875"
+ y1="976.30396"
+ x2="117.71875"
+ y2="992.23761" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9334-46-1"
+ id="linearGradient24731"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.571439, 0, 0, 0.500016, 49.785, 494.165)"
+ x1="117.71875"
+ y1="976.30396"
+ x2="117.71875"
+ y2="992.23761" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10501-8-62"
+ id="linearGradient24735"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.777787, 0, 0, 0.833343, 49.998, -130.099)"
+ x1="208.96875"
+ y1="-780.60657"
+ x2="208.96875"
+ y2="-769.82318" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9364-1"
+ id="linearGradient24737-2"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.625008, 0, 0, 0.499999, 80.2482, -488.819)"
+ x1="230"
+ y1="-581.63782"
+ x2="230"
+ y2="-578.63782" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10292-3"
+ id="linearGradient24739-0"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.875, 0, 0, 0.8, -84.8751, -1719.04)"
+ x1="345"
+ y1="1173"
+ x2="345"
+ y2="1178" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9334-46-1"
+ id="linearGradient24715"
+ gradientUnits="userSpaceOnUse"
+ x1="116.48132"
+ y1="982.36108"
+ x2="116.48132"
+ y2="986.86115" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9334-46-1"
+ id="linearGradient24705-4"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.21429, 0, 0, 0.500016, 90.8575, 491.165)"
+ x1="117.71875"
+ y1="976.30396"
+ x2="117.71875"
+ y2="992.23761" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10501-8-62"
+ id="linearGradient24707-7"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.250003, 0, 0, 0.500016, 86.7504, 491.165)"
+ x1="117.71875"
+ y1="982.36218"
+ x2="117.71875"
+ y2="989.40918" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9334-46-1"
+ id="linearGradient24709"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.21429, 0, 0, 0.500016, 90.8575, 492.165)"
+ x1="117.71875"
+ y1="976.30396"
+ x2="117.71875"
+ y2="992.23761" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9334-46-1"
+ id="linearGradient24711"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.785729, 0, 0, 0.500016, 25.1414, 493.165)"
+ x1="117.71875"
+ y1="976.30396"
+ x2="117.71875"
+ y2="992.23761" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9334-46-1"
+ id="linearGradient24713-7"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.571439, 0, 0, 0.500016, 49.785, 494.165)"
+ x1="117.71875"
+ y1="976.30396"
+ x2="117.71875"
+ y2="992.23761" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10501-8-62"
+ id="linearGradient24717"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.777787, 0, 0, 0.833343, 49.998, -130.099)"
+ x1="208.96875"
+ y1="-780.60657"
+ x2="208.96875"
+ y2="-769.82318" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9364-1"
+ id="linearGradient24719"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.625008, 0, 0, 0.499999, 80.2482, -488.819)"
+ x1="230"
+ y1="-581.63782"
+ x2="230"
+ y2="-578.63782" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10292-3"
+ id="linearGradient24721-3"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.875, 0, 0, 0.8, -84.8751, -1719.04)"
+ x1="345"
+ y1="1173"
+ x2="345"
+ y2="1178" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9334-46-1"
+ id="linearGradient24697-6"
+ gradientUnits="userSpaceOnUse"
+ x1="116.48132"
+ y1="982.36108"
+ x2="116.48132"
+ y2="986.86115" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9334-46-1"
+ id="linearGradient24687"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.21429, 0, 0, 0.500016, 90.8575, 491.165)"
+ x1="117.71875"
+ y1="976.30396"
+ x2="117.71875"
+ y2="992.23761" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10501-8-62"
+ id="linearGradient24689-0"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.250003, 0, 0, 0.500016, 86.7504, 491.165)"
+ x1="117.71875"
+ y1="982.36218"
+ x2="117.71875"
+ y2="989.40918" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9334-46-1"
+ id="linearGradient24691"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.21429, 0, 0, 0.500016, 90.8575, 492.165)"
+ x1="117.71875"
+ y1="976.30396"
+ x2="117.71875"
+ y2="992.23761" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9334-46-1"
+ id="linearGradient24693"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.785729, 0, 0, 0.500016, 25.1414, 493.165)"
+ x1="117.71875"
+ y1="976.30396"
+ x2="117.71875"
+ y2="992.23761" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9334-46-1"
+ id="linearGradient24695"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.571439, 0, 0, 0.500016, 49.785, 494.165)"
+ x1="117.71875"
+ y1="976.30396"
+ x2="117.71875"
+ y2="992.23761" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10501-8-62"
+ id="linearGradient24699-3"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.777787, 0, 0, 0.833343, 49.998, -130.099)"
+ x1="208.96875"
+ y1="-780.60657"
+ x2="208.96875"
+ y2="-769.82318" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9364-1"
+ id="linearGradient24701"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.625008, 0, 0, 0.499999, 80.2482, -488.819)"
+ x1="230"
+ y1="-581.63782"
+ x2="230"
+ y2="-578.63782" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10292-3"
+ id="linearGradient24703"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.875, 0, 0, 0.8, -84.8751, -1719.04)"
+ x1="345"
+ y1="1173"
+ x2="345"
+ y2="1178" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9334-46-1"
+ id="linearGradient24679"
+ gradientUnits="userSpaceOnUse"
+ x1="116.48132"
+ y1="982.36108"
+ x2="116.48132"
+ y2="986.86115" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9334-46-1"
+ id="linearGradient24669"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.21429, 0, 0, 0.500016, 90.8575, 491.165)"
+ x1="117.71875"
+ y1="976.30396"
+ x2="117.71875"
+ y2="992.23761" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10501-8-62"
+ id="linearGradient24671"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.250003, 0, 0, 0.500016, 86.7504, 491.165)"
+ x1="117.71875"
+ y1="982.36218"
+ x2="117.71875"
+ y2="989.40918" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9334-46-1"
+ id="linearGradient24673-3"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.21429, 0, 0, 0.500016, 90.8575, 492.165)"
+ x1="117.71875"
+ y1="976.30396"
+ x2="117.71875"
+ y2="992.23761" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9334-46-1"
+ id="linearGradient24675"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.785729, 0, 0, 0.500016, 25.1414, 493.165)"
+ x1="117.71875"
+ y1="976.30396"
+ x2="117.71875"
+ y2="992.23761" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9334-46-1"
+ id="linearGradient24677"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.571439, 0, 0, 0.500016, 49.785, 494.165)"
+ x1="117.71875"
+ y1="976.30396"
+ x2="117.71875"
+ y2="992.23761" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10501-8-62"
+ id="linearGradient24681-5"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.777787, 0, 0, 0.833343, 49.998, -130.099)"
+ x1="208.96875"
+ y1="-780.60657"
+ x2="208.96875"
+ y2="-769.82318" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9364-1"
+ id="linearGradient24683"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.625008, 0, 0, 0.499999, 80.2482, -488.819)"
+ x1="230"
+ y1="-581.63782"
+ x2="230"
+ y2="-578.63782" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10292-3"
+ id="linearGradient24685"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.875, 0, 0, 0.8, -84.8751, -1719.04)"
+ x1="345"
+ y1="1173"
+ x2="345"
+ y2="1178" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9334-46-1"
+ id="linearGradient24959-8"
+ gradientUnits="userSpaceOnUse"
+ x1="116.48132"
+ y1="982.36108"
+ x2="116.48132"
+ y2="986.86115" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9334-46-1"
+ id="linearGradient24949"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.21429, 0, 0, 0.500016, 90.8575, 491.165)"
+ x1="117.71875"
+ y1="976.30396"
+ x2="117.71875"
+ y2="992.23761" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10501-8-62"
+ id="linearGradient24951"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.250003, 0, 0, 0.500016, 86.7504, 491.165)"
+ x1="117.71875"
+ y1="982.36218"
+ x2="117.71875"
+ y2="989.40918" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9334-46-1"
+ id="linearGradient24953-4"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.21429, 0, 0, 0.500016, 90.8575, 492.165)"
+ x1="117.71875"
+ y1="976.30396"
+ x2="117.71875"
+ y2="992.23761" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9334-46-1"
+ id="linearGradient24955"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.785729, 0, 0, 0.500016, 25.1414, 493.165)"
+ x1="117.71875"
+ y1="976.30396"
+ x2="117.71875"
+ y2="992.23761" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9334-46-1"
+ id="linearGradient24957"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.571439, 0, 0, 0.500016, 49.785, 494.165)"
+ x1="117.71875"
+ y1="976.30396"
+ x2="117.71875"
+ y2="992.23761" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10501-8-62"
+ id="linearGradient24961-5"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.777787, 0, 0, 0.833343, 49.998, -130.099)"
+ x1="208.96875"
+ y1="-780.60657"
+ x2="208.96875"
+ y2="-769.82318" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9364-1"
+ id="linearGradient24963-3"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.625008, 0, 0, 0.499999, 80.2482, -488.819)"
+ x1="230"
+ y1="-581.63782"
+ x2="230"
+ y2="-578.63782" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10292-3"
+ id="linearGradient24965"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.875, 0, 0, 0.8, -84.8751, -1719.04)"
+ x1="345"
+ y1="1173"
+ x2="345"
+ y2="1178" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9334-46-1"
+ id="linearGradient24977-1"
+ gradientUnits="userSpaceOnUse"
+ x1="116.48132"
+ y1="982.36108"
+ x2="116.48132"
+ y2="986.86115" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9334-46-1"
+ id="linearGradient24967"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.21429, 0, 0, 0.500016, 90.8575, 491.165)"
+ x1="117.71875"
+ y1="976.30396"
+ x2="117.71875"
+ y2="992.23761" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10501-8-62"
+ id="linearGradient24969-3"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.250003, 0, 0, 0.500016, 86.7504, 491.165)"
+ x1="117.71875"
+ y1="982.36218"
+ x2="117.71875"
+ y2="989.40918" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9334-46-1"
+ id="linearGradient24971"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.21429, 0, 0, 0.500016, 90.8575, 492.165)"
+ x1="117.71875"
+ y1="976.30396"
+ x2="117.71875"
+ y2="992.23761" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9334-46-1"
+ id="linearGradient24973"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.785729, 0, 0, 0.500016, 25.1414, 493.165)"
+ x1="117.71875"
+ y1="976.30396"
+ x2="117.71875"
+ y2="992.23761" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9334-46-1"
+ id="linearGradient24975"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.571439, 0, 0, 0.500016, 49.785, 494.165)"
+ x1="117.71875"
+ y1="976.30396"
+ x2="117.71875"
+ y2="992.23761" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10501-8-62"
+ id="linearGradient24979"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.777787, 0, 0, 0.833343, 49.998, -130.099)"
+ x1="208.96875"
+ y1="-780.60657"
+ x2="208.96875"
+ y2="-769.82318" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9364-1"
+ id="linearGradient24981"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.625008, 0, 0, 0.499999, 80.2482, -488.819)"
+ x1="230"
+ y1="-581.63782"
+ x2="230"
+ y2="-578.63782" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10292-3"
+ id="linearGradient24983"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.875, 0, 0, 0.8, -84.8751, -1719.04)"
+ x1="345"
+ y1="1173"
+ x2="345"
+ y2="1178" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9334-46-1"
+ id="linearGradient24995-5"
+ gradientUnits="userSpaceOnUse"
+ x1="116.48132"
+ y1="982.36108"
+ x2="116.48132"
+ y2="986.86115" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9334-46-1"
+ id="linearGradient24985-1"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.21429, 0, 0, 0.500016, 90.8575, 491.165)"
+ x1="117.71875"
+ y1="976.30396"
+ x2="117.71875"
+ y2="992.23761" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10501-8-62"
+ id="linearGradient24987"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.250003, 0, 0, 0.500016, 86.7504, 491.165)"
+ x1="117.71875"
+ y1="982.36218"
+ x2="117.71875"
+ y2="989.40918" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9334-46-1"
+ id="linearGradient24989"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.21429, 0, 0, 0.500016, 90.8575, 492.165)"
+ x1="117.71875"
+ y1="976.30396"
+ x2="117.71875"
+ y2="992.23761" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9334-46-1"
+ id="linearGradient24991"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.785729, 0, 0, 0.500016, 25.1414, 493.165)"
+ x1="117.71875"
+ y1="976.30396"
+ x2="117.71875"
+ y2="992.23761" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9334-46-1"
+ id="linearGradient24993-3"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.571439, 0, 0, 0.500016, 49.785, 494.165)"
+ x1="117.71875"
+ y1="976.30396"
+ x2="117.71875"
+ y2="992.23761" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10501-8-62"
+ id="linearGradient24997"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.777787, 0, 0, 0.833343, 49.998, -130.099)"
+ x1="208.96875"
+ y1="-780.60657"
+ x2="208.96875"
+ y2="-769.82318" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9364-1"
+ id="linearGradient24999"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.625008, 0, 0, 0.499999, 80.2482, -488.819)"
+ x1="230"
+ y1="-581.63782"
+ x2="230"
+ y2="-578.63782" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10292-3"
+ id="linearGradient25001-3"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.875, 0, 0, 0.8, -84.8751, -1719.04)"
+ x1="345"
+ y1="1173"
+ x2="345"
+ y2="1178" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9334-46-1"
+ id="linearGradient25013-79"
+ gradientUnits="userSpaceOnUse"
+ x1="116.48132"
+ y1="982.36108"
+ x2="116.48132"
+ y2="986.86115" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9334-46-1"
+ id="linearGradient25003-0"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.21429, 0, 0, 0.500016, 90.8575, 491.165)"
+ x1="117.71875"
+ y1="976.30396"
+ x2="117.71875"
+ y2="992.23761" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10501-8-62"
+ id="linearGradient25005"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.250003, 0, 0, 0.500016, 86.7504, 491.165)"
+ x1="117.71875"
+ y1="982.36218"
+ x2="117.71875"
+ y2="989.40918" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9334-46-1"
+ id="linearGradient25007"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.21429, 0, 0, 0.500016, 90.8575, 492.165)"
+ x1="117.71875"
+ y1="976.30396"
+ x2="117.71875"
+ y2="992.23761" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9334-46-1"
+ id="linearGradient25009-2"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.785729, 0, 0, 0.500016, 25.1414, 493.165)"
+ x1="117.71875"
+ y1="976.30396"
+ x2="117.71875"
+ y2="992.23761" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9334-46-1"
+ id="linearGradient25011"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.571439, 0, 0, 0.500016, 49.785, 494.165)"
+ x1="117.71875"
+ y1="976.30396"
+ x2="117.71875"
+ y2="992.23761" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10501-8-62"
+ id="linearGradient25015"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.777787, 0, 0, 0.833343, 49.998, -130.099)"
+ x1="208.96875"
+ y1="-780.60657"
+ x2="208.96875"
+ y2="-769.82318" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9364-1"
+ id="linearGradient25017-3"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.625008, 0, 0, 0.499999, 80.2482, -488.819)"
+ x1="230"
+ y1="-581.63782"
+ x2="230"
+ y2="-578.63782" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10292-3"
+ id="linearGradient25019"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.875, 0, 0, 0.8, -84.8751, -1719.04)"
+ x1="345"
+ y1="1173"
+ x2="345"
+ y2="1178" />
+ <linearGradient
+ id="linearGradient9334-1"
+ inkscape:collect="always">
+ <stop
+ id="stop9336-5"
+ offset="0"
+ style="stop-color: rgb(3, 105, 163); stop-opacity: 1;" />
+ <stop
+ id="stop9338-19"
+ offset="1"
+ style="stop-color: rgb(2, 63, 98); stop-opacity: 1;" />
+ </linearGradient>
+ <clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath10191">
+ <path
+ transform="matrix(1.6, 0, 0, 0.8, -2001, -1562.64)"
+ d="m 3190,1000 a 2.5,5 0 1 1 -5,0 2.5,5 0 1 1 5,0 z"
+ sodipodi:ry="5"
+ sodipodi:rx="2.5"
+ sodipodi:cy="1000"
+ sodipodi:cx="3187.5"
+ id="path10193"
+ style="overflow: visible; marker: none; color: rgb(0, 0, 0); fill: rgb(28, 153, 224); fill-opacity: 1; fill-rule: nonzero; stroke: none; stroke-width: 1; visibility: visible; display: inline;"
+ sodipodi:type="arc" />
+ </clipPath>
+ <clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath10187">
+ <path
+ transform="matrix(1.6, 0, 0, 0.8, -2001.5, -1562.64)"
+ d="m 3190,1000 a 2.5,5 0 1 1 -5,0 2.5,5 0 1 1 5,0 z"
+ sodipodi:ry="5"
+ sodipodi:rx="2.5"
+ sodipodi:cy="1000"
+ sodipodi:cx="3187.5"
+ id="path10189"
+ style="overflow: visible; marker: none; color: rgb(0, 0, 0); fill: rgb(28, 153, 224); fill-opacity: 1; fill-rule: nonzero; stroke: none; stroke-width: 1; visibility: visible; display: inline;"
+ sodipodi:type="arc" />
+ </clipPath>
+ <clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath10183">
+ <path
+ transform="matrix(1.6, 0, 0, 0.8, -2001, -1562.64)"
+ d="m 3190,1000 a 2.5,5 0 1 1 -5,0 2.5,5 0 1 1 5,0 z"
+ sodipodi:ry="5"
+ sodipodi:rx="2.5"
+ sodipodi:cy="1000"
+ sodipodi:cx="3187.5"
+ id="path10185"
+ style="overflow: visible; marker: none; color: rgb(0, 0, 0); fill: rgb(28, 153, 224); fill-opacity: 1; fill-rule: nonzero; stroke: none; stroke-width: 1; visibility: visible; display: inline;"
+ sodipodi:type="arc" />
+ </clipPath>
+ <clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath10326">
+ <path
+ transform="translate(-123, -1753.64)"
+ d="m 3238,891.5 a 6.5,6.5 0 1 1 -13,0 6.5,6.5 0 1 1 13,0 z"
+ sodipodi:ry="6.5"
+ sodipodi:rx="6.5"
+ sodipodi:cy="891.5"
+ sodipodi:cx="3231.5"
+ id="path10328"
+ style="overflow: visible; marker: none; color: rgb(0, 0, 0); fill: rgb(0, 160, 252); fill-opacity: 1; fill-rule: nonzero; stroke: none; stroke-width: 1; visibility: visible; display: inline;"
+ sodipodi:type="arc" />
+ </clipPath>
+ <radialGradient
+ r="15"
+ fy="-754.6377"
+ fx="152.3331"
+ cy="-754.6377"
+ cx="152.3331"
+ gradientTransform="matrix(0.00100569, 0.06763, -0.334302, 0.00495968, 4157.55, -766.212)"
+ gradientUnits="userSpaceOnUse"
+ id="radialGradient48341"
+ xlink:href="#linearGradient16134-3-1-9"
+ inkscape:collect="always" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9334-46-1"
+ id="linearGradient54068"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.357143, 0, 0, 1, 73.9293, 0)"
+ x1="117.71875"
+ y1="976.30396"
+ x2="117.71875"
+ y2="992.23761" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10501-8-62"
+ id="linearGradient54070"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.416667, 0, 0, 1, 67.084, 0)"
+ x1="117.71875"
+ y1="982.36218"
+ x2="117.71875"
+ y2="989.40918" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10501-8-62"
+ id="linearGradient54072"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.14286, 0, 0, 1, -16.4287, 0)"
+ x1="117.71875"
+ y1="982.36218"
+ x2="117.71875"
+ y2="989.40918" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10501-8-62"
+ id="linearGradient54074"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.5, 0, 0, 1, -57.5006, 0)"
+ x1="117.71875"
+ y1="982.36218"
+ x2="117.71875"
+ y2="989.40918" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9334-46-1"
+ id="linearGradient54076"
+ gradientUnits="userSpaceOnUse"
+ x1="116.48132"
+ y1="976.30756"
+ x2="116.48132"
+ y2="992.32819" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10501-8-62"
+ id="linearGradient54078"
+ gradientUnits="userSpaceOnUse"
+ x1="208.96875"
+ y1="-780.60657"
+ x2="208.96875"
+ y2="-766.66815" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9364-1"
+ id="linearGradient54080"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.875, 0, 0, 0.666667, 22.75, -391.879)"
+ x1="230"
+ y1="-581.63782"
+ x2="230"
+ y2="-578.63782" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10292-3"
+ id="linearGradient54082"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.875, 0, 0, 0.8, -84.875, -1718.04)"
+ x1="345"
+ y1="1173"
+ x2="345"
+ y2="1178" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient13214-4-4"
+ id="linearGradient54084"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(472, 11.6378)"
+ x1="119"
+ y1="1036.2738"
+ x2="119"
+ y2="1052.4967" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient13214-4-4"
+ id="linearGradient54086"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(349, -1742)"
+ x1="119"
+ y1="1036.2738"
+ x2="119"
+ y2="1052.4967" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient13214-3"
+ id="linearGradient54088"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-123, -1753.64)"
+ x1="592.2019"
+ y1="968.76935"
+ x2="592.64386"
+ y2="1000.1472" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient15606-6"
+ id="linearGradient54090"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1, 0, 0, 1.2, 0, 151.925)"
+ x1="481"
+ y1="-759.63782"
+ x2="481"
+ y2="-764.63782" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient13214-3"
+ id="linearGradient54092"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(123, 1753.64)"
+ x1="475"
+ y1="-895.63788"
+ x2="475"
+ y2="-848.63788" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient13214-3"
+ id="linearGradient54094"
+ gradientUnits="userSpaceOnUse"
+ x1="476"
+ y1="-867.13788"
+ x2="498"
+ y2="-867.13788" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient15606-6"
+ id="linearGradient54096"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.5, 0, 0, 1.80001, -231.5, 510.715)"
+ x1="481"
+ y1="-759.63782"
+ x2="481"
+ y2="-764.63782" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10501-8-6"
+ id="linearGradient54098"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.666679, 0, 0, 3, 42.3323, -1964.72)"
+ x1="117.71875"
+ y1="982.36218"
+ x2="117.71875"
+ y2="984.72046" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10501-8-6"
+ id="linearGradient54100"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.666679, 0, 0, 3, 42.3323, -1964.72)"
+ x1="117.71875"
+ y1="982.36218"
+ x2="117.71875"
+ y2="984.72046" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10501-8-6"
+ id="linearGradient54102"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.666679, 0, 0, 3, 42.3323, -1964.72)"
+ x1="117.71875"
+ y1="982.36218"
+ x2="117.71875"
+ y2="984.72046" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10501-8-6"
+ id="linearGradient54104"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.666679, 0, 0, 3, 42.3323, -1964.72)"
+ x1="117.71875"
+ y1="982.36218"
+ x2="117.71875"
+ y2="984.72046" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10501-8-6"
+ id="linearGradient54106"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.666679, 0, 0, 3, 42.3323, -1964.72)"
+ x1="117.71875"
+ y1="982.36218"
+ x2="117.71875"
+ y2="984.72046" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient13785-5"
+ id="linearGradient54134"
+ gradientUnits="userSpaceOnUse"
+ x1="155.75"
+ y1="1016.3622"
+ x2="155.75"
+ y2="1032.3945" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient13785-5"
+ id="linearGradient54136"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.666667, 0, 0, 1, 52.6667, 0)"
+ x1="155.75"
+ y1="1016.3622"
+ x2="155.75"
+ y2="1032.3945" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient13785-5"
+ id="linearGradient54138"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.666667, 0, 0, 1, 52.6667, 0)"
+ x1="155.75"
+ y1="1016.3622"
+ x2="155.75"
+ y2="1032.3945" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient13785-5"
+ id="linearGradient54140"
+ gradientUnits="userSpaceOnUse"
+ x1="155.75"
+ y1="1016.3622"
+ x2="155.75"
+ y2="1032.3945" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient13785-5"
+ id="linearGradient54142"
+ gradientUnits="userSpaceOnUse"
+ x1="155.75"
+ y1="1016.3622"
+ x2="155.75"
+ y2="1032.3945" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient13785-5"
+ id="linearGradient54144"
+ gradientUnits="userSpaceOnUse"
+ x1="155.75"
+ y1="1016.3622"
+ x2="155.75"
+ y2="1032.3945" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient13785-5"
+ id="linearGradient54146"
+ gradientUnits="userSpaceOnUse"
+ x1="155.75"
+ y1="1016.3622"
+ x2="155.75"
+ y2="1032.3945" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient13785-5"
+ id="linearGradient54148"
+ gradientUnits="userSpaceOnUse"
+ x1="155.75"
+ y1="1016.3622"
+ x2="155.75"
+ y2="1032.3945" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient13785-5"
+ id="linearGradient54150"
+ gradientUnits="userSpaceOnUse"
+ x1="155.75"
+ y1="1016.3622"
+ x2="155.75"
+ y2="1032.3945" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient13785-5"
+ id="linearGradient54152"
+ gradientUnits="userSpaceOnUse"
+ x1="155.75"
+ y1="1016.3622"
+ x2="155.75"
+ y2="1032.3945" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10125-8"
+ id="linearGradient54154"
+ gradientUnits="userSpaceOnUse"
+ x1="993.01337"
+ y1="-705.58411"
+ x2="993.01337"
+ y2="-689.63782" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6989-5"
+ id="linearGradient54156"
+ gradientUnits="userSpaceOnUse"
+ x1="1180.158"
+ y1="688.52631"
+ x2="1180.158"
+ y2="658.13159" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6975-88"
+ id="linearGradient54158"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.680908, 0, 0, 0.644974, 208.441, -1341.36)"
+ x1="1162.5912"
+ y1="901.15546"
+ x2="1162.5912"
+ y2="887.43439" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6989-5"
+ id="linearGradient54160"
+ gradientUnits="userSpaceOnUse"
+ x1="1180.158"
+ y1="688.52631"
+ x2="1180.158"
+ y2="658.13159" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10125-8"
+ id="linearGradient54162"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.34375, 0, 0, 0.34375, 650.25, 1242.2)"
+ x1="1057"
+ y1="-1073.6378"
+ x2="1057"
+ y2="-1121.6688" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6975-88"
+ id="linearGradient54164"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.990412, 0, 0, 0.93163, -143.859, -1696.68)"
+ x1="1162.5912"
+ y1="901.15546"
+ x2="1162.5912"
+ y2="887.43439" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9334-46-1"
+ id="linearGradient54166"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(2.28571, 0, 0, 2, 1253.14, -2737.36)"
+ x1="117.71875"
+ y1="976.30396"
+ x2="117.71875"
+ y2="992.23761" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9334-1"
+ id="radialGradient54168"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1, 0, 0, 2, 0, -1000)"
+ cx="3187.0581"
+ cy="999.40613"
+ fx="3187.0581"
+ fy="999.40613"
+ r="2.5" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9364-1"
+ id="linearGradient54170"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.289643, 0, 0, 0.236634, 2212.09, -506.356)"
+ x1="3067.7839"
+ y1="-1071.481"
+ x2="3057.1631"
+ y2="-1096.1685" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9364-1"
+ id="linearGradient54172"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(-0.245623, 0.101317, 0.0827143, 0.200524, 3940.23, -855.97)"
+ x1="3067.7839"
+ y1="-1071.481"
+ x2="3057.1631"
+ y2="-1096.1685" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9364-1"
+ id="linearGradient54174"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(-0.194389, 0.178252, -0.143563, -0.0063725, 3539.54, -1314.88)"
+ x1="3067.7839"
+ y1="-1071.481"
+ x2="3057.1631"
+ y2="-1096.1685" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10501-8-6"
+ id="linearGradient54176"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.249911, 0, 0, 3, 87.7605, -1964.72)"
+ x1="117.71875"
+ y1="982.36218"
+ x2="117.71875"
+ y2="984.72046" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10501-8-6"
+ id="linearGradient54178"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.666679, 0, 0, 3, 42.3323, -1964.72)"
+ x1="117.71875"
+ y1="982.36218"
+ x2="117.71875"
+ y2="984.72046" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10501-8-6"
+ id="linearGradient54180"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.166575, 0, 0, 3, 96.8443, -1964.72)"
+ x1="117.71875"
+ y1="982.36218"
+ x2="117.71875"
+ y2="984.72046" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10501-8-6"
+ id="linearGradient54182"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.333215, 0, 0, 3, 78.6804, -1964.72)"
+ x1="117.71875"
+ y1="982.36218"
+ x2="117.71875"
+ y2="984.72046" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10501-8-6"
+ id="linearGradient54184"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.666679, 0, 0, 3, 42.3323, -1964.72)"
+ x1="117.71875"
+ y1="982.36218"
+ x2="117.71875"
+ y2="984.72046" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10501-8-6"
+ id="linearGradient54186"
+ gradientUnits="userSpaceOnUse"
+ x1="3212.4009"
+ y1="1055.399"
+ x2="3212.4009"
+ y2="1061.0143" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10501-8-62"
+ id="linearGradient54188"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(3.00001, 0, 0, 1, 874.999, -53)"
+ x1="215"
+ y1="-824.63782"
+ x2="215"
+ y2="-802.63782" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9334-1"
+ id="radialGradient54190"
+ gradientUnits="userSpaceOnUse"
+ cx="3230"
+ cy="890"
+ fx="3230"
+ fy="890"
+ r="6.5" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9334-1"
+ id="linearGradient54207"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0, 1, -1.25, 0, -1164, -101.5)"
+ x1="-774.45032"
+ y1="-4670.3125"
+ x2="-766.13708"
+ y2="-4670.3125" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient15606-5"
+ id="linearGradient54211"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.21428, 0, 0, 1.37501, -997.33, 188.869)"
+ x1="4662"
+ y1="-767.63782"
+ x2="4662"
+ y2="-775.63782" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10286-6"
+ id="linearGradient54216"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(2.55556, 0, 0, 2.42854, 4015.33, -3355.49)"
+ x1="253.17458"
+ y1="1025.8378"
+ x2="253.17458"
+ y2="1023.5808" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10292-3"
+ id="linearGradient54218"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1, 0, 0, 0.857132, 0.99879, -207.456)"
+ x1="4657"
+ y1="-765.63782"
+ x2="4657"
+ y2="-770.63782" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10286-6"
+ id="linearGradient54223"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(2.88889, 0, 0, 2.66667, 3931.83, -3599.77)"
+ x1="251.85789"
+ y1="1029.0981"
+ x2="251.85789"
+ y2="1025.8622" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10292-9-5"
+ id="linearGradient54225"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.13043, 0, 0, 1.15055, -606.11, 17.3416)"
+ x1="4656"
+ y1="-766.63782"
+ x2="4656"
+ y2="-755.63782" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9334-1"
+ id="linearGradient54239"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0, 1, -1, 0, -0.00121778, 1.50001)"
+ x1="-774.45032"
+ y1="-4670.3125"
+ x2="-769.13782"
+ y2="-4670.25" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient15606-5"
+ id="linearGradient54242"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.14285, 0, 0, 0.999998, -666.546, 0.998378)"
+ x1="4662"
+ y1="-767.63782"
+ x2="4662"
+ y2="-775.63782" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10286-6"
+ id="linearGradient54247"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(2.55556, 0, 0, 2.42854, 4014.33, -3256.49)"
+ x1="253.17458"
+ y1="1025.8378"
+ x2="253.17458"
+ y2="1024.004" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10292-3"
+ id="linearGradient54249"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1, 0, 0, 0.857132, -0.00120978, -108.456)"
+ x1="4657"
+ y1="-765.63782"
+ x2="4657"
+ y2="-770.63782" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10286-6"
+ id="linearGradient54254"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(2.55556, 0, 0, 1.98438, 4014.33, -2800.84)"
+ x1="251.85789"
+ y1="1029.0981"
+ x2="251.85789"
+ y2="1025.8622" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10292-9-5"
+ id="linearGradient54256"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1, 0, 0, 0.856173, -0.00120978, -109.191)"
+ x1="4656"
+ y1="-766.63782"
+ x2="4656"
+ y2="-755.63782" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9364-1"
+ id="linearGradient54411"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.379315, 0, 0, 0.346155, 2076.43, -426.416)"
+ x1="3404.9995"
+ y1="-1092.6378"
+ x2="3404.9995"
+ y2="-1117.6578" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9364-1"
+ id="linearGradient54414"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.379315, 0, 0, 0.346155, 2089.43, -426.416)"
+ x1="3404.9995"
+ y1="-1092.6378"
+ x2="3404.9995"
+ y2="-1117.6578" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9364-1"
+ id="linearGradient54417"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.379315, 0, 0, 0.346155, 2089.43, -437.416)"
+ x1="3404.9995"
+ y1="-1092.6378"
+ x2="3404.9995"
+ y2="-1117.6578" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9364-1"
+ id="linearGradient54420"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.379315, 0, 0, 0.346155, 2076.43, -437.416)"
+ x1="3404.9995"
+ y1="-1092.6378"
+ x2="3404.9995"
+ y2="-1117.6578" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9364-1"
+ id="linearGradient54467"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.379315, 0, 0, 0.346155, 2076.43, -479.416)"
+ x1="3404.9995"
+ y1="-1092.6378"
+ x2="3404.9995"
+ y2="-1117.6578" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9364-1"
+ id="linearGradient54470"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.379315, 0, 0, 0.346155, 2089.43, -479.416)"
+ x1="3404.9995"
+ y1="-1092.6378"
+ x2="3404.9995"
+ y2="-1117.6578" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9364-1"
+ id="linearGradient54473"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.379315, 0, 0, 0.346155, 2089.43, -490.416)"
+ x1="3404.9995"
+ y1="-1092.6378"
+ x2="3404.9995"
+ y2="-1117.6578" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9364-1"
+ id="linearGradient54476"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.379315, 0, 0, 0.346155, 2076.43, -490.416)"
+ x1="3404.9995"
+ y1="-1092.6378"
+ x2="3404.9995"
+ y2="-1117.6578" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient16134-3-1-9"
+ id="radialGradient54487"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0, 0.0755692, -0.487352, -1.82964e-05, 3514.88, -735.178)"
+ cx="152.3331"
+ cy="-754.6377"
+ fx="152.3331"
+ fy="-754.6377"
+ r="15" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9233"
+ id="linearGradient54552"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0, 0.747364, 0.569333, 0, 4096.95, -644.632)"
+ x1="-154.33705"
+ y1="549.84833"
+ x2="-172.614"
+ y2="549.84833" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient13214-3"
+ id="linearGradient54554"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-0.00120978, -0.99999)"
+ x1="4413"
+ y1="-772.63782"
+ x2="4413"
+ y2="-758.60211" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9233"
+ id="linearGradient54558"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0, 1.20729, 0.919698, 0, 3912.3, -671.166)"
+ x1="-154.33705"
+ y1="549.84833"
+ x2="-172.614"
+ y2="549.84833" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient13214-3"
+ id="linearGradient54560"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.6154, 0, 0, 1.6154, -2705.9, 368.556)"
+ x1="4413"
+ y1="-772.63782"
+ x2="4413"
+ y2="-758.60211" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient16134-3-1-9"
+ id="radialGradient54563"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.00167615, 0.135267, -0.557168, 0.00991986, 3997.26, -870.786)"
+ cx="152.3331"
+ cy="-754.6377"
+ fx="152.3331"
+ fy="-754.6377"
+ r="15" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9233"
+ id="linearGradient54566"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0, 0.747364, 0.569333, 0, 4096.95, -644.632)"
+ x1="-154.33705"
+ y1="549.84833"
+ x2="-172.614"
+ y2="549.84833" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient13214-3"
+ id="linearGradient54568"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-0.00120978, -0.99999)"
+ x1="4413"
+ y1="-772.63782"
+ x2="4413"
+ y2="-758.60211" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient16134-3-1-9"
+ id="radialGradient54571"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.00100569, 0.06763, -0.334302, 0.00495968, 4157.55, -766.212)"
+ cx="152.3331"
+ cy="-754.6377"
+ fx="152.3331"
+ fy="-754.6377"
+ r="15" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9233"
+ id="linearGradient54574"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0, 0.747364, 0.569333, 0, 4096.95, -644.632)"
+ x1="-154.33705"
+ y1="549.84833"
+ x2="-172.614"
+ y2="549.84833" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient13214-3"
+ id="linearGradient54576"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-0.00120978, -0.99999)"
+ x1="4413"
+ y1="-772.63782"
+ x2="4413"
+ y2="-758.60211" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient13220-3"
+ id="linearGradient54579"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.285714, 0, 0, 0.677081, 3736.43, 1489.62)"
+ x1="525.63947"
+ y1="-1078.6444"
+ x2="525.63947"
+ y2="-1068.7872" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6975-88"
+ id="linearGradient54583"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.285714, 0, 0, 0.444441, 3733.43, 1238.81)"
+ x1="525.63947"
+ y1="-1078.6444"
+ x2="525.63947"
+ y2="-1068.7872" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6989-5"
+ id="linearGradient54587"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.285714, 0, 0, 1.1111, 3730.43, 1957.55)"
+ x1="525.63947"
+ y1="-1078.6444"
+ x2="525.63947"
+ y2="-1068.7872" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9364-1"
+ id="linearGradient54591"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.285714, 0, 0, 0.777773, 3727.43, 1598.18)"
+ x1="525.63947"
+ y1="-1078.6444"
+ x2="525.63947"
+ y2="-1068.7872" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient16134-3-1-9"
+ id="radialGradient54599"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0, 0.0755692, -0.487352, -1.82964e-05, 3514.88, -772.178)"
+ cx="152.3331"
+ cy="-754.6377"
+ fx="152.3331"
+ fy="-754.6377"
+ r="15" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient15606-6"
+ id="linearGradient54602"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.361538, 0, 0, 0.6, 3617.86, -121.455)"
+ x1="714"
+ y1="-1063.6378"
+ x2="714"
+ y2="-1083.6378" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10286-6"
+ id="linearGradient54605"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.4, 0, 0, 0.499998, 3666.8, -227.321)"
+ x1="523"
+ y1="-1064.6378"
+ x2="523"
+ y2="-1088.6378" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient16134-3-1-9"
+ id="radialGradient54613"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0, 0.111737, -0.76475, -2.7053e-05, 3314.36, -822.179)"
+ cx="152.3331"
+ cy="-754.6377"
+ fx="152.3331"
+ fy="-754.6377"
+ r="15" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient13220-3"
+ id="linearGradient54618"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.285714, 0, 0, 0.999989, 3747.43, 1936.76)"
+ x1="525.63947"
+ y1="-1078.6444"
+ x2="525.63947"
+ y2="-1068.7872" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6975-88"
+ id="linearGradient54622"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.285714, 0, 0, 0.666656, 3742.43, 1577.38)"
+ x1="525.63947"
+ y1="-1078.6444"
+ x2="525.63947"
+ y2="-1068.7872" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6989-5"
+ id="linearGradient54626"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.285714, 0, 0, 1.77778, 3737.43, 2775.32)"
+ x1="525.63947"
+ y1="-1078.6444"
+ x2="525.63947"
+ y2="-1068.7872" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9364-1"
+ id="linearGradient54630"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.285714, 0, 0, 1.22222, 3732.43, 2176.36)"
+ x1="525.63947"
+ y1="-1078.6444"
+ x2="525.63947"
+ y2="-1068.7872" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient16134-3-1-9"
+ id="radialGradient54639"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0, 0.111737, -0.69825, -2.7053e-05, 3363.55, -875.179)"
+ cx="152.3331"
+ cy="-754.6377"
+ fx="152.3331"
+ fy="-754.6377"
+ r="15" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient15606-6"
+ id="linearGradient54642"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.538462, 0, 0, 0.999997, 3495.54, 206.997)"
+ x1="714"
+ y1="-1063.6378"
+ x2="714"
+ y2="-1083.6378" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10286-6"
+ id="linearGradient54645"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.6, 0, 0, 0.833332, 3566.2, 30.5588)"
+ x1="523"
+ y1="-1064.6378"
+ x2="523"
+ y2="-1088.6378" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6787-1-2-3-6-5-6-3-0-2"
+ id="linearGradient54674"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.146888, 0.0393587, -0.0393587, 0.146888, 4171.1, -942.834)"
+ x1="93.520416"
+ y1="1232.484"
+ x2="41.671326"
+ y2="1054.9363" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6787-1-2-3-6-5-6-3-0-6"
+ id="linearGradient54678"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.0737396, 0.0197585, -0.0197585, 0.0737396, 4149.12, -785.106)"
+ x1="276.77887"
+ y1="747.67523"
+ x2="276.77887"
+ y2="712.81598" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10292-9-5"
+ id="linearGradient54794"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(-1, 0, 0, 1, 3830.5, -1892)"
+ x1="195.75"
+ y1="1016.2372"
+ x2="195.75"
+ y2="1032.2383" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10292-9-5"
+ id="linearGradient54797"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(3435.5, -1891.5)"
+ x1="195.75"
+ y1="1016.2372"
+ x2="195.75"
+ y2="1032.2383" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient15606-5"
+ id="linearGradient54806"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.5, 0, 0, 1.57143, -1803, 336.508)"
+ x1="3618.4375"
+ y1="-758.63782"
+ x2="3618.4375"
+ y2="-772.63782" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10292-9-5"
+ id="linearGradient54809"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(-1, 0, 0, 1, 3821.5, -1791.5)"
+ x1="195.75"
+ y1="1006.8059"
+ x2="195.75"
+ y2="1038.8622" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10292-9-5"
+ id="linearGradient54812"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(3426.5, -1791)"
+ x1="195.75"
+ y1="1006.3704"
+ x2="195.75"
+ y2="1038.3638" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient15606-5"
+ id="linearGradient54821"
+ gradientUnits="userSpaceOnUse"
+ x1="3618.4375"
+ y1="-758.63782"
+ x2="3618.4375"
+ y2="-772.63782"
+ gradientTransform="translate(-0.00120978, 9.9e-06)" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10292-9-5"
+ id="linearGradient54827"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(-1, 0, 0, 1, 3813, -1722)"
+ x1="195.75"
+ y1="1016.2372"
+ x2="195.75"
+ y2="1032.2383" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10292-9-5"
+ id="linearGradient54830"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(3418.5, -1722)"
+ x1="195.75"
+ y1="1016.2372"
+ x2="195.75"
+ y2="1032.2383" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10292-9-5"
+ id="linearGradient54833"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(3418.5, -1722)"
+ x1="195.75"
+ y1="1016.2372"
+ x2="195.75"
+ y2="1032.2383" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient13785-5"
+ id="linearGradient54875"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.388889, 0, 0, 0.5, 595.11, -270.819)"
+ x1="370"
+ y1="-1048.6724"
+ x2="370"
+ y2="-918.60181" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient13785-5"
+ id="linearGradient54879"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.388889, 0, 0, 0.5, 595.11, -273.819)"
+ x1="370"
+ y1="-1048.6724"
+ x2="370"
+ y2="-918.60181" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient15606-6"
+ id="linearGradient54883"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.233333, 0, 0, 0.3, 557.132, -436.946)"
+ x1="812"
+ y1="-1075.6378"
+ x2="812"
+ y2="-1115.6378" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient13791-7"
+ id="linearGradient54886"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.636364, 0, 0, 0.750001, 264.362, -114.158)"
+ x1="756"
+ y1="-860.63782"
+ x2="756"
+ y2="-876.63782" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient13214-3"
+ id="linearGradient54890"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.481781, 0, 0, 0.479069, 326.177, -363.226)"
+ x1="889"
+ y1="-1054.6378"
+ x2="881.77307"
+ y2="-1044.5505" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient15606-5"
+ id="linearGradient54893"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.153846, 0, 0, 0.300001, 641.153, -544.546)"
+ x1="714"
+ y1="-1063.6378"
+ x2="714"
+ y2="-1083.6378" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10286-8"
+ id="linearGradient54896"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.171429, 0, 0, 0.250001, 661.342, -597.477)"
+ x1="523"
+ y1="-1064.6378"
+ x2="523"
+ y2="-1088.6378" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient13785-5"
+ id="linearGradient54901"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.277778, 0, 0, 0.5, 641.221, -371.819)"
+ x1="370"
+ y1="-1048.6724"
+ x2="370"
+ y2="-918.60181" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient13785-5"
+ id="linearGradient54905"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.277778, 0, 0, 0.5, 641.221, -374.819)"
+ x1="370"
+ y1="-1048.6724"
+ x2="370"
+ y2="-918.60181" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient13785-5"
+ id="linearGradient54909"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.277778, 0, 0, 0.5, 641.221, -377.819)"
+ x1="370"
+ y1="-1048.6724"
+ x2="370"
+ y2="-918.60181" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient15606-6"
+ id="linearGradient54913"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.366667, 0, 0, 0.4, 460.065, -430.382)"
+ x1="812"
+ y1="-1075.6378"
+ x2="812"
+ y2="-1115.6378" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient16134-3-1-9"
+ id="radialGradient54916"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(7.61786e-07, 0.0676854, -0.802004, 0, 143.747, -866.963)"
+ cx="152.3331"
+ cy="-754.6377"
+ fx="152.3331"
+ fy="-754.6377"
+ r="15" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient13791-7"
+ id="linearGradient54919"
+ gradientUnits="userSpaceOnUse"
+ x1="756"
+ y1="-860.63782"
+ x2="756"
+ y2="-876.63782"
+ gradientTransform="translate(-0.00120978, 9.9e-06)" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient14494-2-7"
+ id="linearGradient54948"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(744.499, -1697.64)"
+ x1="525.4375"
+ y1="836.1875"
+ x2="516.65625"
+ y2="828.5" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient14494-2-7"
+ id="linearGradient54952"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(744.499, -1693.14)"
+ x1="525.4375"
+ y1="836.1875"
+ x2="516.65625"
+ y2="828.5" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient14494-5"
+ id="linearGradient54969"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.334262, 0, 0, 0.351648, 1089.29, -1023.45)"
+ x1="520.58502"
+ y1="735.05206"
+ x2="516.15179"
+ y2="720.86298" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient14494-5"
+ id="linearGradient54972"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.334262, 0, 0, 0.351648, 1089.29, -1018.95)"
+ x1="520.58502"
+ y1="735.05206"
+ x2="516.15179"
+ y2="720.86298" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10292-4"
+ id="linearGradient56512"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(2.99994, 0, 0, 2.99948, 4115.01, -3917.24)"
+ x1="121.30617"
+ y1="976.37823"
+ x2="121.30617"
+ y2="992.4245" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient15310"
+ id="radialGradient56784"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.978638, 0.697642, -0.77137, 1.08205, 542.961, -883.643)"
+ cx="1181.0177"
+ cy="672.73138"
+ fx="1181.0177"
+ fy="672.73138"
+ r="16.5" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9364"
+ id="linearGradient56786"
+ gradientUnits="userSpaceOnUse"
+ x1="3065.4424"
+ y1="-1071.2629"
+ x2="3051.4128"
+ y2="-1082.9504" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9364"
+ id="linearGradient56788"
+ gradientUnits="userSpaceOnUse"
+ x1="3054.2241"
+ y1="-1072.6486"
+ x2="3059.6841"
+ y2="-1099.3986" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9364"
+ id="linearGradient56790"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.14289, 0.0903025, -0.123907, 0.996556, -574.642, -278.417)"
+ x1="3075.2966"
+ y1="-1093.031"
+ x2="3049.6565"
+ y2="-1085.656" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9364"
+ id="linearGradient56792"
+ gradientUnits="userSpaceOnUse"
+ x1="3075.0718"
+ y1="-1074.9625"
+ x2="3066.395"
+ y2="-1098.3375" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9364"
+ id="linearGradient56794"
+ gradientUnits="userSpaceOnUse"
+ x1="3067.7839"
+ y1="-1071.481"
+ x2="3057.1631"
+ y2="-1096.1685" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9364"
+ id="linearGradient56796"
+ gradientUnits="userSpaceOnUse"
+ x1="3069.7163"
+ y1="-1071.3759"
+ x2="3059.8894"
+ y2="-1092.9384" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9364"
+ id="linearGradient56798"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.970083, 0.242775, -0.242775, 0.970083, -167.008, -775.513)"
+ x1="3070.9216"
+ y1="-1072.243"
+ x2="3058.1338"
+ y2="-1095.993" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9364"
+ id="linearGradient56800"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.959184, -0.282783, 0.282783, 0.959184, 429.14, 820.107)"
+ x1="3070.9216"
+ y1="-1072.243"
+ x2="3058.1338"
+ y2="-1095.993" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient15316"
+ id="radialGradient56802"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(-3.95791e-06, 0.962583, -1.02418, -4.35308e-06, 3857.69, -2401.15)"
+ cx="3180.9375"
+ cy="660.76562"
+ fx="3180.9375"
+ fy="660.76562"
+ r="1.5" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient15263"
+ id="linearGradient56810"
+ gradientUnits="userSpaceOnUse"
+ x1="1184.6832"
+ y1="685.5484"
+ x2="1184.6832"
+ y2="662.02148" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient15316"
+ id="radialGradient56812"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(-3.95791e-06, 0.962583, -1.02418, -4.35308e-06, 3857.69, -2401.15)"
+ cx="3180.9375"
+ cy="660.76562"
+ fx="3180.9375"
+ fy="660.76562"
+ r="1.5" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient15316"
+ id="radialGradient56814"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(-3.95791e-06, 0.962583, -1.02418, -4.35308e-06, 3857.69, -2401.15)"
+ cx="3180.9375"
+ cy="660.76562"
+ fx="3180.9375"
+ fy="660.76562"
+ r="1.5" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient15316"
+ id="radialGradient56816"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(-3.95791e-06, 0.962583, -1.02418, -4.35308e-06, 3857.69, -2401.15)"
+ cx="3180.9375"
+ cy="660.76562"
+ fx="3180.9375"
+ fy="660.76562"
+ r="1.5" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient15316"
+ id="radialGradient56818"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(-3.95791e-06, 0.962583, -1.02418, -4.35308e-06, 3857.69, -2401.15)"
+ cx="3180.9375"
+ cy="660.76562"
+ fx="3180.9375"
+ fy="660.76562"
+ r="1.5" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10501-8-4-63-3-0-5-88-1-3-6-4"
+ id="linearGradient56896"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.111111, 0, 0, 0.5, 4143.89, -451.817)"
+ x1="370"
+ y1="-985.76282"
+ x2="370"
+ y2="-933.63782" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient13791"
+ id="linearGradient57514"
+ gradientUnits="userSpaceOnUse"
+ x1="809.625"
+ y1="-1074.7628"
+ x2="809.625"
+ y2="-1116.7638"
+ gradientTransform="translate(0, 130)" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient16501"
+ id="linearGradient57731"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-63, -1624.14)"
+ x1="1348.0002"
+ y1="663.48438"
+ x2="1398.0002"
+ y2="663.48438" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient18896"
+ id="linearGradient57853"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(-1.66667, 0, 0, 1, 9066.67, 1)"
+ x1="3375.7883"
+ y1="-1109.0128"
+ x2="3381.8809"
+ y2="-1109.0128" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient18896"
+ id="linearGradient57857"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.66667, 0, 0, 1, -2250.67, 1)"
+ x1="3375.7644"
+ y1="-1109.0128"
+ x2="3381.8809"
+ y2="-1109.0128" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient9364"
+ id="linearGradient57859"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.74992, 0, 0, 1.49998, 3002.52, -245.193)"
+ x1="230"
+ y1="-581.63782"
+ x2="230"
+ y2="-578.63782" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10755"
+ id="linearGradient57861"
+ gradientUnits="userSpaceOnUse"
+ x1="445.69522"
+ y1="1103.5776"
+ x2="441.38797"
+ y2="1099.8198" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10292-98"
+ id="linearGradient57863"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.74999, 0, 0, 1.6513, 2787.25, -3053.92)"
+ x1="345"
+ y1="1173"
+ x2="345"
+ y2="1178" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient13374"
+ id="linearGradient63284"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(4.00012, 0, 0, 4, -875.079, 1971.85)"
+ x1="675.36932"
+ y1="-768.73004"
+ x2="675.36932"
+ y2="-781.99878" />
+ <linearGradient
+ id="linearGradient10286-9">
+ <stop
+ id="stop10288-5"
+ offset="0"
+ style="stop-color: rgb(179, 179, 179); stop-opacity: 1;" />
+ <stop
+ id="stop10290-63"
+ offset="1"
+ style="stop-color: rgb(230, 230, 230); stop-opacity: 1;" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient15606-9"
+ id="linearGradient64330"
+ gradientUnits="userSpaceOnUse"
+ x1="4273"
+ y1="663.19147"
+ x2="4273"
+ y2="597.06079" />
+ <linearGradient
+ id="linearGradient15606-9">
+ <stop
+ style="stop-color: rgb(255, 255, 255); stop-opacity: 0.588235;"
+ offset="0"
+ id="stop15608-5" />
+ <stop
+ style="stop-color: rgb(255, 255, 255); stop-opacity: 0.862745;"
+ offset="1"
+ id="stop15610-3" />
+ </linearGradient>
+ <linearGradient
+ y2="597.06079"
+ x2="4273"
+ y1="663.19147"
+ x1="4273"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient71247"
+ xlink:href="#linearGradient15606-9"
+ inkscape:collect="always" />
+ <linearGradient
+ id="linearGradient6787-1-2-3-6-5-6-3-0-8">
+ <stop
+ id="stop6789-2-7-9-01-7-1-2-0-57"
+ offset="0"
+ style="stop-color: rgb(128, 128, 128); stop-opacity: 1;" />
+ <stop
+ id="stop6791-8-7-1-9-5-5-9-5-5"
+ offset="1"
+ style="stop-color: rgb(77, 77, 77); stop-opacity: 1;" />
+ </linearGradient>
+ <radialGradient
+ r="20.000019"
+ fy="-1079.1608"
+ fx="4200.1958"
+ cy="-1079.1608"
+ cx="4200.1958"
+ gradientTransform="matrix(1, 0, 0, 0.995981, -4180.45, 1100.12)"
+ gradientUnits="userSpaceOnUse"
+ id="radialGradient71301"
+ xlink:href="#linearGradient6787-1-2-3-6-5-6-3-0-8"
+ inkscape:collect="always" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6787-1-2-3-6-5-6-3-0"
+ id="radialGradient71325"
+ cx="4323.6729"
+ cy="680.79028"
+ fx="4323.6729"
+ fy="680.79028"
+ r="20.95895"
+ gradientTransform="matrix(1, 0, 0, 0.954246, 0, 30.8646)"
+ gradientUnits="userSpaceOnUse" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6787-1-2-3-6-5-6-3-0-3"
+ id="radialGradient71325-6"
+ cx="4323.6729"
+ cy="680.79028"
+ fx="4323.6729"
+ fy="680.79028"
+ r="20.95895"
+ gradientTransform="matrix(1, 0, 0, 0.954246, 0, 30.8646)"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ id="linearGradient6787-1-2-3-6-5-6-3-0-3">
+ <stop
+ id="stop6789-2-7-9-01-7-1-2-0-1"
+ offset="0"
+ style="stop-color: rgb(128, 128, 128); stop-opacity: 1;" />
+ <stop
+ id="stop6791-8-7-1-9-5-5-9-5-31"
+ offset="1"
+ style="stop-color: rgb(77, 77, 77); stop-opacity: 1;" />
+ </linearGradient>
+ <linearGradient
+ y2="597.06079"
+ x2="4273"
+ y1="663.19147"
+ x1="4273"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient71247-4"
+ xlink:href="#linearGradient15606-9-2"
+ inkscape:collect="always" />
+ <linearGradient
+ id="linearGradient15606-9-2">
+ <stop
+ style="stop-color: rgb(255, 255, 255); stop-opacity: 0.588235;"
+ offset="0"
+ id="stop15608-5-9" />
+ <stop
+ style="stop-color: rgb(255, 255, 255); stop-opacity: 0.862745;"
+ offset="1"
+ id="stop15610-3-3" />
+ </linearGradient>
+ <linearGradient
+ y2="597.06079"
+ x2="4273"
+ y1="663.19147"
+ x1="4273"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient71348"
+ xlink:href="#linearGradient15606-9-2"
+ inkscape:collect="always" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient15606-9-2"
+ id="linearGradient71408"
+ gradientUnits="userSpaceOnUse"
+ x1="4273"
+ y1="663.19147"
+ x2="4273"
+ y2="597.06079" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6787-1-2-3-6-5-6-3-0-3"
+ id="radialGradient71414"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.932012, 0, 0, 0.889369, 170.01, -1684.51)"
+ cx="4323.6729"
+ cy="680.79028"
+ fx="4323.6729"
+ fy="680.79028"
+ r="20.95895" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient19105"
+ id="linearGradient71494"
+ x1="4279.9116"
+ y1="-1083.5575"
+ x2="4320.9795"
+ y2="-1083.5575"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ gradientTransform="translate(-100.009, -0.936212)"
+ inkscape:collect="always"
+ xlink:href="#linearGradient19105-5"
+ id="linearGradient71494-4"
+ x1="4296.6074"
+ y1="-1115.3003"
+ x2="4296.6074"
+ y2="-1055.7104"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient19105-5">
+ <stop
+ style="stop-color: rgb(179, 179, 179); stop-opacity: 1;"
+ offset="0"
+ id="stop19107-7" />
+ <stop
+ style="stop-color: rgb(230, 230, 230); stop-opacity: 1;"
+ offset="1"
+ id="stop19109-9" />
+ </linearGradient>
+ <filter
+ id="filter71529"
+ inkscape:label="Drop shadow"
+ width="1.5"
+ height="1.5"
+ x="-.25"
+ y="-.25">
+ <feGaussianBlur
+ id="feGaussianBlur71531"
+ in="SourceAlpha"
+ stdDeviation="10"
+ result="blur" />
+ <feColorMatrix
+ id="feColorMatrix71533"
+ result="bluralpha"
+ type="matrix"
+ values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0.5 0" />
+ <feOffset
+ id="feOffset71535"
+ in="bluralpha"
+ dx="10"
+ dy="15"
+ result="offsetBlur" />
+ <feMerge
+ id="feMerge71537">
+ <feMergeNode
+ id="feMergeNode71539"
+ in="offsetBlur" />
+ <feMergeNode
+ id="feMergeNode71541"
+ in="SourceGraphic" />
+ </feMerge>
+ </filter>
+ <linearGradient
+ gradientTransform="translate(-20.0093, -0.936212)"
+ inkscape:collect="always"
+ xlink:href="#linearGradient19105-5-9"
+ id="linearGradient71494-4-1"
+ x1="4296.6074"
+ y1="-1115.3003"
+ x2="4296.6074"
+ y2="-1055.7104"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient19105-5-9">
+ <stop
+ style="stop-color: rgb(179, 179, 179); stop-opacity: 1;"
+ offset="0"
+ id="stop19107-7-4" />
+ <stop
+ style="stop-color: rgb(230, 230, 230); stop-opacity: 1;"
+ offset="1"
+ id="stop19109-9-0" />
+ </linearGradient>
+ <linearGradient
+ y2="-1055.7104"
+ x2="4296.6074"
+ y1="-1115.3003"
+ x1="4296.6074"
+ gradientTransform="translate(-105.508, -45.5843)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient71572"
+ xlink:href="#linearGradient19105-5-9"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="-1055.7104"
+ x2="4296.6074"
+ y1="-1115.3003"
+ x1="4296.6074"
+ gradientTransform="translate(-105.508, -45.5843)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient71572-1"
+ xlink:href="#linearGradient19105-5-9-7"
+ inkscape:collect="always" />
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient19105-5-9-7">
+ <stop
+ style="stop-color: rgb(179, 179, 179); stop-opacity: 1;"
+ offset="0"
+ id="stop19107-7-4-9" />
+ <stop
+ style="stop-color: rgb(230, 230, 230); stop-opacity: 1;"
+ offset="1"
+ id="stop19109-9-0-1" />
+ </linearGradient>
+ <linearGradient
+ y2="-1055.7104"
+ x2="4296.6074"
+ y1="-1115.3003"
+ x1="4296.6074"
+ gradientTransform="translate(-105.508, -49.313)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient71610"
+ xlink:href="#linearGradient19105-5-9-7"
+ inkscape:collect="always" />
+ <linearGradient
+ gradientTransform="translate(-20.0093, -0.936212)"
+ inkscape:collect="always"
+ xlink:href="#linearGradient19105-5-7"
+ id="linearGradient71494-4-7"
+ x1="4296.6074"
+ y1="-1115.3003"
+ x2="4296.6074"
+ y2="-1055.7104"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient19105-5-7">
+ <stop
+ style="stop-color: rgb(179, 179, 179); stop-opacity: 1;"
+ offset="0"
+ id="stop19107-7-44" />
+ <stop
+ style="stop-color: rgb(230, 230, 230); stop-opacity: 1;"
+ offset="1"
+ id="stop19109-9-9" />
+ </linearGradient>
+ <linearGradient
+ y2="-1055.7104"
+ x2="4296.6074"
+ y1="-1115.3003"
+ x1="4296.6074"
+ gradientTransform="translate(-41.2327, -30.2807)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient71644"
+ xlink:href="#linearGradient19105-5-7"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="-1055.7104"
+ x2="4296.6074"
+ y1="-1115.3003"
+ x1="4296.6074"
+ gradientTransform="translate(-41.2327, -30.2807)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient71644-3"
+ xlink:href="#linearGradient19105-5-7-1"
+ inkscape:collect="always" />
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient19105-5-7-1">
+ <stop
+ style="stop-color: rgb(179, 179, 179); stop-opacity: 1;"
+ offset="0"
+ id="stop19107-7-44-0" />
+ <stop
+ style="stop-color: rgb(230, 230, 230); stop-opacity: 1;"
+ offset="1"
+ id="stop19109-9-9-3" />
+ </linearGradient>
+ <linearGradient
+ y2="-1055.7104"
+ x2="4296.6074"
+ y1="-1115.3003"
+ x1="4296.6074"
+ gradientTransform="translate(-41.2327, -33.2807)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient71678"
+ xlink:href="#linearGradient19105-5-7-1"
+ inkscape:collect="always" />
+ <linearGradient
+ gradientTransform="translate(-100.009, -0.936212)"
+ inkscape:collect="always"
+ xlink:href="#linearGradient19105-5-74"
+ id="linearGradient71494-4-6"
+ x1="4296.6074"
+ y1="-1115.3003"
+ x2="4296.6074"
+ y2="-1055.7104"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient19105-5-74">
+ <stop
+ style="stop-color: rgb(179, 179, 179); stop-opacity: 1;"
+ offset="0"
+ id="stop19107-7-2" />
+ <stop
+ style="stop-color: rgb(230, 230, 230); stop-opacity: 1;"
+ offset="1"
+ id="stop19109-9-7" />
+ </linearGradient>
+ <linearGradient
+ y2="-1055.7104"
+ x2="4296.6074"
+ y1="-1115.3003"
+ x1="4296.6074"
+ gradientTransform="translate(-20.0093, -0.936216)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient71780-4"
+ xlink:href="#linearGradient19105-5-74-6"
+ inkscape:collect="always" />
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient19105-5-74-6">
+ <stop
+ style="stop-color: rgb(179, 179, 179); stop-opacity: 1;"
+ offset="0"
+ id="stop19107-7-2-9" />
+ <stop
+ style="stop-color: rgb(230, 230, 230); stop-opacity: 1;"
+ offset="1"
+ id="stop19109-9-7-3" />
+ </linearGradient>
+ <linearGradient
+ gradientTransform="translate(-100.009, -0.936212)"
+ inkscape:collect="always"
+ xlink:href="#linearGradient19105-5-6"
+ id="linearGradient71494-4-9"
+ x1="4296.6074"
+ y1="-1115.3003"
+ x2="4296.6074"
+ y2="-1055.7104"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient19105-5-6">
+ <stop
+ style="stop-color: rgb(179, 179, 179); stop-opacity: 1;"
+ offset="0"
+ id="stop19107-7-49" />
+ <stop
+ style="stop-color: rgb(230, 230, 230); stop-opacity: 1;"
+ offset="1"
+ id="stop19109-9-71" />
+ </linearGradient>
+ <linearGradient
+ y2="-1055.7104"
+ x2="4296.6074"
+ y1="-1115.3003"
+ x1="4296.6074"
+ gradientTransform="translate(-95.7677, 139.13)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient71886"
+ xlink:href="#linearGradient19105-5-6"
+ inkscape:collect="always" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6787-1-2-3-6-5-6-3-0-3-1"
+ id="radialGradient71414-8"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.932012, 0, 0, 0.889369, 170.01, -1684.51)"
+ cx="4323.6729"
+ cy="680.79028"
+ fx="4323.6729"
+ fy="680.79028"
+ r="20.95895" />
+ <linearGradient
+ id="linearGradient6787-1-2-3-6-5-6-3-0-3-1">
+ <stop
+ id="stop6789-2-7-9-01-7-1-2-0-1-9"
+ offset="0"
+ style="stop-color: rgb(128, 128, 128); stop-opacity: 1;" />
+ <stop
+ id="stop6791-8-7-1-9-5-5-9-5-31-2"
+ offset="1"
+ style="stop-color: rgb(77, 77, 77); stop-opacity: 1;" />
+ </linearGradient>
+ <radialGradient
+ r="20.95895"
+ fy="680.79028"
+ fx="4323.6729"
+ cy="680.79028"
+ cx="4323.6729"
+ gradientTransform="matrix(0.932012, 0, 0, 0.889369, 170.01, -1554.51)"
+ gradientUnits="userSpaceOnUse"
+ id="radialGradient71920"
+ xlink:href="#linearGradient6787-1-2-3-6-5-6-3-0-3-1"
+ inkscape:collect="always" />
+ <radialGradient
+ r="20.95895"
+ fy="680.79028"
+ fx="4323.6729"
+ cy="680.79028"
+ cx="4323.6729"
+ gradientTransform="matrix(0.932012, 0, 0, 0.889369, 170.01, -1554.51)"
+ gradientUnits="userSpaceOnUse"
+ id="radialGradient71920-4"
+ xlink:href="#linearGradient6787-1-2-3-6-5-6-3-0-3-1-6"
+ inkscape:collect="always" />
+ <linearGradient
+ id="linearGradient6787-1-2-3-6-5-6-3-0-3-1-6">
+ <stop
+ id="stop6789-2-7-9-01-7-1-2-0-1-9-8"
+ offset="0"
+ style="stop-color: rgb(128, 128, 128); stop-opacity: 1;" />
+ <stop
+ id="stop6791-8-7-1-9-5-5-9-5-31-2-2"
+ offset="1"
+ style="stop-color: rgb(77, 77, 77); stop-opacity: 1;" />
+ </linearGradient>
+ <linearGradient
+ gradientTransform="translate(-100.009, 128.858)"
+ inkscape:collect="always"
+ xlink:href="#linearGradient19105-5-5"
+ id="linearGradient71494-4-63"
+ x1="4296.6074"
+ y1="-1115.3003"
+ x2="4296.6074"
+ y2="-1055.7104"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient19105-5-5">
+ <stop
+ style="stop-color: rgb(179, 179, 179); stop-opacity: 1;"
+ offset="0"
+ id="stop19107-7-25" />
+ <stop
+ style="stop-color: rgb(230, 230, 230); stop-opacity: 1;"
+ offset="1"
+ id="stop19109-9-5" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient19105-1"
+ id="linearGradient19526-8"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1, 0, 0, -1, 0, -2168.97)"
+ x1="4195.8315"
+ y1="-1105.0995"
+ x2="4195.8315"
+ y2="-1064.9633" />
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient19105-1">
+ <stop
+ style="stop-color: rgb(179, 179, 179); stop-opacity: 1;"
+ offset="0"
+ id="stop19107-8" />
+ <stop
+ style="stop-color: rgb(230, 230, 230); stop-opacity: 1;"
+ offset="1"
+ id="stop19109-5" />
+ </linearGradient>
+ <linearGradient
+ y2="-1064.9633"
+ x2="4195.8315"
+ y1="-1105.0995"
+ x1="4195.8315"
+ gradientTransform="matrix(1, 0, 0, -1, 0, -2039.18)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient71993"
+ xlink:href="#linearGradient19105-1"
+ inkscape:collect="always" />
+ <linearGradient
+ gradientTransform="translate(-100.009, 128.858)"
+ inkscape:collect="always"
+ xlink:href="#linearGradient19105-5-5-1"
+ id="linearGradient71494-4-63-0"
+ x1="4296.6074"
+ y1="-1115.3003"
+ x2="4296.6074"
+ y2="-1055.7104"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient19105-5-5-1">
+ <stop
+ style="stop-color: rgb(179, 179, 179); stop-opacity: 1;"
+ offset="0"
+ id="stop19107-7-25-5" />
+ <stop
+ style="stop-color: rgb(230, 230, 230); stop-opacity: 1;"
+ offset="1"
+ id="stop19109-9-5-9" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient19105-4"
+ id="linearGradient19526-2"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1, 0, 0, -1, 0, -2168.97)"
+ x1="4195.8315"
+ y1="-1105.0995"
+ x2="4195.8315"
+ y2="-1064.9633" />
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient19105-4">
+ <stop
+ style="stop-color: rgb(179, 179, 179); stop-opacity: 1;"
+ offset="0"
+ id="stop19107-0" />
+ <stop
+ style="stop-color: rgb(230, 230, 230); stop-opacity: 1;"
+ offset="1"
+ id="stop19109-7" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient10286-0">
+ <stop
+ id="stop10288-9-7"
+ offset="0"
+ style="stop-color: rgb(179, 179, 179); stop-opacity: 1;" />
+ <stop
+ id="stop10290-75"
+ offset="1"
+ style="stop-color: rgb(230, 230, 230); stop-opacity: 1;" />
+ </linearGradient>
+ <linearGradient
+ y2="597.06079"
+ x2="4273"
+ y1="663.19147"
+ x1="4273"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient36515"
+ xlink:href="#linearGradient15606-7"
+ inkscape:collect="always" />
+ <linearGradient
+ id="linearGradient15606-7">
+ <stop
+ style="stop-color: rgb(255, 255, 255); stop-opacity: 0.588235;"
+ offset="0"
+ id="stop15608-9" />
+ <stop
+ style="stop-color: rgb(255, 255, 255); stop-opacity: 0.862745;"
+ offset="1"
+ id="stop15610-0" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10292-9-2"
+ id="linearGradient21568-4-5"
+ x1="4157.6753"
+ y1="-894.80188"
+ x2="4157.6753"
+ y2="-847.63995"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ id="linearGradient10292-3-4"
+ inkscape:collect="always">
+ <stop
+ id="stop10294-6-8"
+ offset="0"
+ style="stop-color: rgb(102, 102, 102); stop-opacity: 1;" />
+ <stop
+ id="stop10296-0-5"
+ offset="1"
+ style="stop-color: rgb(51, 51, 51); stop-opacity: 1;" />
+ </linearGradient>
+ <linearGradient
+ gradientTransform="translate(-4143.99, 876.56)"
+ y2="-847.63995"
+ x2="4157.6753"
+ y1="-894.80188"
+ x1="4157.6753"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient72202"
+ xlink:href="#linearGradient10292-3-4"
+ inkscape:collect="always" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10292"
+ id="linearGradient72228"
+ x1="4301.0864"
+ y1="606.02216"
+ x2="4301.0864"
+ y2="709.52283"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10292-9-2"
+ id="linearGradient72246"
+ gradientUnits="userSpaceOnUse"
+ x1="4157.6753"
+ y1="-894.80188"
+ x2="4157.6753"
+ y2="-847.63995" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10292-9-2-4"
+ id="linearGradient21568-4-5-3"
+ x1="4157.6753"
+ y1="-894.80188"
+ x2="4157.6753"
+ y2="-847.63995"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ id="linearGradient10292-9-2-4"
+ inkscape:collect="always">
+ <stop
+ id="stop10294-9-4-4"
+ offset="0"
+ style="stop-color: rgb(102, 102, 102); stop-opacity: 1;" />
+ <stop
+ id="stop10296-6-0-5"
+ offset="1"
+ style="stop-color: rgb(51, 51, 51); stop-opacity: 1;" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10292-9-2-4"
+ id="linearGradient72246-8"
+ gradientUnits="userSpaceOnUse"
+ x1="4157.6753"
+ y1="-894.80188"
+ x2="4157.6753"
+ y2="-847.63995" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10292-92"
+ id="linearGradient72228-1"
+ x1="4301.0864"
+ y1="606.02216"
+ x2="4301.0864"
+ y2="709.52283"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ id="linearGradient10292-92"
+ inkscape:collect="always">
+ <stop
+ id="stop10294-0"
+ offset="0"
+ style="stop-color: rgb(102, 102, 102); stop-opacity: 1;" />
+ <stop
+ id="stop10296-45"
+ offset="1"
+ style="stop-color: rgb(51, 51, 51); stop-opacity: 1;" />
+ </linearGradient>
+ <linearGradient
+ y2="709.52283"
+ x2="4301.0864"
+ y1="606.02216"
+ x1="4301.0864"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient72276"
+ xlink:href="#linearGradient10292-92"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="709.52283"
+ x2="4301.0864"
+ y1="606.02216"
+ x1="4301.0864"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient72276-8"
+ xlink:href="#linearGradient10292-92-4"
+ inkscape:collect="always" />
+ <linearGradient
+ id="linearGradient10292-92-4"
+ inkscape:collect="always">
+ <stop
+ id="stop10294-0-2"
+ offset="0"
+ style="stop-color: rgb(102, 102, 102); stop-opacity: 1;" />
+ <stop
+ id="stop10296-45-1"
+ offset="1"
+ style="stop-color: rgb(51, 51, 51); stop-opacity: 1;" />
+ </linearGradient>
+ <linearGradient
+ y2="585.81366"
+ x2="4264.375"
+ y1="710.08063"
+ x1="4264.375"
+ gradientTransform="matrix(0.166928, 0, 0, 0.166928, 3414.04, -809.126)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient36728"
+ xlink:href="#linearGradient10292-0-6-6"
+ inkscape:collect="always" />
+ <linearGradient
+ id="linearGradient10292-0-6-6"
+ inkscape:collect="always">
+ <stop
+ id="stop10294-1-1-9"
+ offset="0"
+ style="stop-color: rgb(102, 102, 102); stop-opacity: 1;" />
+ <stop
+ id="stop10296-9-6-5"
+ offset="1"
+ style="stop-color: rgb(51, 51, 51); stop-opacity: 1;" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient10292-0-6"
+ id="linearGradient36675"
+ gradientUnits="userSpaceOnUse"
+ x1="4264.375"
+ y1="710.08063"
+ x2="4264.375"
+ y2="585.81366"
+ gradientTransform="matrix(0.333986, 0, 0, 0.333986, 2822.69, 762.728)" />
+ <linearGradient
+ id="linearGradient10292-0-6"
+ inkscape:collect="always">
+ <stop
+ id="stop10294-1-1"
+ offset="0"
+ style="stop-color: rgb(102, 102, 102); stop-opacity: 1;" />
+ <stop
+ id="stop10296-9-6"
+ offset="1"
+ style="stop-color: rgb(51, 51, 51); stop-opacity: 1;" />
+ </linearGradient>
+ <linearGradient
+ y2="585.81366"
+ x2="4264.375"
+ y1="710.08063"
+ x1="4264.375"
+ gradientTransform="matrix(0.333986, 0, 0, 0.333986, 2699.69, -990.912)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient72404"
+ xlink:href="#linearGradient10292-0-6"
+ inkscape:collect="always" />
+ </defs>
+ <metadata
+ id="metadata7292">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ style="display:inline;opacity:0"
+ inkscape:label="Size Placeholder Document Symbols"
+ id="layer4"
+ inkscape:groupmode="layer"
+ transform="translate(123,1753.64)"
+ sodipodi:insensitive="true">
+ <rect
+ y="-684.63776"
+ x="-63"
+ height="15.999999"
+ width="16"
+ id="rect6274"
+ style="color:#000000;fill:#550000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ inkscape:label="main_16_hc" />
+ <g
+ transform="matrix(1.88976,0,0,1.88977,-156.055,-3559.52)"
+ id="g6322">
+ <rect
+ style="color:#000000;fill:#ffaaaa;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect6324"
+ inkscape:label="writer_256"
+ width="135.46666"
+ height="135.46651"
+ x="190"
+ y="987.36218" />
+ </g>
+ <rect
+ style="color:#000000;fill:#ffaaaa;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect7407"
+ width="16"
+ height="15.999999"
+ x="-63"
+ y="-705.63782"
+ inkscape:label="main_16" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect6274"
+ id="use22294"
+ transform="matrix(2,0,0,2,63,621.638)"
+ width="5033"
+ height="1085"
+ inkscape:label="main_32_hc" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect7407"
+ id="use22296"
+ transform="matrix(2,0,0,2,63,626.638)"
+ width="5033"
+ height="1085"
+ inkscape:label="main_32" />
+ <use
+ height="1085"
+ width="5033"
+ transform="matrix(3,0,0,3,126,1211.28)"
+ id="use22298"
+ xlink:href="#rect6274"
+ y="0"
+ x="0"
+ inkscape:label="main_48_hc" />
+ <use
+ height="1085"
+ width="5033"
+ transform="matrix(3,0,0,3,126,1221.28)"
+ id="use22300"
+ xlink:href="#rect7407"
+ y="0"
+ x="0"
+ inkscape:label="main_48" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect6274"
+ id="use22302"
+ transform="matrix(8,0,0,8,441,4443.46)"
+ width="5033"
+ height="1085"
+ inkscape:label="main_128_hc" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect7407"
+ id="use22304"
+ transform="matrix(8,0,0,8,441,4478.47)"
+ width="5033"
+ height="1085"
+ inkscape:label="main_128" />
+ <use
+ height="1085"
+ width="5033"
+ transform="matrix(16,0,0,16,945,9521.57)"
+ id="use22306"
+ xlink:href="#rect6274"
+ y="0"
+ x="0"
+ style="opacity:0.20000000000000001"
+ inkscape:label="" />
+ <use
+ height="1085"
+ width="5033"
+ transform="matrix(16,0,0,16,945,9596.57)"
+ id="use22308"
+ xlink:href="#rect7407"
+ y="0"
+ x="0"
+ inkscape:label="main_256" />
+ <use
+ height="1085"
+ width="5033"
+ transform="matrix(2,0,0,2,329,621.638)"
+ id="use22310"
+ xlink:href="#rect6274"
+ y="0"
+ x="0"
+ inkscape:label="writer_32_hc" />
+ <use
+ height="1085"
+ width="5033"
+ transform="matrix(2,0,0,2,329,626.638)"
+ id="use22312"
+ xlink:href="#rect7407"
+ y="0"
+ x="0"
+ inkscape:label="writer_32" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect6274"
+ id="use22314"
+ transform="matrix(3,0,0,3,392,1211.28)"
+ width="5033"
+ height="1085"
+ inkscape:label="writer_48_hc" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect7407"
+ id="use22316"
+ transform="matrix(3,0,0,3,392,1221.28)"
+ width="5033"
+ height="1085"
+ inkscape:label="writer_48" />
+ <use
+ height="1085"
+ width="5033"
+ transform="matrix(8,0,0,8,707,4443.46)"
+ id="use22318"
+ xlink:href="#rect6274"
+ y="0"
+ x="0"
+ inkscape:label="writer_128_hc" />
+ <use
+ height="1085"
+ width="5033"
+ transform="matrix(8,0,0,8,707,4478.47)"
+ id="use22320"
+ xlink:href="#rect7407"
+ y="0"
+ x="0"
+ inkscape:label="writer_128" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect6274"
+ id="use22322"
+ transform="matrix(16,0,0,16,1211,9521.57)"
+ width="5033"
+ height="1085"
+ style="opacity:0.20000000000000001" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect6274"
+ id="use22326"
+ transform="translate(266,0)"
+ width="5033"
+ height="1085"
+ inkscape:label="writer_16_hc" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect7407"
+ id="use22328"
+ transform="translate(266,0)"
+ width="5033"
+ height="1085"
+ inkscape:label="writer_16" />
+ <g
+ id="g22330"
+ transform="matrix(1.88976,0,0,1.88977,104.945,-3559.52)">
+ <rect
+ y="987.36218"
+ x="190"
+ height="135.46651"
+ width="135.46666"
+ inkscape:label="calc_256"
+ id="rect22332"
+ style="color:#000000;fill:#ffaaaa;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ </g>
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect6274"
+ id="use22334"
+ transform="matrix(2,0,0,2,590,621.638)"
+ width="5033"
+ height="1085"
+ inkscape:label="calc_32_hc" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect7407"
+ id="use22336"
+ transform="matrix(2,0,0,2,590,626.638)"
+ width="5033"
+ height="1085"
+ inkscape:label="calc_32" />
+ <use
+ height="1085"
+ width="5033"
+ transform="matrix(3,0,0,3,653,1211.28)"
+ id="use22338"
+ xlink:href="#rect6274"
+ y="0"
+ x="0"
+ inkscape:label="calc_48_hc" />
+ <use
+ height="1085"
+ width="5033"
+ transform="matrix(3,0,0,3,653,1221.28)"
+ id="use22340"
+ xlink:href="#rect7407"
+ y="0"
+ x="0"
+ inkscape:label="calc_48" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect6274"
+ id="use22342"
+ transform="matrix(8,0,0,8,968,4443.46)"
+ width="5033"
+ height="1085"
+ inkscape:label="calc_128_hc" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect7407"
+ id="use22344"
+ transform="matrix(8,0,0,8,968,4478.47)"
+ width="5033"
+ height="1085"
+ inkscape:label="calc_128" />
+ <use
+ height="1085"
+ width="5033"
+ transform="matrix(16,0,0,16,1472,9521.57)"
+ id="use22346"
+ xlink:href="#rect6274"
+ y="0"
+ x="0"
+ style="opacity:0.20000000000000001" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(527,0)"
+ id="use22348"
+ xlink:href="#rect6274"
+ y="0"
+ x="0"
+ inkscape:label="calc_16_hc" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(527,0)"
+ id="use22350"
+ xlink:href="#rect7407"
+ y="0"
+ x="0"
+ inkscape:label="calc_16" />
+ <g
+ transform="matrix(1.88976,0,0,1.88977,365.945,-3559.52)"
+ id="g22352">
+ <rect
+ style="color:#000000;fill:#ffaaaa;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect22354"
+ inkscape:label="impress_256"
+ width="135.46666"
+ height="135.46651"
+ x="190"
+ y="987.36218" />
+ </g>
+ <use
+ height="1085"
+ width="5033"
+ transform="matrix(2,0,0,2,851,621.638)"
+ id="use22356"
+ xlink:href="#rect6274"
+ y="0"
+ x="0"
+ inkscape:label="impress_32_hc" />
+ <use
+ height="1085"
+ width="5033"
+ transform="matrix(2,0,0,2,851,626.638)"
+ id="use22358"
+ xlink:href="#rect7407"
+ y="0"
+ x="0"
+ inkscape:label="impress_32" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect6274"
+ id="use22360"
+ transform="matrix(3,0,0,3,914,1211.28)"
+ width="5033"
+ height="1085"
+ inkscape:label="impress_48_hc" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect7407"
+ id="use22362"
+ transform="matrix(3,0,0,3,914,1221.28)"
+ width="5033"
+ height="1085"
+ inkscape:label="impress_48" />
+ <use
+ height="1085"
+ width="5033"
+ transform="matrix(8,0,0,8,1229,4443.46)"
+ id="use22364"
+ xlink:href="#rect6274"
+ y="0"
+ x="0"
+ inkscape:label="impress_128_hc" />
+ <use
+ height="1085"
+ width="5033"
+ transform="matrix(8,0,0,8,1229,4478.47)"
+ id="use22366"
+ xlink:href="#rect7407"
+ y="0"
+ x="0"
+ inkscape:label="impress_128" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect6274"
+ id="use22368"
+ transform="matrix(16,0,0,16,1733,9521.57)"
+ width="5033"
+ height="1085"
+ style="opacity:0.20000000000000001" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect6274"
+ id="use22370"
+ transform="translate(788,0)"
+ width="5033"
+ height="1085"
+ inkscape:label="impress_16_hc" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect7407"
+ id="use22372"
+ transform="translate(788,0)"
+ width="5033"
+ height="1085"
+ inkscape:label="impress_16" />
+ <g
+ id="g22374"
+ transform="matrix(1.88976,0,0,1.88977,626.945,-3559.52)">
+ <rect
+ y="987.36218"
+ x="190"
+ height="135.46651"
+ width="135.46666"
+ id="rect22376"
+ inkscape:label="draw_256"
+ style="color:#000000;fill:#ffaaaa;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ </g>
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect6274"
+ id="use22378"
+ transform="matrix(2,0,0,2,1112,621.638)"
+ width="5033"
+ height="1085"
+ inkscape:label="draw_32_hc" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect7407"
+ id="use22380"
+ transform="matrix(2,0,0,2,1112,626.638)"
+ width="5033"
+ height="1085"
+ inkscape:label="draw_32" />
+ <use
+ height="1085"
+ width="5033"
+ transform="matrix(3,0,0,3,1175,1211.28)"
+ id="use22382"
+ xlink:href="#rect6274"
+ y="0"
+ x="0"
+ inkscape:label="draw_48_hc" />
+ <use
+ height="1085"
+ width="5033"
+ transform="matrix(3,0,0,3,1175,1221.28)"
+ id="use22384"
+ xlink:href="#rect7407"
+ y="0"
+ x="0"
+ inkscape:label="draw_48" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect6274"
+ id="use22386"
+ transform="matrix(8,0,0,8,1490,4443.46)"
+ width="5033"
+ height="1085"
+ inkscape:label="draw_128_hc" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect7407"
+ id="use22388"
+ transform="matrix(8,0,0,8,1490,4478.47)"
+ width="5033"
+ height="1085"
+ inkscape:label="draw_128" />
+ <use
+ height="1085"
+ width="5033"
+ transform="matrix(16,0,0,16,1994,9521.57)"
+ id="use22390"
+ xlink:href="#rect6274"
+ y="0"
+ x="0"
+ style="opacity:0.20000000000000001" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(1049,0)"
+ id="use22392"
+ xlink:href="#rect6274"
+ y="0"
+ x="0"
+ inkscape:label="draw_16_hc" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(1049,0)"
+ id="use22394"
+ xlink:href="#rect7407"
+ y="0"
+ x="0"
+ inkscape:label="draw_16" />
+ <g
+ transform="matrix(1.88976,0,0,1.88977,887.945,-3559.52)"
+ id="g22396">
+ <rect
+ style="color:#000000;fill:#ffaaaa;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect22398"
+ inkscape:label="base_256"
+ width="135.46666"
+ height="135.46651"
+ x="190"
+ y="987.36218" />
+ </g>
+ <use
+ height="1085"
+ width="5033"
+ transform="matrix(2,0,0,2,1373,621.638)"
+ id="use22400"
+ xlink:href="#rect6274"
+ y="0"
+ x="0"
+ inkscape:label="base_32_hc" />
+ <use
+ height="1085"
+ width="5033"
+ transform="matrix(2,0,0,2,1373,626.638)"
+ id="use22402"
+ xlink:href="#rect7407"
+ y="0"
+ x="0"
+ inkscape:label="base_32" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect6274"
+ id="use22404"
+ transform="matrix(3,0,0,3,1436,1211.28)"
+ width="5033"
+ height="1085"
+ inkscape:label="base_48_hc" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect7407"
+ id="use22406"
+ transform="matrix(3,0,0,3,1436,1221.28)"
+ width="5033"
+ height="1085"
+ inkscape:label="base_48" />
+ <use
+ height="1085"
+ width="5033"
+ transform="matrix(8,0,0,8,1751,4443.46)"
+ id="use22408"
+ xlink:href="#rect6274"
+ y="0"
+ x="0"
+ inkscape:label="base_128_hc" />
+ <use
+ height="1085"
+ width="5033"
+ transform="matrix(8,0,0,8,1751,4478.47)"
+ id="use22410"
+ xlink:href="#rect7407"
+ y="0"
+ x="0"
+ inkscape:label="base_128" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect6274"
+ id="use22412"
+ transform="matrix(16,0,0,16,2255,9521.57)"
+ width="5033"
+ height="1085"
+ style="opacity:0.20000000000000001" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect6274"
+ id="use22414"
+ transform="translate(1310,0)"
+ width="5033"
+ height="1085"
+ inkscape:label="base_16_hc" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect7407"
+ id="use22416"
+ transform="translate(1310,0)"
+ width="5033"
+ height="1085"
+ inkscape:label="base_16" />
+ <g
+ id="g22418"
+ transform="matrix(1.88976,0,0,1.88977,1148.94,-3559.52)"
+ inkscape:label="">
+ <rect
+ y="987.36218"
+ x="190"
+ height="135.46651"
+ width="135.46666"
+ id="rect22420"
+ style="color:#000000;fill:#ffaaaa;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ </g>
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect6274"
+ id="use22422"
+ transform="matrix(2,0,0,2,1634,621.638)"
+ width="5033"
+ height="1085"
+ inkscape:label="web_32_hc" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect7407"
+ id="use22424"
+ transform="matrix(2,0,0,2,1634,626.638)"
+ width="5033"
+ height="1085"
+ inkscape:label="web_32" />
+ <use
+ height="1085"
+ width="5033"
+ transform="matrix(3,0,0,3,1697,1211.28)"
+ id="use22426"
+ xlink:href="#rect6274"
+ y="0"
+ x="0"
+ inkscape:label="web_48_hc" />
+ <use
+ height="1085"
+ width="5033"
+ transform="matrix(3,0,0,3,1697,1221.28)"
+ id="use22428"
+ xlink:href="#rect7407"
+ y="0"
+ x="0"
+ inkscape:label="web_48" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect6274"
+ id="use22430"
+ transform="matrix(8,0,0,8,2012,4443.46)"
+ width="5033"
+ height="1085"
+ inkscape:label="web_128_hc" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect7407"
+ id="use22432"
+ transform="matrix(8,0,0,8,2012,4478.47)"
+ width="5033"
+ height="1085"
+ inkscape:label="web_128" />
+ <use
+ height="1085"
+ width="5033"
+ transform="matrix(16,0,0,16,2516,9521.57)"
+ id="use22434"
+ xlink:href="#rect6274"
+ y="0"
+ x="0"
+ style="opacity:0.20000000000000001" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(1571,0)"
+ id="use22436"
+ xlink:href="#rect6274"
+ y="0"
+ x="0"
+ inkscape:label="web_16_hc" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(1571,0)"
+ id="use22438"
+ xlink:href="#rect7407"
+ y="0"
+ x="0"
+ inkscape:label="web_16" />
+ <g
+ transform="matrix(1.88976,0,0,1.88977,1414.94,-3559.52)"
+ id="g22440"
+ inkscape:label="">
+ <rect
+ style="color:#000000;fill:#ffaaaa;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect22442"
+ width="135.46666"
+ height="135.46651"
+ x="190"
+ y="987.36218" />
+ </g>
+ <use
+ height="1085"
+ width="5033"
+ transform="matrix(2,0,0,2,1900,621.638)"
+ id="use22444"
+ xlink:href="#rect6274"
+ y="0"
+ x="0"
+ inkscape:label="writer-template_32_hc" />
+ <use
+ height="1085"
+ width="5033"
+ transform="matrix(2,0,0,2,1900,626.638)"
+ id="use22446"
+ xlink:href="#rect7407"
+ y="0"
+ x="0"
+ inkscape:label="writer-template_32" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect6274"
+ id="use22448"
+ transform="matrix(3,0,0,3,1963,1211.28)"
+ width="5033"
+ height="1085"
+ inkscape:label="writer-template_48_hc" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect7407"
+ id="use22450"
+ transform="matrix(3,0,0,3,1963,1221.28)"
+ width="5033"
+ height="1085"
+ inkscape:label="writer-template_48" />
+ <use
+ height="1085"
+ width="5033"
+ transform="matrix(8,0,0,8,2278,4443.46)"
+ id="use22452"
+ xlink:href="#rect6274"
+ y="0"
+ x="0"
+ inkscape:label="writer-template_128_hc" />
+ <use
+ height="1085"
+ width="5033"
+ transform="matrix(8,0,0,8,2278,4478.47)"
+ id="use22454"
+ xlink:href="#rect7407"
+ y="0"
+ x="0"
+ inkscape:label="writer-template_128" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect6274"
+ id="use22456"
+ transform="matrix(16,0,0,16,2782,9521.57)"
+ width="5033"
+ height="1085"
+ style="opacity:0.20000000000000001" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect6274"
+ id="use22458"
+ transform="translate(1837,0)"
+ width="5033"
+ height="1085"
+ inkscape:label="writer-template_16_hc" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect7407"
+ id="use22460"
+ transform="translate(1837,0)"
+ width="5033"
+ height="1085"
+ inkscape:label="writer-template_16" />
+ <g
+ id="g22462"
+ transform="matrix(1.88976,0,0,1.88977,1675.94,-3559.52)"
+ inkscape:label="">
+ <rect
+ y="987.36218"
+ x="190"
+ height="135.46651"
+ width="135.46666"
+ id="rect22464"
+ style="color:#000000;fill:#ffaaaa;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ </g>
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect6274"
+ id="use22466"
+ transform="matrix(2,0,0,2,2161,621.638)"
+ width="5033"
+ height="1085"
+ inkscape:label="calc-template_32_hc" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect7407"
+ id="use22468"
+ transform="matrix(2,0,0,2,2161,626.638)"
+ width="5033"
+ height="1085"
+ inkscape:label="calc-template_32" />
+ <use
+ height="1085"
+ width="5033"
+ transform="matrix(3,0,0,3,2224,1211.28)"
+ id="use22470"
+ xlink:href="#rect6274"
+ y="0"
+ x="0"
+ inkscape:label="calc-template_48_hc" />
+ <use
+ height="1085"
+ width="5033"
+ transform="matrix(3,0,0,3,2224,1221.28)"
+ id="use22472"
+ xlink:href="#rect7407"
+ y="0"
+ x="0"
+ inkscape:label="calc-template_48" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect6274"
+ id="use22474"
+ transform="matrix(8,0,0,8,2539,4443.46)"
+ width="5033"
+ height="1085"
+ inkscape:label="calc-template_128_hc" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect7407"
+ id="use22476"
+ transform="matrix(8,0,0,8,2539,4478.47)"
+ width="5033"
+ height="1085"
+ inkscape:label="calc-template_128" />
+ <use
+ height="1085"
+ width="5033"
+ transform="matrix(16,0,0,16,3043,9521.57)"
+ id="use22478"
+ xlink:href="#rect6274"
+ y="0"
+ x="0"
+ style="opacity:0.20000000000000001" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(2098,0)"
+ id="use22480"
+ xlink:href="#rect6274"
+ y="0"
+ x="0"
+ inkscape:label="calc-template_16_hc" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(2098,0)"
+ id="use22482"
+ xlink:href="#rect7407"
+ y="0"
+ x="0"
+ inkscape:label="calc-template_16" />
+ <g
+ transform="matrix(1.88976,0,0,1.88977,1936.94,-3559.52)"
+ id="g22484"
+ inkscape:label="">
+ <rect
+ style="color:#000000;fill:#ffaaaa;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect22486"
+ width="135.46666"
+ height="135.46651"
+ x="190"
+ y="987.36218" />
+ </g>
+ <use
+ height="1085"
+ width="5033"
+ transform="matrix(2,0,0,2,2422,621.638)"
+ id="use22488"
+ xlink:href="#rect6274"
+ y="0"
+ x="0"
+ inkscape:label="impress-template_32_hc" />
+ <use
+ height="1085"
+ width="5033"
+ transform="matrix(2,0,0,2,2422,626.638)"
+ id="use22490"
+ xlink:href="#rect7407"
+ y="0"
+ x="0"
+ inkscape:label="impress-template_32" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect6274"
+ id="use22492"
+ transform="matrix(3,0,0,3,2485,1211.28)"
+ width="5033"
+ height="1085"
+ inkscape:label="impress-template_48_hc" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect7407"
+ id="use22494"
+ transform="matrix(3,0,0,3,2485,1221.28)"
+ width="5033"
+ height="1085"
+ inkscape:label="impress-template_48" />
+ <use
+ height="1085"
+ width="5033"
+ transform="matrix(8,0,0,8,2800,4443.46)"
+ id="use22496"
+ xlink:href="#rect6274"
+ y="0"
+ x="0"
+ inkscape:label="impress-template_128_hc" />
+ <use
+ height="1085"
+ width="5033"
+ transform="matrix(8,0,0,8,2800,4478.47)"
+ id="use22498"
+ xlink:href="#rect7407"
+ y="0"
+ x="0"
+ inkscape:label="impress-template_128" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect6274"
+ id="use22500"
+ transform="matrix(16,0,0,16,3304,9521.57)"
+ width="5033"
+ height="1085"
+ style="opacity:0.20000000000000001" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect6274"
+ id="use22502"
+ transform="translate(2359,0)"
+ width="5033"
+ height="1085"
+ inkscape:label="impress-template_16_hc" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect7407"
+ id="use22504"
+ transform="translate(2359,0)"
+ width="5033"
+ height="1085"
+ inkscape:label="impress-template_16" />
+ <g
+ id="g22506"
+ transform="matrix(1.88976,0,0,1.88977,2197.94,-3559.52)"
+ inkscape:label="">
+ <rect
+ y="987.36218"
+ x="190"
+ height="135.46651"
+ width="135.46666"
+ id="rect22508"
+ style="color:#000000;fill:#ffaaaa;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ </g>
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect6274"
+ id="use22510"
+ transform="matrix(2,0,0,2,2683,621.638)"
+ width="5033"
+ height="1085"
+ inkscape:label="draw-template_32_hc" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect7407"
+ id="use22512"
+ transform="matrix(2,0,0,2,2683,626.638)"
+ width="5033"
+ height="1085"
+ inkscape:label="draw-template_32" />
+ <use
+ height="1085"
+ width="5033"
+ transform="matrix(3,0,0,3,2746,1211.28)"
+ id="use22514"
+ xlink:href="#rect6274"
+ y="0"
+ x="0"
+ inkscape:label="draw-template_48_hc" />
+ <use
+ height="1085"
+ width="5033"
+ transform="matrix(3,0,0,3,2746,1221.28)"
+ id="use22516"
+ xlink:href="#rect7407"
+ y="0"
+ x="0"
+ inkscape:label="draw-template_48" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect6274"
+ id="use22518"
+ transform="matrix(8,0,0,8,3061,4443.46)"
+ width="5033"
+ height="1085"
+ inkscape:label="draw-template_128_hc" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect7407"
+ id="use22520"
+ transform="matrix(8,0,0,8,3061,4478.47)"
+ width="5033"
+ height="1085"
+ inkscape:label="draw-template_128" />
+ <use
+ height="1085"
+ width="5033"
+ transform="matrix(16,0,0,16,3565,9521.57)"
+ id="use22522"
+ xlink:href="#rect6274"
+ y="0"
+ x="0"
+ style="opacity:0.20000000000000001" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(2620,0)"
+ id="use22524"
+ xlink:href="#rect6274"
+ y="0"
+ x="0"
+ inkscape:label="draw-template_16_hc" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(2620,0)"
+ id="use22526"
+ xlink:href="#rect7407"
+ y="0"
+ x="0"
+ inkscape:label="draw-template_16" />
+ <g
+ transform="matrix(1.88976,0,0,1.88977,2458.94,-3559.52)"
+ id="g22528"
+ style="opacity:0.20000000000000001">
+ <rect
+ style="color:#000000;fill:#ffaaaa;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect22530"
+ width="135.46666"
+ height="135.46651"
+ x="190"
+ y="987.36218" />
+ </g>
+ <use
+ height="1085"
+ width="5033"
+ transform="matrix(2,0,0,2,2944,621.638)"
+ id="use22532"
+ xlink:href="#rect6274"
+ y="0"
+ x="0"
+ style="opacity:0.20000000000000001" />
+ <use
+ height="1085"
+ width="5033"
+ transform="matrix(2,0,0,2,2944,626.638)"
+ id="use22534"
+ xlink:href="#rect7407"
+ y="0"
+ x="0"
+ style="opacity:0.20000000000000001" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect6274"
+ id="use22536"
+ transform="matrix(3,0,0,3,3007,1211.28)"
+ width="5033"
+ height="1085"
+ style="opacity:0.20000000000000001" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect7407"
+ id="use22538"
+ transform="matrix(3,0,0,3,3007,1221.28)"
+ width="5033"
+ height="1085"
+ style="opacity:0.20000000000000001" />
+ <use
+ height="1085"
+ width="5033"
+ transform="matrix(8,0,0,8,3322,4443.46)"
+ id="use22540"
+ xlink:href="#rect6274"
+ y="0"
+ x="0"
+ style="opacity:0.20000000000000001" />
+ <use
+ height="1085"
+ width="5033"
+ transform="matrix(8,0,0,8,3322,4478.47)"
+ id="use22542"
+ xlink:href="#rect7407"
+ y="0"
+ x="0"
+ style="opacity:0.20000000000000001" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect6274"
+ id="use22544"
+ transform="matrix(16,0,0,16,3826,9521.57)"
+ width="5033"
+ height="1085"
+ style="opacity:0.20000000000000001" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect6274"
+ id="use22546"
+ transform="translate(2881,0)"
+ width="5033"
+ height="1085"
+ style="opacity:0.20000000000000001" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect7407"
+ id="use22548"
+ transform="translate(2881,0)"
+ width="5033"
+ height="1085"
+ style="opacity:0.20000000000000001" />
+ <g
+ id="g22550"
+ transform="matrix(1.88976,0,0,1.88977,2719.94,-3559.52)"
+ inkscape:label="">
+ <rect
+ y="987.36218"
+ x="190"
+ height="135.46651"
+ width="135.46666"
+ id="rect22552"
+ style="color:#000000;fill:#ffaaaa;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ </g>
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect6274"
+ id="use22554"
+ transform="matrix(2,0,0,2,3205,621.638)"
+ width="5033"
+ height="1085"
+ inkscape:label="web-template_32_hc" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect7407"
+ id="use22556"
+ transform="matrix(2,0,0,2,3205,626.638)"
+ width="5033"
+ height="1085"
+ inkscape:label="web-template_32" />
+ <use
+ height="1085"
+ width="5033"
+ transform="matrix(3,0,0,3,3268,1211.28)"
+ id="use22558"
+ xlink:href="#rect6274"
+ y="0"
+ x="0"
+ inkscape:label="web-template_48_hc" />
+ <use
+ height="1085"
+ width="5033"
+ transform="matrix(3,0,0,3,3268,1221.28)"
+ id="use22560"
+ xlink:href="#rect7407"
+ y="0"
+ x="0"
+ inkscape:label="web-template_48" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect6274"
+ id="use22562"
+ transform="matrix(8,0,0,8,3583,4443.46)"
+ width="5033"
+ height="1085"
+ inkscape:label="web-template_128_hc" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect7407"
+ id="use22564"
+ transform="matrix(8,0,0,8,3583,4478.47)"
+ width="5033"
+ height="1085"
+ inkscape:label="web-template_128" />
+ <use
+ height="1085"
+ width="5033"
+ transform="matrix(16,0,0,16,4087,9521.57)"
+ id="use22566"
+ xlink:href="#rect6274"
+ y="0"
+ x="0"
+ style="opacity:0.20000000000000001" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(3142,0)"
+ id="use22568"
+ xlink:href="#rect6274"
+ y="0"
+ x="0"
+ inkscape:label="web-template_16_hc" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(3142,0)"
+ id="use22570"
+ xlink:href="#rect7407"
+ y="0"
+ x="0"
+ inkscape:label="web-template_16" />
+ <g
+ transform="matrix(1.88976,0,0,1.88977,2985.94,-3559.52)"
+ id="g22572"
+ inkscape:label="">
+ <rect
+ style="color:#000000;fill:#ffaaaa;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect22574"
+ width="135.46666"
+ height="135.46651"
+ x="190"
+ y="987.36218" />
+ </g>
+ <use
+ height="1085"
+ width="5033"
+ transform="matrix(2,0,0,2,3471,621.638)"
+ id="use22576"
+ xlink:href="#rect6274"
+ y="0"
+ x="0"
+ inkscape:label="master_32_hc" />
+ <use
+ height="1085"
+ width="5033"
+ transform="matrix(2,0,0,2,3471,626.638)"
+ id="use22578"
+ xlink:href="#rect7407"
+ y="0"
+ x="0"
+ inkscape:label="master_32" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect6274"
+ id="use22580"
+ transform="matrix(3,0,0,3,3534,1211.28)"
+ width="5033"
+ height="1085"
+ inkscape:label="master_48_hc" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect7407"
+ id="use22582"
+ transform="matrix(3,0,0,3,3534,1221.28)"
+ width="5033"
+ height="1085"
+ inkscape:label="master_48" />
+ <use
+ height="1085"
+ width="5033"
+ transform="matrix(8,0,0,8,3849,4443.46)"
+ id="use22584"
+ xlink:href="#rect6274"
+ y="0"
+ x="0"
+ inkscape:label="master_128_hc" />
+ <use
+ height="1085"
+ width="5033"
+ transform="matrix(8,0,0,8,3849,4478.47)"
+ id="use22586"
+ xlink:href="#rect7407"
+ y="0"
+ x="0"
+ inkscape:label="master_128" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect6274"
+ id="use22588"
+ transform="matrix(16,0,0,16,4353,9521.57)"
+ width="5033"
+ height="1085"
+ style="opacity:0.20000000000000001" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect6274"
+ id="use22590"
+ transform="translate(3408,0)"
+ width="5033"
+ height="1085"
+ inkscape:label="master_16_hc" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect7407"
+ id="use22592"
+ transform="translate(3408,0)"
+ width="5033"
+ height="1085"
+ inkscape:label="master_16" />
+ <g
+ id="g22594"
+ transform="matrix(1.88976,0,0,1.88977,3246.94,-3559.52)">
+ <rect
+ y="987.36218"
+ x="190"
+ height="135.46651"
+ width="135.46666"
+ id="rect22596"
+ inkscape:label="math_256"
+ style="color:#000000;fill:#ffaaaa;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ </g>
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect6274"
+ id="use22598"
+ transform="matrix(2,0,0,2,3732,621.638)"
+ width="5033"
+ height="1085"
+ inkscape:label="math_32_hc" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect7407"
+ id="use22600"
+ transform="matrix(2,0,0,2,3732,626.638)"
+ width="5033"
+ height="1085"
+ inkscape:label="math_32" />
+ <use
+ height="1085"
+ width="5033"
+ transform="matrix(3,0,0,3,3795,1211.28)"
+ id="use22602"
+ xlink:href="#rect6274"
+ y="0"
+ x="0"
+ inkscape:label="math_48_hc" />
+ <use
+ height="1085"
+ width="5033"
+ transform="matrix(3,0,0,3,3795,1221.28)"
+ id="use22604"
+ xlink:href="#rect7407"
+ y="0"
+ x="0"
+ inkscape:label="math_48" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect6274"
+ id="use22606"
+ transform="matrix(8,0,0,8,4110,4443.46)"
+ width="5033"
+ height="1085"
+ inkscape:label="math_128_hc" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect7407"
+ id="use22608"
+ transform="matrix(8,0,0,8,4110,4478.47)"
+ width="5033"
+ height="1085"
+ inkscape:label="math_128" />
+ <use
+ height="1085"
+ width="5033"
+ transform="matrix(16,0,0,16,4614,9521.57)"
+ id="use22610"
+ xlink:href="#rect6274"
+ y="0"
+ x="0"
+ style="opacity:0.20000000000000001" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(3669,0)"
+ id="use22612"
+ xlink:href="#rect6274"
+ y="0"
+ x="0"
+ inkscape:label="math_16_hc" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(3669,0)"
+ id="use22614"
+ xlink:href="#rect7407"
+ y="0"
+ x="0"
+ inkscape:label="math_16" />
+ <g
+ transform="matrix(1.88976,0,0,1.88977,3507.94,-3559.52)"
+ id="g22616"
+ inkscape:label="">
+ <rect
+ style="color:#000000;fill:#ffaaaa;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect22618"
+ width="135.46666"
+ height="135.46651"
+ x="190"
+ y="987.36218" />
+ </g>
+ <use
+ height="1085"
+ width="5033"
+ transform="matrix(2,0,0,2,3993,621.638)"
+ id="use22620"
+ xlink:href="#rect6274"
+ y="0"
+ x="0"
+ inkscape:label="chart_32_hc" />
+ <use
+ height="1085"
+ width="5033"
+ transform="matrix(2,0,0,2,3993,626.638)"
+ id="use22622"
+ xlink:href="#rect7407"
+ y="0"
+ x="0"
+ inkscape:label="chart_32" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect6274"
+ id="use22624"
+ transform="matrix(3,0,0,3,4056,1211.28)"
+ width="5033"
+ height="1085"
+ inkscape:label="chart_48_hc" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect7407"
+ id="use22626"
+ transform="matrix(3,0,0,3,4056,1221.28)"
+ width="5033"
+ height="1085"
+ inkscape:label="chart_48" />
+ <use
+ height="1085"
+ width="5033"
+ transform="matrix(8,0,0,8,4371,4443.46)"
+ id="use22628"
+ xlink:href="#rect6274"
+ y="0"
+ x="0"
+ inkscape:label="chart_128_hc" />
+ <use
+ height="1085"
+ width="5033"
+ transform="matrix(8,0,0,8,4371,4478.47)"
+ id="use22630"
+ xlink:href="#rect7407"
+ y="0"
+ x="0"
+ inkscape:label="chart_128" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect6274"
+ id="use22632"
+ transform="matrix(16,0,0,16,4875,9521.57)"
+ width="5033"
+ height="1085"
+ style="opacity:0.20000000000000001" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect6274"
+ id="use22634"
+ transform="translate(3930,0)"
+ width="5033"
+ height="1085"
+ inkscape:label="chart_16_hc" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect7407"
+ id="use22636"
+ transform="translate(3930,0)"
+ width="5033"
+ height="1085"
+ inkscape:label="chart_16" />
+ <g
+ id="g22638"
+ transform="matrix(1.88976,0,0,1.88977,3768.94,-3559.52)"
+ inkscape:label="">
+ <rect
+ y="987.36218"
+ x="190"
+ height="135.46651"
+ width="135.46666"
+ id="rect22640"
+ style="color:#000000;fill:#ffaaaa;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ </g>
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect6274"
+ id="use22642"
+ transform="matrix(2,0,0,2,4254,621.638)"
+ width="5033"
+ height="1085"
+ inkscape:label="macro_32_hc" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect7407"
+ id="use22644"
+ transform="matrix(2,0,0,2,4254,626.638)"
+ width="5033"
+ height="1085"
+ inkscape:label="macro_32" />
+ <use
+ height="1085"
+ width="5033"
+ transform="matrix(3,0,0,3,4317,1211.28)"
+ id="use22646"
+ xlink:href="#rect6274"
+ y="0"
+ x="0"
+ inkscape:label="macro_48_hc" />
+ <use
+ height="1085"
+ width="5033"
+ transform="matrix(3,0,0,3,4317,1221.28)"
+ id="use22648"
+ xlink:href="#rect7407"
+ y="0"
+ x="0"
+ inkscape:label="macro_48" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect6274"
+ id="use22650"
+ transform="matrix(8,0,0,8,4632,4443.46)"
+ width="5033"
+ height="1085"
+ inkscape:label="macro_128_hc" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect7407"
+ id="use22652"
+ transform="matrix(8,0,0,8,4632,4478.47)"
+ width="5033"
+ height="1085"
+ inkscape:label="macro_128" />
+ <use
+ height="1085"
+ width="5033"
+ transform="matrix(16,0,0,16,5136,9521.57)"
+ id="use22654"
+ xlink:href="#rect6274"
+ y="0"
+ x="0"
+ style="opacity:0.20000000000000001" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(4191,0)"
+ id="use22656"
+ xlink:href="#rect6274"
+ y="0"
+ x="0"
+ inkscape:label="macro_16_hc" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(4191,0)"
+ id="use22658"
+ xlink:href="#rect7407"
+ y="0"
+ x="0"
+ inkscape:label="macro_16" />
+ <g
+ transform="matrix(1.88976,0,0,1.88977,4034.94,-3559.52)"
+ id="g22660"
+ inkscape:label="">
+ <rect
+ style="color:#000000;fill:#ffaaaa;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect22662"
+ width="135.46666"
+ height="135.46651"
+ x="190"
+ y="987.36218" />
+ </g>
+ <use
+ height="1085"
+ width="5033"
+ transform="matrix(2,0,0,2,4520,621.638)"
+ id="use22664"
+ xlink:href="#rect6274"
+ y="0"
+ x="0"
+ inkscape:label="installer_32_hc" />
+ <use
+ height="1085"
+ width="5033"
+ transform="matrix(2,0,0,2,4520,626.638)"
+ id="use22666"
+ xlink:href="#rect7407"
+ y="0"
+ x="0"
+ inkscape:label="installer_32" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect6274"
+ id="use22668"
+ transform="matrix(3,0,0,3,4583,1211.28)"
+ width="5033"
+ height="1085"
+ inkscape:label="installer_48_hc" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect7407"
+ id="use22670"
+ transform="matrix(3,0,0,3,4583,1221.28)"
+ width="5033"
+ height="1085"
+ inkscape:label="installer_48" />
+ <use
+ height="1085"
+ width="5033"
+ transform="matrix(8,0,0,8,4898,4443.46)"
+ id="use22672"
+ xlink:href="#rect6274"
+ y="0"
+ x="0"
+ inkscape:label="installer_128_hc" />
+ <use
+ height="1085"
+ width="5033"
+ transform="matrix(8,0,0,8,4898,4478.47)"
+ id="use22674"
+ xlink:href="#rect7407"
+ y="0"
+ x="0"
+ inkscape:label="installer_128" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect6274"
+ id="use22676"
+ transform="matrix(16,0,0,16,5402,9521.57)"
+ width="5033"
+ height="1085"
+ style="opacity:0.20000000000000001" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect6274"
+ id="use22678"
+ transform="translate(4457,0)"
+ width="5033"
+ height="1085"
+ inkscape:label="installer_16_hc" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect7407"
+ id="use22680"
+ transform="translate(4457,0)"
+ width="5033"
+ height="1085"
+ inkscape:label="installer_16" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect6274"
+ id="use22682"
+ transform="matrix(2,0,0,2,4780,621.638)"
+ width="5033"
+ height="1085"
+ inkscape:label="padmin_32_hc" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect7407"
+ id="use22684"
+ transform="matrix(2,0,0,2,4780,626.638)"
+ width="5033"
+ height="1085"
+ inkscape:label="padmin_32" />
+ <use
+ height="1085"
+ width="5033"
+ transform="matrix(3,0,0,3,4843,1211.28)"
+ id="use22686"
+ xlink:href="#rect6274"
+ y="0"
+ x="0"
+ inkscape:label="padmin_48_hc" />
+ <use
+ height="1085"
+ width="5033"
+ transform="matrix(3,0,0,3,4843,1221.28)"
+ id="use22688"
+ xlink:href="#rect7407"
+ y="0"
+ x="0"
+ inkscape:label="padmin_48" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(4717,0)"
+ id="use22690"
+ xlink:href="#rect6274"
+ y="0"
+ x="0"
+ inkscape:label="padmin_16_hc" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(4717,0)"
+ id="use22692"
+ xlink:href="#rect7407"
+ y="0"
+ x="0"
+ inkscape:label="padmin_16" />
+ <g
+ id="g22694"
+ transform="matrix(1.88976,0,0,1.88977,4294.94,-3559.52)"
+ style="opacity:0.20000000000000001">
+ <rect
+ y="987.36218"
+ x="190"
+ height="135.46651"
+ width="135.46666"
+ id="rect22696"
+ style="color:#000000;fill:#ffaaaa;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ </g>
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect6274"
+ id="use22698"
+ transform="matrix(8,0,0,8,5158,4443.46)"
+ width="5033"
+ height="1085"
+ style="opacity:0.20000000000000001" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect7407"
+ id="use22700"
+ transform="matrix(8,0,0,8,5158,4478.47)"
+ width="5033"
+ height="1085"
+ style="opacity:0.20000000000000001" />
+ <use
+ height="1085"
+ width="5033"
+ transform="matrix(16,0,0,16,5662,9521.57)"
+ id="use22702"
+ xlink:href="#rect6274"
+ y="0"
+ x="0"
+ style="opacity:0.20000000000000001" />
+ </g>
+ <g
+ style="display:inline"
+ inkscape:label="Foreground Document Symbols"
+ id="layer5"
+ inkscape:groupmode="layer"
+ transform="translate(123,1753.64)">
+ <g
+ id="g22150"
+ transform="translate(2,0)">
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(3668,0)"
+ id="use16598"
+ xlink:href="#use9311"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(3668,0)"
+ id="use16600"
+ xlink:href="#g8062"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(3668,0)"
+ id="use16602"
+ xlink:href="#path6866"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(3668,0)"
+ id="use16604"
+ xlink:href="#path6868"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(3668,0)"
+ id="use16606"
+ xlink:href="#path6960"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(3668,0)"
+ id="use16608"
+ xlink:href="#rect7927"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(3668,0)"
+ id="use16610"
+ xlink:href="#rect8070"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(3668,0)"
+ id="use16612"
+ xlink:href="#rect8098"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(3668,0)"
+ id="use16614"
+ xlink:href="#rect7221"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(3668,0)"
+ id="use16616"
+ xlink:href="#rect7225"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(3668,0)"
+ id="use16618"
+ xlink:href="#path7319"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(3668,0)"
+ id="use16620"
+ xlink:href="#path7323"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(3668,0)"
+ id="use16622"
+ xlink:href="#rect7436"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(3668,0)"
+ id="use16624"
+ xlink:href="#rect7438"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(3668,0)"
+ id="use16626"
+ xlink:href="#rect7440"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(3668,0)"
+ id="use16628"
+ xlink:href="#rect9509"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(3668,0)"
+ id="use16630"
+ xlink:href="#rect9521"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(3668,0)"
+ id="use16632"
+ xlink:href="#use14642"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(3668,0)"
+ id="use16634"
+ xlink:href="#use14644"
+ y="0"
+ x="0" />
+ </g>
+ <use
+ x="0"
+ y="0"
+ xlink:href="#use9742"
+ id="use15256"
+ transform="translate(261,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#use9744"
+ id="use15258"
+ transform="translate(261,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#use9746"
+ id="use15260"
+ transform="translate(261,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#use9748"
+ id="use15262"
+ transform="translate(261,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#use9750"
+ id="use15264"
+ transform="translate(261,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#use9752"
+ id="use15266"
+ transform="translate(261,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#use9754"
+ id="use15268"
+ transform="translate(261,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#use9756"
+ id="use15270"
+ transform="translate(261,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#use9758"
+ id="use15272"
+ transform="translate(261,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#use9760"
+ id="use15274"
+ transform="translate(261,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#use9762"
+ id="use15276"
+ transform="translate(261,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#use9764"
+ id="use15278"
+ transform="translate(261,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#use9766"
+ id="use15280"
+ transform="translate(261,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#use9768"
+ id="use15282"
+ transform="translate(261,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#use9770"
+ id="use15284"
+ transform="translate(261,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#use9772"
+ id="use15286"
+ transform="translate(261,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#use9774"
+ id="use15288"
+ transform="translate(261,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#path22470-4"
+ id="use15290"
+ transform="translate(261,0)"
+ width="5033"
+ height="1085" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(522,0)"
+ id="use15439"
+ xlink:href="#path22470-4"
+ y="0"
+ x="0" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#path22470-4"
+ id="use15587"
+ transform="translate(783,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ inkscape:tiled-clone-of="#path22470-4"
+ xlink:href="#path22470-4"
+ id="use9740"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ inkscape:tiled-clone-of="#path22470-4"
+ xlink:href="#path22470-4"
+ transform="translate(0,6.01193)"
+ id="use9742"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ inkscape:tiled-clone-of="#path22470-4"
+ xlink:href="#path22470-4"
+ transform="translate(0,12.0239)"
+ id="use9744"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ inkscape:tiled-clone-of="#path22470-4"
+ xlink:href="#path22470-4"
+ transform="translate(0,18.0358)"
+ id="use9746"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ inkscape:tiled-clone-of="#path22470-4"
+ xlink:href="#path22470-4"
+ transform="translate(0,24.0477)"
+ id="use9748"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ inkscape:tiled-clone-of="#path22470-4"
+ xlink:href="#path22470-4"
+ transform="translate(0,30.0597)"
+ id="use9750"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ inkscape:tiled-clone-of="#path22470-4"
+ xlink:href="#path22470-4"
+ transform="translate(0,36.0716)"
+ id="use9752"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ inkscape:tiled-clone-of="#path22470-4"
+ xlink:href="#path22470-4"
+ transform="translate(0,42.0835)"
+ id="use9754"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ inkscape:tiled-clone-of="#path22470-4"
+ xlink:href="#path22470-4"
+ transform="translate(0,48.0955)"
+ id="use9756"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ inkscape:tiled-clone-of="#path22470-4"
+ xlink:href="#path22470-4"
+ transform="translate(0,54.1074)"
+ id="use9758"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ inkscape:tiled-clone-of="#path22470-4"
+ xlink:href="#path22470-4"
+ transform="translate(0,60.1193)"
+ id="use9760"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ inkscape:tiled-clone-of="#path22470-4"
+ xlink:href="#path22470-4"
+ transform="translate(0,66.1313)"
+ id="use9762"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ inkscape:tiled-clone-of="#path22470-4"
+ xlink:href="#path22470-4"
+ transform="translate(0,72.1432)"
+ id="use9764"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ inkscape:tiled-clone-of="#path22470-4"
+ xlink:href="#path22470-4"
+ transform="translate(0,78.1551)"
+ id="use9766"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ inkscape:tiled-clone-of="#path22470-4"
+ xlink:href="#path22470-4"
+ transform="translate(0,84.1671)"
+ id="use9768"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ inkscape:tiled-clone-of="#path22470-4"
+ xlink:href="#path22470-4"
+ transform="translate(0,90.179)"
+ id="use9770"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ inkscape:tiled-clone-of="#path22470-4"
+ xlink:href="#path22470-4"
+ transform="translate(0,96.1909)"
+ id="use9772"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ inkscape:tiled-clone-of="#path22470-4"
+ xlink:href="#path22470-4"
+ transform="translate(0,102.203)"
+ id="use9774"
+ width="5033"
+ height="1085" />
+ <path
+ style="color:#000000;fill:#4d4d4d;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ d="m 1784.7427,-1152.5211 c 0.6839,0.2199 2.1127,0.8833 5.1284,0.8833 3.0865,0 4.5633,-0.7412 5.2911,-0.9771 0.7328,-0.2375 1.5584,-0.586 1.2838,-1.4767 -0.1991,-0.6455 -0.7264,-0.6347 -1.3812,-0.3971 -0.6265,0.2271 -2.1072,0.8912 -5.1937,0.8907 -3.0857,-5e-4 -3.8664,-0.5302 -4.7666,-0.8029 -0.9162,-0.2775 -1.3752,-0.1938 -1.5663,0.4873 -0.2148,0.7655 0.5152,1.1709 1.2045,1.3925 z"
+ id="path22470-4"
+ sodipodi:nodetypes="czzszszsz"
+ inkscape:tile-cx="1913"
+ inkscape:tile-cy="600.50002"
+ inkscape:tile-w="13.000015"
+ inkscape:tile-h="2.9999665"
+ inkscape:tile-x0="1906.5"
+ inkscape:tile-y0="599.00003"
+ inkscape:connector-curvature="0" />
+ <g
+ transform="matrix(7.99974,0,0,7.9969,898.031,-8974.56)"
+ id="g20092"
+ style="fill:url(#linearGradient20162) #000000;fill-opacity:1;display:inline">
+ <path
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cccccccccccc"
+ id="path20094"
+ d="m 111.56249,976.3733 c -0.4584,0.0875 -0.57071,0.28336 -0.56249,0.75001 l 0,14.50168 c 5e-5,0.52364 0.22641,0.74996 0.74999,0.75001 l 11.50001,0 c 0.52358,-5e-5 0.74994,-0.22637 0.74999,-0.75001 l 0,-8.98088 c 0.006,-0.26409 -0.0975,-0.52903 -0.28125,-0.71883 l -5.27042,-5.2707 c -0.18978,-0.18372 -0.45469,-0.2874 -0.71875,-0.28128 l -5.97958,0 c -0.0623,-0.006 -0.12518,-0.006 -0.1875,0 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:url(#linearGradient20158) #000000;fill-opacity:1;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono" />
+ <path
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cccccccc"
+ id="path20096"
+ d="m 120.32938,976.3765 c -0.33282,0.10664 -0.44483,0.61349 -0.18825,0.85184 l 3.01199,3.02879 c 0.27825,0.26531 0.83246,0.0383 0.84712,-0.34705 l 0,-3.02878 c -3e-5,-0.26431 -0.23916,-0.50477 -0.502,-0.5048 l -3.01199,0 c -0.0519,-0.008 -0.105,-0.008 -0.15687,0 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:url(#linearGradient20160) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono" />
+ </g>
+ <rect
+ style="opacity:0.5;color:#000000;fill:url(#linearGradient13345) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect13323"
+ width="109"
+ height="1"
+ x="-1157.6379"
+ y="-1792.0001"
+ transform="matrix(0,1,-1,0,0,0)"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ <path
+ sodipodi:nodetypes="cccccccccccccccc"
+ id="path20098"
+ d="m 1792.0002,-1160.6378 0,2 0,112 0,2 2,0 88,0 2,0 0,-2 0,-70 0,-0.8752 -0.625,-0.6248 -41.7499,-42 -0.5,-0.5 -0.8751,0 -46.25,0 -2,0 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:url(#linearGradient20164) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono"
+ inkscape:connector-curvature="0" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ y="-1077.6379"
+ x="-1824.9999"
+ height="32"
+ width="32"
+ id="rect16512"
+ style="opacity:0.25;color:#000000;fill:url(#linearGradient16522) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible"
+ transform="scale(-1,1)" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect16512"
+ id="use16516"
+ transform="matrix(-1,0,0,1,3676,0)"
+ width="5033"
+ height="1085"
+ style="opacity:0.75" />
+ <use
+ height="1085"
+ width="5033"
+ transform="matrix(1,0,0,-1,4.4e-5,-2205.28)"
+ id="use16518"
+ xlink:href="#rect16512"
+ y="0"
+ x="0"
+ style="opacity:0.5" />
+ <path
+ style="color:#000000;fill:url(#linearGradient63284) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;marker:none;visibility:visible;display:inline;overflow:visible"
+ d="m 1792,-1156.64 0,108 7,0 0,-108 -7,0 z m 9,0 0,108 79,0 0,-66 -42.25,-42 -36.75,0 z"
+ id="path20100"
+ inkscape:connector-curvature="0" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ transform="scale(-1,1)"
+ style="opacity:0.1;color:#000000;fill:url(#linearGradient16560) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect13321"
+ width="5"
+ height="20"
+ x="-1798"
+ y="-1069.577" />
+ <g
+ transform="translate(1441,-156.5)"
+ inkscape:tile-y0="597.9"
+ inkscape:tile-x0="1906.5"
+ inkscape:tile-h="4.0999765"
+ inkscape:tile-w="13.999997"
+ inkscape:tile-cy="599.94999"
+ inkscape:tile-cx="1913.5"
+ id="g22464">
+ <path
+ sodipodi:type="arc"
+ style="opacity:0.25;color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="path22466"
+ sodipodi:cx="486.1875"
+ sodipodi:cy="704.625"
+ sodipodi:rx="3.3125"
+ sodipodi:ry="1.5"
+ d="m 489.5,704.625 a 3.3125,1.5 0 1 1 -6.625,0 3.3125,1.5 0 1 1 6.625,0 z"
+ transform="matrix(0.603774,0,0,1.33333,60.9528,-1936.64)"
+ inkscape:tile-cx="480.5"
+ inkscape:tile-cy="732.5"
+ inkscape:tile-w="3"
+ inkscape:tile-h="3"
+ inkscape:tile-x0="479"
+ inkscape:tile-y0="731" />
+ <path
+ style="opacity:0.35;color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ d="m 348.875,-998.23155 c -1.8534,0 -3.0562,0.25578 -3.9062,0.5 l 0,1.28128 c 2.3116,0.5864 3.7174,0.62211 6,0.62494 l 2.3125,-1.06252 c -0.5991,-0.078 -3.6057,-1.34375 -4.4063,-1.34375 z"
+ id="path13308"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cccccsc" />
+ <path
+ inkscape:tile-y0="731"
+ inkscape:tile-x0="479"
+ inkscape:tile-h="3"
+ inkscape:tile-w="3"
+ inkscape:tile-cy="732.5"
+ inkscape:tile-cx="480.5"
+ transform="matrix(0.45283,0,0,1,134.34,-1701.76)"
+ d="m 489.5,704.625 a 3.3125,1.5 0 1 1 -6.625,0 3.3125,1.5 0 1 1 6.625,0 z"
+ sodipodi:ry="1.5"
+ sodipodi:rx="3.3125"
+ sodipodi:cy="704.625"
+ sodipodi:cx="486.1875"
+ id="path22468"
+ style="opacity:0.25;color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ sodipodi:type="arc" />
+ <path
+ style="color:#000000;fill:url(#linearGradient16588) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ d="m 343.7427,-998.35445 c 0.68387,-0.2199 2.11266,-0.88335 5.12839,-0.88335 3.08647,0 4.5633,0.7412 5.2911,0.9771 0.73282,0.2375 1.55844,0.586 1.28381,1.4767 -0.19908,0.6455 -0.72637,0.6347 -1.38124,0.3971 -0.62646,-0.2271 -2.1072,-0.89116 -5.19367,-0.8907 -3.08565,4.6e-4 -3.86641,0.53024 -4.76661,0.80292 -0.91617,0.27753 -1.37519,0.19378 -1.56627,-0.48729 -0.21476,-0.76551 0.51517,-1.17088 1.20449,-1.39248 z"
+ id="path22470"
+ sodipodi:nodetypes="czzszszsz"
+ inkscape:connector-curvature="0" />
+ </g>
+ <g
+ transform="matrix(7.99984,0,0,7.9969,-938.982,-8974.56)"
+ id="g25513"
+ style="fill:url(#linearGradient11351) #000000;fill-opacity:1;display:inline">
+ <path
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="ccccccccccc"
+ id="path25515"
+ d="m 111,977.12331 0,14.50168 c 5e-5,0.52364 0.22641,0.74996 0.74999,0.75001 l 11.50001,0 c 0.52358,-5e-5 0.74994,-0.22637 0.74999,-0.75001 l 0,-8.98088 c 0.006,-0.26409 -0.0975,-0.52903 -0.28125,-0.71883 l -5.27042,-5.2707 c -0.18978,-0.18372 -0.45469,-0.2874 -0.71875,-0.28128 l -5.97958,0 c -0.51898,0 -0.75228,0.43576 -0.74999,0.75001 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:url(#linearGradient11347) #000000;fill-opacity:1;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono" />
+ <path
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cccccccc"
+ id="path25517"
+ d="m 120.32938,976.3765 c -0.33282,0.10664 -0.44483,0.61349 -0.18825,0.85184 l 3.01199,3.02879 c 0.27825,0.26531 0.83246,0.0383 0.84712,-0.34705 l 0,-3.02878 c -3e-5,-0.26431 -0.23916,-0.50477 -0.502,-0.5048 l -3.01199,0 c -0.0519,-0.008 -0.105,-0.008 -0.15687,0 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:url(#linearGradient11349) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono" />
+ </g>
+ <path
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cccccccccccccccc"
+ id="path25519"
+ d="m -44.99976,-1160.6378 0,2 0,112 0,2 1.999997,0 88.000006,0 1.999997,0 0,-2 0,-70 0,-0.8752 -0.624971,-0.6248 -41.7500028,-42 -0.4999691,-0.5 -0.875016,0 -46.2500441,0 -1.999997,0 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:url(#linearGradient22264) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono" />
+ <path
+ style="fill:url(#linearGradient22252) #000000;fill-opacity:1;stroke:none;display:inline"
+ d="m -40.99984,-1156.6378 42.2350277,0 41.7649723,42 0,66 -84,0 0,-108 z"
+ id="path25521"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cccccc"
+ inkscape:export-filename="/home/bedipp/DocumentFoundation/Writer_16.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ <g
+ style="fill:url(#linearGradient5978) #000000;fill-opacity:1;display:inline"
+ id="g5632"
+ transform="matrix(7.99974,0,0,7.9969,-672.968,-8974.56)"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90">
+ <path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:url(#linearGradient5974) #000000;fill-opacity:1;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono"
+ d="m 111.56249,976.3733 c -0.4584,0.0875 -0.57071,0.28336 -0.56249,0.75001 l 0,14.50168 c 5e-5,0.52364 0.22641,0.74996 0.74999,0.75001 l 11.50001,0 c 0.52358,-5e-5 0.74994,-0.22637 0.74999,-0.75001 l 0,-8.98088 c 0.006,-0.26409 -0.0975,-0.52903 -0.28125,-0.71883 l -5.27042,-5.2707 c -0.18978,-0.18372 -0.45469,-0.2874 -0.71875,-0.28128 l -5.97958,0 c -0.0623,-0.006 -0.12518,-0.006 -0.1875,0 z"
+ id="path5634"
+ sodipodi:nodetypes="cccccccccccc"
+ inkscape:connector-curvature="0" />
+ <path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:url(#linearGradient5976) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono"
+ d="m 120.32938,976.3765 c -0.33282,0.10664 -0.44483,0.61349 -0.18825,0.85184 l 3.01199,3.02879 c 0.27825,0.26531 0.83246,0.0383 0.84712,-0.34705 l 0,-3.02878 c -3e-5,-0.26431 -0.23916,-0.50477 -0.502,-0.5048 l -3.01199,0 c -0.0519,-0.008 -0.105,-0.008 -0.15687,0 z"
+ id="path5636"
+ sodipodi:nodetypes="cccccccc"
+ inkscape:connector-curvature="0" />
+ </g>
+ <g
+ transform="matrix(7.99974,0,0,7.9969,-411.968,-8974.56)"
+ id="g5980"
+ style="fill:url(#linearGradient6050) #000000;fill-opacity:1;display:inline"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90">
+ <path
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cccccccccccc"
+ id="path5982"
+ d="m 111.56249,976.3733 c -0.4584,0.0875 -0.57071,0.28336 -0.56249,0.75001 l 0,14.50168 c 5e-5,0.52364 0.22641,0.74996 0.74999,0.75001 l 11.50001,0 c 0.52358,-5e-5 0.74994,-0.22637 0.74999,-0.75001 l 0,-8.98088 c 0.006,-0.26409 -0.0975,-0.52903 -0.28125,-0.71883 l -5.27042,-5.2707 c -0.18978,-0.18372 -0.45469,-0.2874 -0.71875,-0.28128 l -5.97958,0 c -0.0623,-0.006 -0.12518,-0.006 -0.1875,0 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:url(#linearGradient6046) #000000;fill-opacity:1;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono" />
+ <path
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cccccccc"
+ id="path5984"
+ d="m 120.32938,976.3765 c -0.33282,0.10664 -0.44483,0.61349 -0.18825,0.85184 l 3.01199,3.02879 c 0.27825,0.26531 0.83246,0.0383 0.84712,-0.34705 l 0,-3.02878 c -3e-5,-0.26431 -0.23916,-0.50477 -0.502,-0.5048 l -3.01199,0 c -0.0519,-0.008 -0.105,-0.008 -0.15687,0 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:url(#linearGradient6048) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono" />
+ </g>
+ <g
+ style="fill:url(#linearGradient8049) #000000;fill-opacity:1;display:inline"
+ id="g7993"
+ transform="matrix(7.99974,0,0,7.9969,371.032,-8974.56)"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90">
+ <path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:url(#linearGradient8045) #000000;fill-opacity:1;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono"
+ d="m 111.56249,976.3733 c -0.4584,0.0875 -0.57071,0.28336 -0.56249,0.75001 l 0,14.50168 c 5e-5,0.52364 0.22641,0.74996 0.74999,0.75001 l 11.50001,0 c 0.52358,-5e-5 0.74994,-0.22637 0.74999,-0.75001 l 0,-8.98088 c 0.006,-0.26409 -0.0975,-0.52903 -0.28125,-0.71883 l -5.27042,-5.2707 c -0.18978,-0.18372 -0.45469,-0.2874 -0.71875,-0.28128 l -5.97958,0 c -0.0623,-0.006 -0.12518,-0.006 -0.1875,0 z"
+ id="path7995"
+ sodipodi:nodetypes="cccccccccccc"
+ inkscape:connector-curvature="0" />
+ <path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:url(#linearGradient8047) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono"
+ d="m 120.32938,976.3765 c -0.33282,0.10664 -0.44483,0.61349 -0.18825,0.85184 l 3.01199,3.02879 c 0.27825,0.26531 0.83246,0.0383 0.84712,-0.34705 l 0,-3.02878 c -3e-5,-0.26431 -0.23916,-0.50477 -0.502,-0.5048 l -3.01199,0 c -0.0519,-0.008 -0.105,-0.008 -0.15687,0 z"
+ id="path7997"
+ sodipodi:nodetypes="cccccccc"
+ inkscape:connector-curvature="0" />
+ </g>
+ <use
+ x="0"
+ y="0"
+ inkscape:tiled-clone-of="#g22464"
+ xlink:href="#g22464"
+ transform="translate(0,5.99827)"
+ id="use9313"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ inkscape:tiled-clone-of="#g22464"
+ xlink:href="#g22464"
+ transform="translate(0,11.9965)"
+ id="use9315"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ inkscape:tiled-clone-of="#g22464"
+ xlink:href="#g22464"
+ transform="translate(0,17.9948)"
+ id="use9317"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ inkscape:tiled-clone-of="#g22464"
+ xlink:href="#g22464"
+ transform="translate(0,23.9931)"
+ id="use9319"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ inkscape:tiled-clone-of="#g22464"
+ xlink:href="#g22464"
+ transform="translate(0,29.9913)"
+ id="use9321"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ inkscape:tiled-clone-of="#g22464"
+ xlink:href="#g22464"
+ transform="translate(0,35.9896)"
+ id="use9323"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ inkscape:tiled-clone-of="#g22464"
+ xlink:href="#g22464"
+ transform="translate(0,41.9879)"
+ id="use9325"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ inkscape:tiled-clone-of="#g22464"
+ xlink:href="#g22464"
+ transform="translate(0,47.9861)"
+ id="use9327"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ inkscape:tiled-clone-of="#g22464"
+ xlink:href="#g22464"
+ transform="translate(0,53.9844)"
+ id="use9329"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ inkscape:tiled-clone-of="#g22464"
+ xlink:href="#g22464"
+ transform="translate(0,59.9827)"
+ id="use9331"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ inkscape:tiled-clone-of="#g22464"
+ xlink:href="#g22464"
+ transform="translate(0,65.9809)"
+ id="use9333"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ inkscape:tiled-clone-of="#g22464"
+ xlink:href="#g22464"
+ transform="translate(0,71.9792)"
+ id="use9335"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ inkscape:tiled-clone-of="#g22464"
+ xlink:href="#g22464"
+ transform="translate(0,77.9775)"
+ id="use9337"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ inkscape:tiled-clone-of="#g22464"
+ xlink:href="#g22464"
+ transform="translate(0,83.9757)"
+ id="use9339"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ inkscape:tiled-clone-of="#g22464"
+ xlink:href="#g22464"
+ transform="translate(0,89.974)"
+ id="use9341"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ inkscape:tiled-clone-of="#g22464"
+ xlink:href="#g22464"
+ transform="translate(0,95.9723)"
+ id="use9343"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ inkscape:tiled-clone-of="#g22464"
+ xlink:href="#g22464"
+ transform="translate(0,101.971)"
+ id="use9345"
+ width="5033"
+ height="1085" />
+ <g
+ style="fill:url(#linearGradient13610) #000000;fill-opacity:1;display:inline"
+ id="g13448"
+ transform="matrix(7.99974,0,0,7.9969,1159.03,-8974.56)">
+ <path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:url(#linearGradient13606) #000000;fill-opacity:1;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono"
+ d="m 111.56249,976.3733 c -0.4584,0.0875 -0.57071,0.28336 -0.56249,0.75001 l 0,14.50168 c 5e-5,0.52364 0.22641,0.74996 0.74999,0.75001 l 11.50001,0 c 0.52358,-5e-5 0.74994,-0.22637 0.74999,-0.75001 l 0,-8.98088 c 0.006,-0.26409 -0.0975,-0.52903 -0.28125,-0.71883 l -5.27042,-5.2707 c -0.18978,-0.18372 -0.45469,-0.2874 -0.71875,-0.28128 l -5.97958,0 c -0.0623,-0.006 -0.12518,-0.006 -0.1875,0 z"
+ id="path13450"
+ sodipodi:nodetypes="cccccccccccc"
+ inkscape:connector-curvature="0" />
+ <path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:url(#linearGradient13608) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono"
+ d="m 120.32938,976.3765 c -0.33282,0.10664 -0.44483,0.61349 -0.18825,0.85184 l 3.01199,3.02879 c 0.27825,0.26531 0.83246,0.0383 0.84712,-0.34705 l 0,-3.02878 c -3e-5,-0.26431 -0.23916,-0.50477 -0.502,-0.5048 l -3.01199,0 c -0.0519,-0.008 -0.105,-0.008 -0.15687,0 z"
+ id="path13452"
+ sodipodi:nodetypes="cccccccc"
+ inkscape:connector-curvature="0" />
+ </g>
+ <path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:url(#linearGradient13612) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono"
+ d="m 2053.0002,-1160.6378 0,2 0,112 0,2 2,0 88,0 2,0 0,-2 0,-70 0,-0.8752 -0.625,-0.6248 -41.7499,-42 -0.5,-0.5 -0.8751,0 -46.25,0 -2,0 z"
+ id="path13454"
+ sodipodi:nodetypes="cccccccccccccccc"
+ inkscape:connector-curvature="0" />
+ <g
+ style="fill:url(#linearGradient4845) #000000;fill-opacity:1;display:inline"
+ id="g4791"
+ transform="matrix(7.99974,0,0,7.9969,-150.968,-8974.56)"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90">
+ <path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:url(#linearGradient4841) #000000;fill-opacity:1;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono"
+ d="m 111.56249,976.3733 c -0.4584,0.0875 -0.57071,0.28336 -0.56249,0.75001 l 0,14.50168 c 5e-5,0.52364 0.22641,0.74996 0.74999,0.75001 l 11.50001,0 c 0.52358,-5e-5 0.74994,-0.22637 0.74999,-0.75001 l 0,-8.98088 c 0.006,-0.26409 -0.0975,-0.52903 -0.28125,-0.71883 l -5.27042,-5.2707 c -0.18978,-0.18372 -0.45469,-0.2874 -0.71875,-0.28128 l -5.97958,0 c -0.0623,-0.006 -0.12518,-0.006 -0.1875,0 z"
+ id="path4793"
+ sodipodi:nodetypes="cccccccccccc"
+ inkscape:connector-curvature="0" />
+ <path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:url(#linearGradient4843) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono"
+ d="m 120.32938,976.3765 c -0.33282,0.10664 -0.44483,0.61349 -0.18825,0.85184 l 3.01199,3.02879 c 0.27825,0.26531 0.83246,0.0383 0.84712,-0.34705 l 0,-3.02878 c -3e-5,-0.26431 -0.23916,-0.50477 -0.502,-0.5048 l -3.01199,0 c -0.0519,-0.008 -0.105,-0.008 -0.15687,0 z"
+ id="path4795"
+ sodipodi:nodetypes="cccccccc"
+ inkscape:connector-curvature="0" />
+ </g>
+ <g
+ style="fill:url(#linearGradient10590) #000000;fill-opacity:1;display:inline"
+ id="g10542"
+ transform="matrix(7.99974,0,0,7.9969,110.032,-8974.56)">
+ <path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:url(#linearGradient10586) #000000;fill-opacity:1;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono"
+ d="m 111.56249,976.3733 c -0.4584,0.0875 -0.57071,0.28336 -0.56249,0.75001 l 0,14.50168 c 5e-5,0.52364 0.22641,0.74996 0.74999,0.75001 l 11.50001,0 c 0.52358,-5e-5 0.74994,-0.22637 0.74999,-0.75001 l 0,-8.98088 c 0.006,-0.26409 -0.0975,-0.52903 -0.28125,-0.71883 l -5.27042,-5.2707 c -0.18978,-0.18372 -0.45469,-0.2874 -0.71875,-0.28128 l -5.97958,0 c -0.0623,-0.006 -0.12518,-0.006 -0.1875,0 z"
+ id="path10544"
+ sodipodi:nodetypes="cccccccccccc"
+ inkscape:connector-curvature="0" />
+ <path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:url(#linearGradient10588) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono"
+ d="m 120.32938,976.3765 c -0.33282,0.10664 -0.44483,0.61349 -0.18825,0.85184 l 3.01199,3.02879 c 0.27825,0.26531 0.83246,0.0383 0.84712,-0.34705 l 0,-3.02878 c -3e-5,-0.26431 -0.23916,-0.50477 -0.502,-0.5048 l -3.01199,0 c -0.0519,-0.008 -0.105,-0.008 -0.15687,0 z"
+ id="path10546"
+ sodipodi:nodetypes="cccccccc"
+ inkscape:connector-curvature="0" />
+ </g>
+ <g
+ style="fill:url(#linearGradient11373) #000000;fill-opacity:1;display:inline"
+ id="g11359"
+ transform="matrix(7.99974,0,0,7.9969,632.032,-8974.56)">
+ <path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:url(#linearGradient11369) #000000;fill-opacity:1;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono"
+ d="m 111,977.12331 0,14.50168 c 5e-5,0.52364 0.22641,0.74996 0.74999,0.75001 l 11.50001,0 c 0.52358,-5e-5 0.74994,-0.22637 0.74999,-0.75001 l 0,-8.98088 c 0.006,-0.26409 -0.0975,-0.52903 -0.28125,-0.71883 l -5.27042,-5.2707 c -0.18978,-0.18372 -0.45469,-0.2874 -0.71875,-0.28128 l -5.97958,0 c -0.51898,0 -0.75228,0.43576 -0.74999,0.75001 z"
+ id="path11361"
+ sodipodi:nodetypes="ccccccccccc"
+ inkscape:connector-curvature="0" />
+ <path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:url(#linearGradient11371) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono"
+ d="m 120.32938,976.3765 c -0.33282,0.10664 -0.44483,0.61349 -0.18825,0.85184 l 3.01199,3.02879 c 0.27825,0.26531 0.83246,0.0383 0.84712,-0.34705 l 0,-3.02878 c -3e-5,-0.26431 -0.23916,-0.50477 -0.502,-0.5048 l -3.01199,0 c -0.0519,-0.008 -0.105,-0.008 -0.15687,0 z"
+ id="path11363"
+ sodipodi:nodetypes="cccccccc"
+ inkscape:connector-curvature="0" />
+ </g>
+ <g
+ style="fill:#ff2a2a;fill-opacity:1;display:inline"
+ id="g7788"
+ transform="matrix(15.9995,0,0,15.9938,-1815.94,-17048.5)" />
+ <path
+ sodipodi:nodetypes="ccccc"
+ inkscape:connector-curvature="0"
+ id="path20877"
+ d="m 23.7072,-1159.5071 23.6621,23.6621 -0.7072,0.7072 L 23,-1158.8 z"
+ style="opacity:0.25;color:#000000;fill:url(#linearGradient20895) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ <path
+ style="opacity:0.25;color:#000000;fill:url(#linearGradient20897) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ d="m 5.7072,-1160.5071 41.6621,41.6621 -0.7072,0.7072 L 5,-1159.8 z"
+ id="path20879"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="ccccc"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ <rect
+ style="opacity:0.5;color:#000000;fill:url(#linearGradient20899) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect20881"
+ width="109"
+ height="1"
+ x="-1157.6379"
+ y="45"
+ transform="matrix(0,1,-1,0,0,0)"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ <rect
+ transform="scale(-1,-1)"
+ y="1043.6378"
+ x="-47"
+ height="1"
+ width="92"
+ id="rect20883"
+ style="opacity:0.5;color:#000000;fill:url(#linearGradient14866) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ <rect
+ y="-1081.6379"
+ x="8"
+ height="32"
+ width="32"
+ id="rect20885"
+ style="opacity:0.15;color:#000000;fill:url(#linearGradient20903) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible"
+ transform="scale(-1,1)"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ <path
+ sodipodi:nodetypes="ccccc"
+ inkscape:connector-curvature="0"
+ id="path20891"
+ d="m 3.7072,-1155.5071 41.6621,41.6621 -0.7072,0.7072 L 3,-1154.8 z"
+ style="opacity:0.1;color:#000000;fill:url(#linearGradient20909) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ <rect
+ y="-1048.6379"
+ x="-40.999847"
+ height="1.0000159"
+ width="83.997238"
+ id="rect20893"
+ style="opacity:0.2;color:#000000;fill:url(#linearGradient20911) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ <rect
+ transform="matrix(0,1,-1,0,0,0)"
+ y="41"
+ x="-1157.6379"
+ height="1"
+ width="109"
+ id="rect11303"
+ style="opacity:0.2;color:#000000;fill:url(#linearGradient11309) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ style="opacity:0.2;color:#000000;fill:url(#linearGradient11311) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect11305"
+ width="64.499863"
+ height="1"
+ x="-1113.1378"
+ y="-44"
+ transform="matrix(0,1,-1,0,0,0)" />
+ <rect
+ transform="matrix(0,1,-1,0,0,0)"
+ y="-48"
+ x="-1113.1378"
+ height="1"
+ width="64.499863"
+ id="rect11307"
+ style="opacity:0.5;color:#000000;fill:url(#linearGradient11313) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ <g
+ id="g11779"
+ transform="matrix(0.999906,0,0,1,0.338572,0)">
+ <path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:url(#linearGradient11783) #000000;fill-opacity:1;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono"
+ d="m 3618.0015,-1160.617 0,115.9809 c 4e-4,4.1879 1.8114,5.9979 6.0003,5.9983 l 92.0069,0 c 4.189,-4e-4 6,-1.8104 6.0004,-5.9983 l 0,-71.8269 c 0.048,-2.1121 -0.7801,-4.231 -2.2502,-5.749 l -42.1665,-42.1538 c -1.5183,-1.4693 -3.6378,-2.2985 -5.7504,-2.2496 l -47.8402,0 c -4.1521,0 -6.0186,3.4852 -6.0003,5.9984 z"
+ id="path11684"
+ sodipodi:nodetypes="ccccccccccc"
+ inkscape:connector-curvature="0" />
+ <path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:url(#linearGradient11785) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono"
+ d="m 3692.642,-1166.5898 c -2.6628,0.8529 -3.5589,4.9065 -1.5061,6.8128 l 24.0976,24.2235 c 2.2263,2.1219 6.6602,0.3063 6.7776,-2.7756 l 0,-24.2234 c -3e-4,-2.1139 -1.9135,-4.037 -4.0164,-4.0373 l -24.0976,0 c -0.4153,-0.064 -0.8401,-0.064 -1.2551,0 z"
+ id="path11686"
+ sodipodi:nodetypes="cccccccc"
+ inkscape:connector-curvature="0" />
+ </g>
+ <g
+ transform="matrix(0.999906,0,0,1,-260.661,0)"
+ id="g11788">
+ <path
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="ccccccccccc"
+ id="path11790"
+ d="m 3618.0015,-1160.617 0,115.9809 c 4e-4,4.1879 1.8114,5.9979 6.0003,5.9983 l 92.0069,0 c 4.189,-4e-4 6,-1.8104 6.0004,-5.9983 l 0,-71.8269 c 0.048,-2.1121 -0.7801,-4.231 -2.2502,-5.749 l -42.1665,-42.1538 c -1.5183,-1.4693 -3.6378,-2.2985 -5.7504,-2.2496 l -47.8402,0 c -4.1521,0 -6.0186,3.4852 -6.0003,5.9984 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:url(#linearGradient11874) #000000;fill-opacity:1;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono" />
+ <path
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cccccccc"
+ id="path11792"
+ d="m 3692.642,-1166.5898 c -2.6628,0.8529 -3.5589,4.9065 -1.5061,6.8128 l 24.0976,24.2235 c 2.2263,2.1219 6.6602,0.3063 6.7776,-2.7756 l 0,-24.2234 c -3e-4,-2.1139 -1.9135,-4.037 -4.0164,-4.0373 l -24.0976,0 c -0.4153,-0.064 -0.8401,-0.064 -1.2551,0 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:url(#linearGradient11876) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono" />
+ </g>
+ <g
+ id="g11964"
+ transform="matrix(0.999906,0,0,1,261.339,0)">
+ <path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:url(#linearGradient12030) #000000;fill-opacity:1;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono"
+ d="m 3618.0015,-1160.617 0,115.9809 c 4e-4,4.1879 1.8114,5.9979 6.0003,5.9983 l 92.0069,0 c 4.189,-4e-4 6,-1.8104 6.0004,-5.9983 l 0,-71.8269 c 0.048,-2.1121 -0.7801,-4.231 -2.2502,-5.749 l -42.1665,-42.1538 c -1.5183,-1.4693 -3.6378,-2.2985 -5.7504,-2.2496 l -47.8402,0 c -4.1521,0 -6.0186,3.4852 -6.0003,5.9984 z"
+ id="path11966"
+ sodipodi:nodetypes="ccccccccccc"
+ inkscape:connector-curvature="0" />
+ <path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:url(#linearGradient12032) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono"
+ d="m 3692.642,-1166.5898 c -2.6628,0.8529 -3.5589,4.9065 -1.5061,6.8128 l 24.0976,24.2235 c 2.2263,2.1219 6.6602,0.3063 6.7776,-2.7756 l 0,-24.2234 c -3e-4,-2.1139 -1.9135,-4.037 -4.0164,-4.0373 l -24.0976,0 c -0.4153,-0.064 -0.8401,-0.064 -1.2551,0 z"
+ id="path11968"
+ sodipodi:nodetypes="cccccccc"
+ inkscape:connector-curvature="0" />
+ </g>
+ <g
+ transform="matrix(0.999906,0,0,1,522.339,0)"
+ id="g12064">
+ <path
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="ccccccccccc"
+ id="path12067"
+ d="m 3618.0015,-1160.617 0,115.9809 c 4e-4,4.1879 1.8114,5.9979 6.0003,5.9983 l 92.0069,0 c 4.189,-4e-4 6,-1.8104 6.0004,-5.9983 l 0,-71.8269 c 0.048,-2.1121 -0.7801,-4.231 -2.2502,-5.749 l -42.1665,-42.1538 c -1.5183,-1.4693 -3.6378,-2.2985 -5.7504,-2.2496 l -47.8402,0 c -4.1521,0 -6.0186,3.4852 -6.0003,5.9984 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:url(#linearGradient12135) #000000;fill-opacity:1;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono" />
+ <path
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cccccccc"
+ id="path12069"
+ d="m 3692.642,-1166.5898 c -2.6628,0.8529 -3.5589,4.9065 -1.5061,6.8128 l 24.0976,24.2235 c 2.2263,2.1219 6.6602,0.3063 6.7776,-2.7756 l 0,-24.2234 c -3e-4,-2.1139 -1.9135,-4.037 -4.0164,-4.0373 l -24.0976,0 c -0.4153,-0.064 -0.8401,-0.064 -1.2551,0 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:url(#linearGradient12137) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono" />
+ </g>
+ <g
+ transform="matrix(0.999906,0,0,1,788.339,0)"
+ id="g12101">
+ <path
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="ccccccccccc"
+ id="path12103"
+ d="m 3618.0015,-1160.617 0,115.9809 c 4e-4,4.1879 1.8114,5.9979 6.0003,5.9983 l 92.0069,0 c 4.189,-4e-4 6,-1.8104 6.0004,-5.9983 l 0,-71.8269 c 0.048,-2.1121 -0.7801,-4.231 -2.2502,-5.749 l -42.1665,-42.1538 c -1.5183,-1.4693 -3.6378,-2.2985 -5.7504,-2.2496 l -47.8402,0 c -4.1521,0 -6.0186,3.4852 -6.0003,5.9984 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:url(#linearGradient12168) #000000;fill-opacity:1;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono" />
+ <path
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cccccccc"
+ id="path12105"
+ d="m 3692.642,-1166.5898 c -2.6628,0.8529 -3.5589,4.9065 -1.5061,6.8128 l 24.0976,24.2235 c 2.2263,2.1219 6.6602,0.3063 6.7776,-2.7756 l 0,-24.2234 c -3e-4,-2.1139 -1.9135,-4.037 -4.0164,-4.0373 l -24.0976,0 c -0.4153,-0.064 -0.8401,-0.064 -1.2551,0 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:url(#linearGradient12170) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono" />
+ </g>
+ <path
+ sodipodi:nodetypes="ccccc"
+ inkscape:connector-curvature="0"
+ id="path13325"
+ d="m 1860.7069,-1159.5072 23.6621,23.6621 -0.7072,0.7072 -23.6621,-23.6622 z"
+ style="opacity:0.25;color:#000000;fill:url(#linearGradient13347) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ <path
+ style="opacity:0.25;color:#000000;fill:url(#linearGradient13349) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ d="m 1842.7069,-1160.5072 41.6621,41.6621 -0.7072,0.7072 -41.6621,-41.6622 z"
+ id="path13327"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="ccccc"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ <rect
+ transform="scale(-1,-1)"
+ y="1043.6378"
+ x="-1865.0001"
+ height="1"
+ width="55"
+ id="rect13329"
+ style="opacity:0.5;color:#000000;fill:url(#linearGradient13351) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ <rect
+ y="-1081.6379"
+ x="-1833.9999"
+ height="32"
+ width="32"
+ id="rect13331"
+ style="opacity:0.1;color:#000000;fill:url(#linearGradient16111) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible"
+ transform="scale(-1,1)"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ <rect
+ style="opacity:0.1;color:#000000;fill:url(#linearGradient13355) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect13333"
+ width="32"
+ height="32"
+ x="1846.9999"
+ y="-1081.6379"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ <path
+ sodipodi:nodetypes="ccccc"
+ inkscape:connector-curvature="0"
+ id="path13335"
+ d="m 1840.7069,-1155.5072 41.6621,41.6621 -0.7072,0.7072 -41.6621,-41.6622 z"
+ style="opacity:0.1;color:#000000;fill:url(#linearGradient13357) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ <rect
+ y="-1048.6379"
+ x="1796.0001"
+ height="1.0000159"
+ width="83.997238"
+ id="rect13337"
+ style="opacity:0.2;color:#000000;fill:url(#linearGradient13359) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ <rect
+ transform="matrix(0,1,-1,0,0,0)"
+ y="-1885"
+ x="-1113.1378"
+ height="1"
+ width="64.499863"
+ id="rect13339"
+ style="opacity:0.5;color:#000000;fill:url(#linearGradient22256) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ style="opacity:0.2;color:#000000;fill:url(#linearGradient14126) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect14124"
+ width="64.499863"
+ height="1"
+ x="-1113.1378"
+ y="-1881"
+ transform="matrix(0,1,-1,0,0,0)" />
+ <g
+ id="g21239"
+ transform="translate(1,0)">
+ <use
+ height="1085"
+ width="5033"
+ id="use9311"
+ xlink:href="#path6868"
+ inkscape:tiled-clone-of="#g22464"
+ y="0"
+ x="0" />
+ <g
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ transform="matrix(1.00001,0,0,0.999844,-0.0060791,-261.184)"
+ id="g8062">
+ <path
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="sssssssssss"
+ id="path6862"
+ d="m -39.993353,-1184.5675 c 0,3.8673 3.622442,7.9298 7.756866,7.9298 l 191.986687,0 c 4.62705,0 8.24949,-3.8705 8.24949,-7.7455 l 0,-149.2144 c 0,-4.2249 -0.51199,-6.1833 -3.49989,-9.171 l -85.323928,-85.2984 c -2.988223,-2.9873 -5.273683,-4.5274 -9.499625,-4.5307 l -101.735939,-0.08 c -4.133464,0 -7.933661,3.6832 -7.933661,8.1221 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:url(#linearGradient21262) #000000;fill-opacity:1;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono" />
+ <path
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="sssssss"
+ id="path6864"
+ d="m 103.25988,-1421.8904 53.19027,53.4419 c 4.33857,4.3589 11.55354,3.3243 11.55354,-3.5507 l 0,-52.4417 c 0,-4.2273 -3.82644,-8.1968 -8.03174,-8.1968 l -53.19026,0 c -6.837537,0 -7.137368,7.1146 -3.52181,10.7473 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:url(#linearGradient21264) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono" />
+ </g>
+ <path
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ inkscape:connector-curvature="0"
+ id="path6866"
+ d="m -32,-1683.6378 c 0,79.3333 0,158.6666 0,238 64,0 128,0 192,0 0,-50.4688 0,-100.9375 0,-151.4063 -29.38313,-29.5023 -58.74517,-59.0265 -88.0625,-88.5937 -34.645833,-10e-5 -69.2916667,0 -103.9375,0 l 0,1 0,1 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:url(#linearGradient21266) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono" />
+ <path
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ inkscape:connector-curvature="0"
+ id="path6868"
+ d="m -26,-1677.5312 c 0,75.3333 0,150.6666 0,226 60,0 120,-1e-4 180,0 0,-46.8126 0,-93.625 0,-140.4376 -28.98559,-29.2017 -58.077912,-58.2982 -87,-87.5624 -31,-1e-4 -62,0 -93,0 l 0,1 0,1 z"
+ style="fill:url(#linearGradient21268) #000000;fill-opacity:1;stroke:none;display:inline" />
+ <path
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ inkscape:connector-curvature="0"
+ id="path6960"
+ d="m -32,-1685.6378 0,1 0,1 0,238 192,0 0,-151.4063 c -29.38313,-29.5023 -58.74517,-59.0265 -88.0625,-88.5937 -34.64583,-10e-5 -69.29167,0 -103.9375,0 z m 1,1 c 34.16667,0 68.33333,-10e-5 102.5,0 29.14816,29.3621 58.29572,58.7249 87.5,88.0312 l 0,149.9688 c -63.33333,0 -126.66667,-10e-5 -190,0 l 0,-237 0,-1 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;opacity:0.15;color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ transform="scale(-1,1)"
+ style="opacity:0.15;color:#000000;fill:url(#linearGradient21270) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect7927"
+ width="64"
+ height="64"
+ x="-37.999992"
+ y="-1515.6378" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ style="opacity:0.2;color:#000000;fill:url(#linearGradient21272) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect8070"
+ width="100"
+ height="1.0000159"
+ x="13"
+ y="-1451.6378" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ style="opacity:0.2;color:#000000;fill:url(#linearGradient21274) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect8098"
+ width="228"
+ height="1.0000159"
+ x="-1679.6378"
+ y="25.999985"
+ transform="matrix(0,1,-1,0,0,0)" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ style="opacity:0.5;color:#000000;fill:url(#linearGradient21276) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect7221"
+ width="139.60402"
+ height="1.0000159"
+ x="-1592.7418"
+ y="-161"
+ transform="matrix(0,1,-1,0,0,0)" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ y="-1445.6378"
+ x="13"
+ height="1.0000159"
+ width="100"
+ id="rect7225"
+ style="opacity:0.5;color:#000000;fill:url(#linearGradient21278) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <path
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ inkscape:connector-curvature="0"
+ style="opacity:0.15;color:#000000;fill:url(#linearGradient21280) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible"
+ d="m -25,-1502.6378 0,49 0,1 1,0 49,0 0,-1 -49,0 0,-49 -1,0 z"
+ id="path7319" />
+ <path
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ inkscape:connector-curvature="0"
+ style="opacity:0.1;color:#000000;fill:url(#linearGradient21282) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible"
+ d="m -27,-1630.6378 0,-49 0,-1 1,0 49,0 0,1 -49,0 0,49 -1,0 z"
+ id="path7323" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ y="-1243.5988"
+ x="-1119.5618"
+ height="1.0000159"
+ width="84.375"
+ id="rect7436"
+ style="opacity:0.4;color:#000000;fill:url(#linearGradient21284) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ transform="matrix(0.707107,0.707107,-0.707107,0.707107,0,0)" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ transform="matrix(0.707107,0.707107,-0.707107,0.707107,0,0)"
+ style="opacity:0.1;color:#000000;fill:url(#linearGradient21286) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect7438"
+ width="84.375"
+ height="1.0000159"
+ x="-1120.2689"
+ y="-1235.8206" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ transform="matrix(0.707107,0.707107,-0.707107,0.707107,0,0)"
+ style="opacity:0.4;color:#000000;fill:url(#linearGradient21288) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect7440"
+ width="84.375"
+ height="1.0000159"
+ x="-1120.2689"
+ y="-1264.1052" />
+ <rect
+ transform="matrix(0,1,-1,0,0,0)"
+ y="31.999985"
+ x="-1679.6378"
+ height="1.0000159"
+ width="228"
+ id="rect9509"
+ style="opacity:0.5;color:#000000;fill:url(#linearGradient21290) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ <rect
+ transform="matrix(0,1,1,0,0,0)"
+ y="154"
+ x="-1596.2764"
+ height="1.0000159"
+ width="144.74516"
+ id="rect9521"
+ style="opacity:0.2;color:#000000;fill:url(#linearGradient21292) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ <use
+ height="1085"
+ width="5033"
+ transform="matrix(-1,0,0,1,128,0)"
+ id="use14642"
+ xlink:href="#rect7927"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="matrix(-1,0,0,1,128,0)"
+ id="use14644"
+ xlink:href="#path7319"
+ y="0"
+ x="0" />
+ </g>
+ <g
+ id="g21358">
+ <g
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ style="color:#000000;fill:url(#linearGradient8162-8) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:15.99660015;marker:none;visibility:visible;display:inline;overflow:visible"
+ transform="matrix(1.00001,0,0,0.999844,266.994,-261.184)"
+ id="g8106">
+ <path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:url(#linearGradient9201) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:15.99660015;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono"
+ d="m -39.993353,-1184.5675 c 0,3.8673 3.622442,7.9298 7.756866,7.9298 l 191.986687,0 c 4.62705,0 8.24949,-3.8705 8.24949,-7.7455 l 0,-149.2144 c 0,-4.2249 -0.51199,-6.1833 -3.49989,-9.171 l -85.323928,-85.2984 c -2.988223,-2.9873 -5.273683,-4.5274 -9.499625,-4.5307 l -101.735939,-0.08 c -4.133464,0 -7.933661,3.6832 -7.933661,8.1221 z"
+ id="path8108"
+ sodipodi:nodetypes="sssssssssss"
+ inkscape:connector-curvature="0" />
+ <path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:url(#linearGradient9203) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:15.99660015;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono"
+ d="m 103.25988,-1421.8904 53.19027,53.4419 c 4.33857,4.3589 11.55354,3.3243 11.55354,-3.5507 l 0,-52.4417 c 0,-4.2273 -3.82644,-8.1968 -8.03174,-8.1968 l -53.19026,0 c -6.837537,0 -7.137368,7.1146 -3.52181,10.7473 z"
+ id="path8110"
+ sodipodi:nodetypes="sssssss"
+ inkscape:connector-curvature="0" />
+ </g>
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(267,0)"
+ id="use14646"
+ xlink:href="#use9311"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(267,0)"
+ id="use14648"
+ xlink:href="#path6866"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(267,0)"
+ id="use14650"
+ xlink:href="#path6868"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(267,0)"
+ id="use14652"
+ xlink:href="#path6960"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(267,0)"
+ id="use14654"
+ xlink:href="#rect7927"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(267,0)"
+ id="use14656"
+ xlink:href="#rect8070"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(267,0)"
+ id="use14658"
+ xlink:href="#rect8098"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(267,0)"
+ id="use14660"
+ xlink:href="#rect7221"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(267,0)"
+ id="use14662"
+ xlink:href="#rect7225"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(267,0)"
+ id="use14664"
+ xlink:href="#path7319"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(267,0)"
+ id="use14666"
+ xlink:href="#path7323"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(267,0)"
+ id="use14668"
+ xlink:href="#rect7436"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(267,0)"
+ id="use14670"
+ xlink:href="#rect7438"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(267,0)"
+ id="use14672"
+ xlink:href="#rect7440"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(267,0)"
+ id="use14674"
+ xlink:href="#rect9509"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(267,0)"
+ id="use14676"
+ xlink:href="#rect9521"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(267,0)"
+ id="use14678"
+ xlink:href="#use14642"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(267,0)"
+ id="use14680"
+ xlink:href="#use14644"
+ y="0"
+ x="0" />
+ </g>
+ <g
+ id="g21452"
+ transform="translate(1,0)">
+ <g
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ id="g7448"
+ transform="matrix(1.00001,0,0,0.999844,526.994,-261.184)"
+ style="color:#000000;fill:url(#linearGradient21694) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:15.99779987;marker:none;visibility:visible;display:inline;overflow:visible">
+ <path
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="sssssssssss"
+ id="path7450"
+ d="m -39.993353,-1184.5675 c 0,3.8673 3.622442,7.9298 7.756866,7.9298 l 191.986687,0 c 4.62705,0 8.24949,-3.8705 8.24949,-7.7455 l 0,-149.2144 c 0,-4.2249 -0.51199,-6.1833 -3.49989,-9.171 l -85.323928,-85.2984 c -2.988223,-2.9873 -5.273683,-4.5274 -9.499625,-4.5307 l -101.735939,-0.08 c -4.133464,0 -7.933661,3.6832 -7.933661,8.1221 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:url(#linearGradient21690) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:15.99779987;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono" />
+ <path
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="sssssss"
+ id="path7452"
+ d="m 103.25988,-1421.8904 53.19027,53.4419 c 4.33857,4.3589 11.55354,3.3243 11.55354,-3.5507 l 0,-52.4417 c 0,-4.2273 -3.82644,-8.1968 -8.03174,-8.1968 l -53.19026,0 c -6.837537,0 -7.137368,7.1146 -3.52181,10.7473 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:url(#linearGradient21692) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:15.99779987;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono" />
+ </g>
+ <use
+ x="0"
+ y="0"
+ xlink:href="#use9311"
+ id="use14682"
+ transform="translate(527,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#path6866"
+ id="use14684"
+ transform="translate(527,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#path6868"
+ id="use14686"
+ transform="translate(527,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#path6960"
+ id="use14688"
+ transform="translate(527,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect7927"
+ id="use14690"
+ transform="translate(527,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect8070"
+ id="use14692"
+ transform="translate(527,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect8098"
+ id="use14694"
+ transform="translate(527,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect7221"
+ id="use14696"
+ transform="translate(527,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect7225"
+ id="use14698"
+ transform="translate(527,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#path7319"
+ id="use14700"
+ transform="translate(527,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#path7323"
+ id="use14702"
+ transform="translate(527,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect7436"
+ id="use14704"
+ transform="translate(527,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect7438"
+ id="use14706"
+ transform="translate(527,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect7440"
+ id="use14708"
+ transform="translate(527,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect9509"
+ id="use14710"
+ transform="translate(527,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect9521"
+ id="use14712"
+ transform="translate(527,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#use14642"
+ id="use14714"
+ transform="translate(527,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#use14644"
+ id="use14716"
+ transform="translate(527,0)"
+ width="5033"
+ height="1085" />
+ </g>
+ <g
+ id="g21537"
+ transform="translate(1,0)">
+ <g
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ style="color:#000000;fill:url(#linearGradient21624) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2.00013995;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="g9261"
+ transform="matrix(1.00001,0,0,0.999844,787.994,-261.184)">
+ <path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:url(#linearGradient21620) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2.00013995;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono"
+ d="m -39.993353,-1184.5675 c 0,3.8673 3.622442,7.9298 7.756866,7.9298 l 191.986687,0 c 4.62705,0 8.24949,-3.8705 8.24949,-7.7455 l 0,-149.2144 c 0,-4.2249 -0.51199,-6.1833 -3.49989,-9.171 l -85.323928,-85.2984 c -2.988223,-2.9873 -5.273683,-4.5274 -9.499625,-4.5307 l -101.735939,-0.08 c -4.133464,0 -7.933661,3.6832 -7.933661,8.1221 z"
+ id="path9263"
+ sodipodi:nodetypes="sssssssssss"
+ inkscape:connector-curvature="0" />
+ <path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:url(#linearGradient21622) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2.00013995;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono"
+ d="m 103.25988,-1421.8904 53.19027,53.4419 c 4.33857,4.3589 11.55354,3.3243 11.55354,-3.5507 l 0,-52.4417 c 0,-4.2273 -3.82644,-8.1968 -8.03174,-8.1968 l -53.19026,0 c -6.837537,0 -7.137368,7.1146 -3.52181,10.7473 z"
+ id="path9265"
+ sodipodi:nodetypes="sssssss"
+ inkscape:connector-curvature="0" />
+ </g>
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(788,0)"
+ id="use14718"
+ xlink:href="#use9311"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(788,0)"
+ id="use14720"
+ xlink:href="#path6866"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(788,0)"
+ id="use14722"
+ xlink:href="#path6868"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(788,0)"
+ id="use14724"
+ xlink:href="#path6960"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(788,0)"
+ id="use14726"
+ xlink:href="#rect7927"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(788,0)"
+ id="use14728"
+ xlink:href="#rect8070"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(788,0)"
+ id="use14730"
+ xlink:href="#rect8098"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(788,0)"
+ id="use14732"
+ xlink:href="#rect7221"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(788,0)"
+ id="use14734"
+ xlink:href="#rect7225"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(788,0)"
+ id="use14736"
+ xlink:href="#path7319"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(788,0)"
+ id="use14738"
+ xlink:href="#path7323"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(788,0)"
+ id="use14740"
+ xlink:href="#rect7436"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(788,0)"
+ id="use14742"
+ xlink:href="#rect7438"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(788,0)"
+ id="use14744"
+ xlink:href="#rect7440"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(788,0)"
+ id="use14746"
+ xlink:href="#rect9509"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(788,0)"
+ id="use14748"
+ xlink:href="#rect9521"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(788,0)"
+ id="use14750"
+ xlink:href="#use14642"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(788,0)"
+ id="use14752"
+ xlink:href="#use14644"
+ y="0"
+ x="0" />
+ </g>
+ <g
+ id="g21745"
+ transform="translate(1,0)">
+ <g
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ id="g9279"
+ transform="matrix(1.00001,0,0,0.999844,1048.99,-261.184)"
+ style="color:#000000;fill:url(#linearGradient21814) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:15.99779987;marker:none;visibility:visible;display:inline;overflow:visible">
+ <path
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="sssssssssss"
+ id="path9281"
+ d="m -39.993353,-1184.5675 c 0,3.8673 3.622442,7.9298 7.756866,7.9298 l 191.986687,0 c 4.62705,0 8.24949,-3.8705 8.24949,-7.7455 l 0,-149.2144 c 0,-4.2249 -0.51199,-6.1833 -3.49989,-9.171 l -85.323928,-85.2984 c -2.988223,-2.9873 -5.273683,-4.5274 -9.499625,-4.5307 l -101.735939,-0.08 c -4.133464,0 -7.933661,3.6832 -7.933661,8.1221 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:url(#linearGradient21810) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:15.99779987;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono" />
+ <path
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="sssssss"
+ id="path9283"
+ d="m 103.25988,-1421.8904 53.19027,53.4419 c 4.33857,4.3589 11.55354,3.3243 11.55354,-3.5507 l 0,-52.4417 c 0,-4.2273 -3.82644,-8.1968 -8.03174,-8.1968 l -53.19026,0 c -6.837537,0 -7.137368,7.1146 -3.52181,10.7473 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:url(#linearGradient21812) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:15.99779987;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono" />
+ </g>
+ <use
+ x="0"
+ y="0"
+ xlink:href="#use9311"
+ id="use14754"
+ transform="translate(1049,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#path6866"
+ id="use14756"
+ transform="translate(1049,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#path6868"
+ id="use14758"
+ transform="translate(1049,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#path6960"
+ id="use14760"
+ transform="translate(1049,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect7927"
+ id="use14762"
+ transform="translate(1049,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect8070"
+ id="use14764"
+ transform="translate(1049,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect8098"
+ id="use14766"
+ transform="translate(1049,0)"
+ width="5033"
+ height="1085" />
+ <use
+ style="opacity:0.75"
+ x="0"
+ y="0"
+ xlink:href="#rect7221"
+ id="use14768"
+ transform="translate(1049,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect7225"
+ id="use14770"
+ transform="translate(1049,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#path7319"
+ id="use14772"
+ transform="translate(1049,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#path7323"
+ id="use14774"
+ transform="translate(1049,0)"
+ width="5033"
+ height="1085" />
+ <use
+ style="opacity:0.75"
+ x="0"
+ y="0"
+ xlink:href="#rect7436"
+ id="use14776"
+ transform="translate(1049,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect7438"
+ id="use14778"
+ transform="translate(1049,0)"
+ width="5033"
+ height="1085" />
+ <use
+ style="opacity:0.5"
+ x="0"
+ y="0"
+ xlink:href="#rect7440"
+ id="use14780"
+ transform="translate(1049,0)"
+ width="5033"
+ height="1085" />
+ <use
+ style="opacity:0.75"
+ x="0"
+ y="0"
+ xlink:href="#rect9509"
+ id="use14782"
+ transform="translate(1049,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect9521"
+ id="use14784"
+ transform="translate(1049,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#use14642"
+ id="use14786"
+ transform="translate(1049,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#use14644"
+ id="use14788"
+ transform="translate(1049,0)"
+ width="5033"
+ height="1085" />
+ </g>
+ <g
+ id="g21836"
+ transform="translate(2,0)">
+ <g
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ style="color:#000000;fill:url(#linearGradient21863) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2.00013995;marker:none;visibility:visible;display:inline;overflow:visible"
+ transform="matrix(1.00001,0,0,0.999844,1308.99,-261.184)"
+ id="g9313">
+ <path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:url(#linearGradient21859) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2.00013995;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono"
+ d="m -39.993353,-1184.5675 c 0,3.8673 3.622442,7.9298 7.756866,7.9298 l 191.986687,0 c 4.62705,0 8.24949,-3.8705 8.24949,-7.7455 l 0,-149.2144 c 0,-4.2249 -0.51199,-6.1833 -3.49989,-9.171 l -85.323928,-85.2984 c -2.988223,-2.9873 -5.273683,-4.5274 -9.499625,-4.5307 l -101.735939,-0.08 c -4.133464,0 -7.933661,3.6832 -7.933661,8.1221 z"
+ id="path9315"
+ sodipodi:nodetypes="sssssssssss"
+ inkscape:connector-curvature="0" />
+ <path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:url(#linearGradient21861) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2.00013995;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono"
+ d="m 103.25988,-1421.8904 53.19027,53.4419 c 4.33857,4.3589 11.55354,3.3243 11.55354,-3.5507 l 0,-52.4417 c 0,-4.2273 -3.82644,-8.1968 -8.03174,-8.1968 l -53.19026,0 c -6.837537,0 -7.137368,7.1146 -3.52181,10.7473 z"
+ id="path9317"
+ sodipodi:nodetypes="sssssss"
+ inkscape:connector-curvature="0" />
+ </g>
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(1309,0)"
+ id="use14790"
+ xlink:href="#use9311"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(1309,0)"
+ id="use14792"
+ xlink:href="#path6866"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(1309,0)"
+ id="use14794"
+ xlink:href="#path6868"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(1309,0)"
+ id="use14796"
+ xlink:href="#path6960"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(1309,0)"
+ id="use14798"
+ xlink:href="#rect7927"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(1309,0)"
+ id="use14800"
+ xlink:href="#rect8070"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(1309,0)"
+ id="use14802"
+ xlink:href="#rect8098"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(1309,0)"
+ id="use14804"
+ xlink:href="#rect7221"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(1309,0)"
+ id="use14806"
+ xlink:href="#rect7225"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(1309,0)"
+ id="use14808"
+ xlink:href="#path7319"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(1309,0)"
+ id="use14810"
+ xlink:href="#path7323"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(1309,0)"
+ id="use14812"
+ xlink:href="#rect7436"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(1309,0)"
+ id="use14814"
+ xlink:href="#rect7438"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(1309,0)"
+ id="use14816"
+ xlink:href="#rect7440"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(1309,0)"
+ id="use14818"
+ xlink:href="#rect9509"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(1309,0)"
+ id="use14820"
+ xlink:href="#rect9521"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(1309,0)"
+ id="use14822"
+ xlink:href="#use14642"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(1309,0)"
+ id="use14824"
+ xlink:href="#use14644"
+ y="0"
+ x="0" />
+ </g>
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect20885"
+ id="use14868"
+ transform="matrix(-1,0,0,1,2,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#path25519"
+ id="use14896"
+ transform="translate(266,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#path25521"
+ id="use14898"
+ transform="translate(266,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#path20877"
+ id="use14900"
+ transform="translate(266,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#path20879"
+ id="use14902"
+ transform="translate(266,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect20881"
+ id="use14904"
+ transform="translate(266,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect20883"
+ id="use14906"
+ transform="translate(266,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect20885"
+ id="use14908"
+ transform="translate(266,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#path20891"
+ id="use14910"
+ transform="translate(266,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect20893"
+ id="use14912"
+ transform="translate(266,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect11303"
+ id="use14914"
+ transform="translate(266,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect11305"
+ id="use14916"
+ transform="translate(266,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect11307"
+ id="use14918"
+ transform="translate(266,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#use14868"
+ id="use14920"
+ transform="translate(266,0)"
+ width="5033"
+ height="1085" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(527,0)"
+ id="use14974"
+ xlink:href="#path25519"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(527,0)"
+ id="use14976"
+ xlink:href="#path25521"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(527,0)"
+ id="use14978"
+ xlink:href="#path20877"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(527,0)"
+ id="use14980"
+ xlink:href="#path20879"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(527,0)"
+ id="use14982"
+ xlink:href="#rect20881"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(527,0)"
+ id="use14984"
+ xlink:href="#rect20883"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(527,0)"
+ id="use14986"
+ xlink:href="#rect20885"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(527,0)"
+ id="use14988"
+ xlink:href="#path20891"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(527,0)"
+ id="use14990"
+ xlink:href="#rect20893"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(527,0)"
+ id="use14992"
+ xlink:href="#rect11303"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(527,0)"
+ id="use14994"
+ xlink:href="#rect11305"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(527,0)"
+ id="use14996"
+ xlink:href="#rect11307"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(527,0)"
+ id="use14998"
+ xlink:href="#use14868"
+ y="0"
+ x="0" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#path25519"
+ id="use15000"
+ transform="translate(788,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#path25521"
+ id="use15002"
+ transform="translate(788,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#path20877"
+ id="use15004"
+ transform="translate(788,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#path20879"
+ id="use15006"
+ transform="translate(788,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect20881"
+ id="use15008"
+ transform="translate(788,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect20883"
+ id="use15010"
+ transform="translate(788,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect20885"
+ id="use15012"
+ transform="translate(788,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#path20891"
+ id="use15014"
+ transform="translate(788,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect20893"
+ id="use15016"
+ transform="translate(788,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect11303"
+ id="use15018"
+ transform="translate(788,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect11305"
+ id="use15020"
+ transform="translate(788,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect11307"
+ id="use15022"
+ transform="translate(788,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#use14868"
+ id="use15024"
+ transform="translate(788,0)"
+ width="5033"
+ height="1085" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(1049,0)"
+ id="use15026"
+ xlink:href="#path25519"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(1049,0)"
+ id="use15028"
+ xlink:href="#path25521"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(1049,0)"
+ id="use15030"
+ xlink:href="#path20877"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(1049,0)"
+ id="use15032"
+ xlink:href="#path20879"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(1049,0)"
+ id="use15034"
+ xlink:href="#rect20881"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(1049,0)"
+ id="use15036"
+ xlink:href="#rect20883"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(1049,0)"
+ id="use15038"
+ xlink:href="#rect20885"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(1049,0)"
+ id="use15040"
+ xlink:href="#path20891"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(1049,0)"
+ id="use15042"
+ xlink:href="#rect20893"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(1049,0)"
+ id="use15044"
+ xlink:href="#rect11303"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(1049,0)"
+ id="use15046"
+ xlink:href="#rect11305"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(1049,0)"
+ id="use15048"
+ xlink:href="#rect11307"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(1049,0)"
+ id="use15050"
+ xlink:href="#use14868"
+ y="0"
+ x="0" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#path25519"
+ id="use15052"
+ transform="translate(1310,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#path25521"
+ id="use15054"
+ transform="translate(1310,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#path20877"
+ id="use15056"
+ transform="translate(1310,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#path20879"
+ id="use15058"
+ transform="translate(1310,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect20881"
+ id="use15060"
+ transform="translate(1310,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect20883"
+ id="use15062"
+ transform="translate(1310,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect20885"
+ id="use15064"
+ transform="translate(1310,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#path20891"
+ id="use15066"
+ transform="translate(1310,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect20893"
+ id="use15068"
+ transform="translate(1310,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect11303"
+ id="use15070"
+ transform="translate(1310,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect11305"
+ id="use15072"
+ transform="translate(1310,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect11307"
+ id="use15074"
+ transform="translate(1310,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#use14868"
+ id="use15076"
+ transform="translate(1310,0)"
+ width="5033"
+ height="1085" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(1571,0)"
+ id="use15078"
+ xlink:href="#path25519"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(1571,0)"
+ id="use15080"
+ xlink:href="#path25521"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(1571,0)"
+ id="use15082"
+ xlink:href="#path20877"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(1571,0)"
+ id="use15084"
+ xlink:href="#path20879"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(1571,0)"
+ id="use15086"
+ xlink:href="#rect20881"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(1571,0)"
+ id="use15088"
+ xlink:href="#rect20883"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(1571,0)"
+ id="use15090"
+ xlink:href="#rect20885"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(1571,0)"
+ id="use15092"
+ xlink:href="#path20891"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(1571,0)"
+ id="use15094"
+ xlink:href="#rect20893"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(1571,0)"
+ id="use15096"
+ xlink:href="#rect11303"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(1571,0)"
+ id="use15098"
+ xlink:href="#rect11305"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(1571,0)"
+ id="use15100"
+ xlink:href="#rect11307"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(1571,0)"
+ id="use15102"
+ xlink:href="#use14868"
+ y="0"
+ x="0" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#use9740"
+ id="use15254"
+ transform="translate(261,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#use16518"
+ id="use16528"
+ transform="translate(261,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect16512"
+ id="use16524"
+ transform="translate(261,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect13323"
+ id="use15292"
+ transform="translate(261,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#use16516"
+ id="use16526"
+ transform="translate(261,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#path20100"
+ id="use15294"
+ transform="translate(261,0.0608)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect13321"
+ id="use15296"
+ transform="translate(261,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#g22464"
+ id="use15298"
+ transform="translate(261,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#use9313"
+ id="use15304"
+ transform="translate(261,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#use9315"
+ id="use15306"
+ transform="translate(261,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#use9317"
+ id="use15308"
+ transform="translate(261,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#use9319"
+ id="use15310"
+ transform="translate(261,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#use9321"
+ id="use15312"
+ transform="translate(261,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#use9323"
+ id="use15314"
+ transform="translate(261,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#use9325"
+ id="use15316"
+ transform="translate(261,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#use9327"
+ id="use15318"
+ transform="translate(261,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#use9329"
+ id="use15320"
+ transform="translate(261,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#use9331"
+ id="use15322"
+ transform="translate(261,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#use9333"
+ id="use15324"
+ transform="translate(261,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#use9335"
+ id="use15326"
+ transform="translate(261,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#use9337"
+ id="use15328"
+ transform="translate(261,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#use9339"
+ id="use15330"
+ transform="translate(261,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#use9341"
+ id="use15332"
+ transform="translate(261,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#use9343"
+ id="use15334"
+ transform="translate(261,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#use9345"
+ id="use15336"
+ transform="translate(261,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#path13325"
+ id="use15385"
+ transform="translate(261,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#path13327"
+ id="use15387"
+ transform="translate(261,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect13329"
+ id="use15389"
+ transform="translate(261,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect13331"
+ id="use15391"
+ transform="translate(261,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect13333"
+ id="use15393"
+ transform="translate(261,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#path13335"
+ id="use15395"
+ transform="translate(261,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect13337"
+ id="use15397"
+ transform="translate(261,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect13339"
+ id="use15399"
+ transform="translate(261,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect14124"
+ id="use15401"
+ transform="translate(261,0)"
+ width="5033"
+ height="1085" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(522,0)"
+ id="use15403"
+ xlink:href="#use9740"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(522,0)"
+ id="use15405"
+ xlink:href="#use9742"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(522,0)"
+ id="use15407"
+ xlink:href="#use9744"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(522,0)"
+ id="use15409"
+ xlink:href="#use9746"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(522,0)"
+ id="use15411"
+ xlink:href="#use9748"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(522,0)"
+ id="use15413"
+ xlink:href="#use9750"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(522,0)"
+ id="use15415"
+ xlink:href="#use9752"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(522,0)"
+ id="use15417"
+ xlink:href="#use9754"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(522,0)"
+ id="use15419"
+ xlink:href="#use9756"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(522,0)"
+ id="use15421"
+ xlink:href="#use9758"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(522,0)"
+ id="use15423"
+ xlink:href="#use9760"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(522,0)"
+ id="use15425"
+ xlink:href="#use9762"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(522,0)"
+ id="use15427"
+ xlink:href="#use9764"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(522,0)"
+ id="use15429"
+ xlink:href="#use9766"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(522,0)"
+ id="use15431"
+ xlink:href="#use9768"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(522,0)"
+ id="use15433"
+ xlink:href="#use9770"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(522,0)"
+ id="use15435"
+ xlink:href="#use9772"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(522,0)"
+ id="use15437"
+ xlink:href="#use9774"
+ y="0"
+ x="0" />
+ <g
+ transform="matrix(7.99974,0,0,7.9969,1420.03,-8974.56)"
+ id="g9418"
+ style="fill:url(#linearGradient9678) #000000;fill-opacity:1;display:inline">
+ <path
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cccccccccccc"
+ id="path9420"
+ d="m 111.56249,976.3733 c -0.4584,0.0875 -0.57071,0.28336 -0.56249,0.75001 l 0,14.50168 c 5e-5,0.52364 0.22641,0.74996 0.74999,0.75001 l 11.50001,0 c 0.52358,-5e-5 0.74994,-0.22637 0.74999,-0.75001 l 0,-8.98088 c 0.006,-0.26409 -0.0975,-0.52903 -0.28125,-0.71883 l -5.27042,-5.2707 c -0.18978,-0.18372 -0.45469,-0.2874 -0.71875,-0.28128 l -5.97958,0 c -0.0623,-0.006 -0.12518,-0.006 -0.1875,0 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:url(#linearGradient9674) #000000;fill-opacity:1;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono" />
+ <path
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cccccccc"
+ id="path9422"
+ d="m 120.32938,976.3765 c -0.33282,0.10664 -0.44483,0.61349 -0.18825,0.85184 l 3.01199,3.02879 c 0.27825,0.26531 0.83246,0.0383 0.84712,-0.34705 l 0,-3.02878 c -3e-5,-0.26431 -0.23916,-0.50477 -0.502,-0.5048 l -3.01199,0 c -0.0519,-0.008 -0.105,-0.008 -0.15687,0 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:url(#linearGradient9676) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono" />
+ </g>
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(522,0)"
+ id="use15441"
+ xlink:href="#rect13323"
+ y="0"
+ x="0" />
+ <path
+ sodipodi:nodetypes="cccccccccccccccc"
+ id="path9424"
+ d="m 2314.0002,-1160.6378 0,2 0,112 0,2 2,0 88,0 2,0 0,-2 0,-70 0,-0.8752 -0.625,-0.6248 -41.7499,-42 -0.5,-0.5 -0.8751,0 -46.25,0 -2,0 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:url(#linearGradient9680) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono"
+ inkscape:connector-curvature="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(522,0)"
+ id="use16530"
+ xlink:href="#rect16512"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(522,0)"
+ id="use16532"
+ xlink:href="#use16516"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(522,0)"
+ id="use16534"
+ xlink:href="#use16518"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(522,0.0608)"
+ id="use15443"
+ xlink:href="#path20100"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(522,0)"
+ id="use15445"
+ xlink:href="#rect13321"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(522,0)"
+ id="use15447"
+ xlink:href="#g22464"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(522,0)"
+ id="use15453"
+ xlink:href="#use9313"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(522,0)"
+ id="use15455"
+ xlink:href="#use9315"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(522,0)"
+ id="use15457"
+ xlink:href="#use9317"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(522,0)"
+ id="use15459"
+ xlink:href="#use9319"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(522,0)"
+ id="use15461"
+ xlink:href="#use9321"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(522,0)"
+ id="use15463"
+ xlink:href="#use9323"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(522,0)"
+ id="use15465"
+ xlink:href="#use9325"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(522,0)"
+ id="use15467"
+ xlink:href="#use9327"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(522,0)"
+ id="use15469"
+ xlink:href="#use9329"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(522,0)"
+ id="use15471"
+ xlink:href="#use9331"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(522,0)"
+ id="use15473"
+ xlink:href="#use9333"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(522,0)"
+ id="use15475"
+ xlink:href="#use9335"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(522,0)"
+ id="use15477"
+ xlink:href="#use9337"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(522,0)"
+ id="use15479"
+ xlink:href="#use9339"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(522,0)"
+ id="use15481"
+ xlink:href="#use9341"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(522,0)"
+ id="use15483"
+ xlink:href="#use9343"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(522,0)"
+ id="use15485"
+ xlink:href="#use9345"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(522,0)"
+ id="use15533"
+ xlink:href="#path13325"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(522,0)"
+ id="use15535"
+ xlink:href="#path13327"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(522,0)"
+ id="use15537"
+ xlink:href="#rect13329"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(522,0)"
+ id="use15539"
+ xlink:href="#rect13331"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(522,0)"
+ id="use15541"
+ xlink:href="#rect13333"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(522,0)"
+ id="use15543"
+ xlink:href="#path13335"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(522,0)"
+ id="use15545"
+ xlink:href="#rect13337"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(522,0)"
+ id="use15547"
+ xlink:href="#rect13339"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(522,0)"
+ id="use15549"
+ xlink:href="#rect14124"
+ y="0"
+ x="0" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#use9740"
+ id="use15551"
+ transform="translate(783,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#use9742"
+ id="use15553"
+ transform="translate(783,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#use9744"
+ id="use15555"
+ transform="translate(783,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#use9746"
+ id="use15557"
+ transform="translate(783,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#use9748"
+ id="use15559"
+ transform="translate(783,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#use9750"
+ id="use15561"
+ transform="translate(783,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#use9752"
+ id="use15563"
+ transform="translate(783,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#use9754"
+ id="use15565"
+ transform="translate(783,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#use9756"
+ id="use15567"
+ transform="translate(783,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#use9758"
+ id="use15569"
+ transform="translate(783,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#use9760"
+ id="use15571"
+ transform="translate(783,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#use9762"
+ id="use15573"
+ transform="translate(783,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#use9764"
+ id="use15575"
+ transform="translate(783,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#use9766"
+ id="use15577"
+ transform="translate(783,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#use9768"
+ id="use15579"
+ transform="translate(783,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#use9770"
+ id="use15581"
+ transform="translate(783,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#use9772"
+ id="use15583"
+ transform="translate(783,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#use9774"
+ id="use15585"
+ transform="translate(783,0)"
+ width="5033"
+ height="1085" />
+ <g
+ style="fill:url(#linearGradient10079) #000000;fill-opacity:1;display:inline"
+ id="g9819"
+ transform="matrix(7.99974,0,0,7.9969,1681.03,-8974.56)">
+ <path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:url(#linearGradient10075) #000000;fill-opacity:1;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono"
+ d="m 111.56249,976.3733 c -0.4584,0.0875 -0.57071,0.28336 -0.56249,0.75001 l 0,14.50168 c 5e-5,0.52364 0.22641,0.74996 0.74999,0.75001 l 11.50001,0 c 0.52358,-5e-5 0.74994,-0.22637 0.74999,-0.75001 l 0,-8.98088 c 0.006,-0.26409 -0.0975,-0.52903 -0.28125,-0.71883 l -5.27042,-5.2707 c -0.18978,-0.18372 -0.45469,-0.2874 -0.71875,-0.28128 l -5.97958,0 c -0.0623,-0.006 -0.12518,-0.006 -0.1875,0 z"
+ id="path9821"
+ sodipodi:nodetypes="cccccccccccc"
+ inkscape:connector-curvature="0" />
+ <path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:url(#linearGradient10077) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono"
+ d="m 120.32938,976.3765 c -0.33282,0.10664 -0.44483,0.61349 -0.18825,0.85184 l 3.01199,3.02879 c 0.27825,0.26531 0.83246,0.0383 0.84712,-0.34705 l 0,-3.02878 c -3e-5,-0.26431 -0.23916,-0.50477 -0.502,-0.5048 l -3.01199,0 c -0.0519,-0.008 -0.105,-0.008 -0.15687,0 z"
+ id="path9823"
+ sodipodi:nodetypes="cccccccc"
+ inkscape:connector-curvature="0" />
+ </g>
+ <path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:url(#linearGradient10081) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono"
+ d="m 2575.0002,-1160.6378 0,2 0,112 0,2 2,0 88,0 2,0 0,-2 0,-70 0,-0.8752 -0.625,-0.6248 -41.7499,-42 -0.5,-0.5 -0.8751,0 -46.25,0 -2,0 z"
+ id="path9825"
+ sodipodi:nodetypes="cccccccccccccccc"
+ inkscape:connector-curvature="0" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#use16518"
+ id="use16540"
+ transform="translate(783,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect16512"
+ id="use16536"
+ transform="translate(783,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect13323"
+ id="use15589"
+ transform="translate(783,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#use16516"
+ id="use16538"
+ transform="translate(783,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#path20100"
+ id="use15591"
+ transform="translate(783,0.0608)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect13321"
+ id="use15593"
+ transform="translate(783,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#g22464"
+ id="use15595"
+ transform="translate(783,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#use9313"
+ id="use15601"
+ transform="translate(783,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#use9315"
+ id="use15603"
+ transform="translate(783,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#use9317"
+ id="use15605"
+ transform="translate(783,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#use9319"
+ id="use15607"
+ transform="translate(783,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#use9321"
+ id="use15609"
+ transform="translate(783,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#use9323"
+ id="use15611"
+ transform="translate(783,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#use9325"
+ id="use15613"
+ transform="translate(783,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#use9327"
+ id="use15615"
+ transform="translate(783,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#use9329"
+ id="use15617"
+ transform="translate(783,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#use9331"
+ id="use15619"
+ transform="translate(783,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#use9333"
+ id="use15621"
+ transform="translate(783,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#use9335"
+ id="use15623"
+ transform="translate(783,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#use9337"
+ id="use15625"
+ transform="translate(783,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#use9339"
+ id="use15627"
+ transform="translate(783,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#use9341"
+ id="use15629"
+ transform="translate(783,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#use9343"
+ id="use15631"
+ transform="translate(783,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#use9345"
+ id="use15633"
+ transform="translate(783,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#path13325"
+ id="use15681"
+ transform="translate(783,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#path13327"
+ id="use15683"
+ transform="translate(783,0)"
+ width="5033"
+ height="1085"
+ style="opacity:0.75" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect13329"
+ id="use15685"
+ transform="translate(783,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect13331"
+ id="use15687"
+ transform="translate(783,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect13333"
+ id="use15689"
+ transform="translate(783,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#path13335"
+ id="use15691"
+ transform="translate(783,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect13337"
+ id="use15693"
+ transform="translate(783,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect13339"
+ id="use15695"
+ transform="translate(783,0)"
+ width="5033"
+ height="1085"
+ style="opacity:0.75" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect14124"
+ id="use15697"
+ transform="translate(783,0)"
+ width="5033"
+ height="1085" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(1305,0)"
+ id="use15699"
+ xlink:href="#use9740"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(1305,0)"
+ id="use15701"
+ xlink:href="#use9742"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(1305,0)"
+ id="use15703"
+ xlink:href="#use9744"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(1305,0)"
+ id="use15705"
+ xlink:href="#use9746"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(1305,0)"
+ id="use15707"
+ xlink:href="#use9748"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(1305,0)"
+ id="use15709"
+ xlink:href="#use9750"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(1305,0)"
+ id="use15711"
+ xlink:href="#use9752"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(1305,0)"
+ id="use15713"
+ xlink:href="#use9754"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(1305,0)"
+ id="use15715"
+ xlink:href="#use9756"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(1305,0)"
+ id="use15717"
+ xlink:href="#use9758"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(1305,0)"
+ id="use15719"
+ xlink:href="#use9760"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(1305,0)"
+ id="use15721"
+ xlink:href="#use9762"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(1305,0)"
+ id="use15723"
+ xlink:href="#use9764"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(1305,0)"
+ id="use15725"
+ xlink:href="#use9766"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(1305,0)"
+ id="use15727"
+ xlink:href="#use9768"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(1305,0)"
+ id="use15729"
+ xlink:href="#use9770"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(1305,0)"
+ id="use15731"
+ xlink:href="#use9772"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(1305,0)"
+ id="use15733"
+ xlink:href="#use9774"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(1305,0)"
+ id="use15735"
+ xlink:href="#path22470-4"
+ y="0"
+ x="0" />
+ <g
+ style="fill:url(#linearGradient11260) #000000;fill-opacity:1;display:inline"
+ id="g10903"
+ transform="matrix(7.99974,0,0,7.9969,2203.03,-8974.56)">
+ <path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:url(#linearGradient11256) #000000;fill-opacity:1;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono"
+ d="m 111.56249,976.3733 c -0.4584,0.0875 -0.57071,0.28336 -0.56249,0.75001 l 0,14.50168 c 5e-5,0.52364 0.22641,0.74996 0.74999,0.75001 l 11.50001,0 c 0.52358,-5e-5 0.74994,-0.22637 0.74999,-0.75001 l 0,-8.98088 c 0.006,-0.26409 -0.0975,-0.52903 -0.28125,-0.71883 l -5.27042,-5.2707 c -0.18978,-0.18372 -0.45469,-0.2874 -0.71875,-0.28128 l -5.97958,0 c -0.0623,-0.006 -0.12518,-0.006 -0.1875,0 z"
+ id="path10905"
+ sodipodi:nodetypes="cccccccccccc"
+ inkscape:connector-curvature="0" />
+ <path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:url(#linearGradient11258) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono"
+ d="m 120.32938,976.3765 c -0.33282,0.10664 -0.44483,0.61349 -0.18825,0.85184 l 3.01199,3.02879 c 0.27825,0.26531 0.83246,0.0383 0.84712,-0.34705 l 0,-3.02878 c -3e-5,-0.26431 -0.23916,-0.50477 -0.502,-0.5048 l -3.01199,0 c -0.0519,-0.008 -0.105,-0.008 -0.15687,0 z"
+ id="path10907"
+ sodipodi:nodetypes="cccccccc"
+ inkscape:connector-curvature="0" />
+ </g>
+ <use
+ x="0"
+ y="0"
+ xlink:href="#path25519"
+ id="use15847"
+ transform="translate(3142,0)"
+ width="5033"
+ height="1085" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(1305,0)"
+ id="use16592"
+ xlink:href="#rect16512"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(1305,0)"
+ id="use16590"
+ xlink:href="#use16518"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(1305,0)"
+ id="use15737"
+ xlink:href="#rect13323"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(1305,0)"
+ id="use16594"
+ xlink:href="#use16516"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(1305,0.0608)"
+ id="use15739"
+ xlink:href="#path20100"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(1305,0)"
+ id="use15741"
+ xlink:href="#rect13321"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(1305,0)"
+ id="use15743"
+ xlink:href="#g22464"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(1305,0)"
+ id="use15749"
+ xlink:href="#use9313"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(1305,0)"
+ id="use15751"
+ xlink:href="#use9315"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(1305,0)"
+ id="use15753"
+ xlink:href="#use9317"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(1305,0)"
+ id="use15755"
+ xlink:href="#use9319"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(1305,0)"
+ id="use15757"
+ xlink:href="#use9321"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(1305,0)"
+ id="use15759"
+ xlink:href="#use9323"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(1305,0)"
+ id="use15761"
+ xlink:href="#use9325"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(1305,0)"
+ id="use15763"
+ xlink:href="#use9327"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(1305,0)"
+ id="use15765"
+ xlink:href="#use9329"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(1305,0)"
+ id="use15767"
+ xlink:href="#use9331"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(1305,0)"
+ id="use15769"
+ xlink:href="#use9333"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(1305,0)"
+ id="use15771"
+ xlink:href="#use9335"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(1305,0)"
+ id="use15773"
+ xlink:href="#use9337"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(1305,0)"
+ id="use15775"
+ xlink:href="#use9339"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(1305,0)"
+ id="use15777"
+ xlink:href="#use9341"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(1305,0)"
+ id="use15779"
+ xlink:href="#use9343"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(1305,0)"
+ id="use15781"
+ xlink:href="#use9345"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(1305,0)"
+ id="use15829"
+ xlink:href="#path13325"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(1305,0)"
+ id="use15831"
+ xlink:href="#path13327"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(1305,0)"
+ id="use15833"
+ xlink:href="#rect13329"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(1305,0)"
+ id="use15835"
+ xlink:href="#rect13331"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(1305,0)"
+ id="use15837"
+ xlink:href="#rect13333"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(1305,0)"
+ id="use15839"
+ xlink:href="#path13335"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(1305,0)"
+ id="use15841"
+ xlink:href="#rect13337"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(1305,0)"
+ id="use15843"
+ xlink:href="#rect13339"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(1305,0)"
+ id="use15845"
+ xlink:href="#rect14124"
+ y="0"
+ x="0" />
+ <path
+ style="opacity:0.6;color:#000000;fill:url(#linearGradient16502) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ d="m 1799,-1156.6378 0,3 2,0 0,-3 -2,0 z m 0,5 0,3 2,0 0,-3 -2,0 z m 0,5 0,3 2,0 0,-3 -2,0 z m 0,5 0,3 2,0 0,-3 -2,0 z m 0,5 0,3 2,0 0,-3 -2,0 z m 0,5 0,3 2,0 0,-3 -2,0 z m 0,5 0,3 2,0 0,-3 -2,0 z m 0,5 0,3 2,0 0,-3 -2,0 z m 0,5 0,3 2,0 0,-3 -2,0 z m 0,5 0,3 2,0 0,-3 -2,0 z m 0,5 0,3 2,0 0,-3 -2,0 z m 0,5 0,3 2,0 0,-3 -2,0 z m 0,5 0,3 2,0 0,-3 -2,0 z m 0,5 0,3 2,0 0,-3 -2,0 z m 0,5 0,3 2,0 0,-3 -2,0 z m 0,5 0,3 2,0 0,-3 -2,0 z m 0,5 0,3 2,0 0,-3 -2,0 z m 0,5 0,3 2,0 0,-3 -2,0 z m 0,5 0,3 2,0 0,-3 -2,0 z m 0,5 0,3 2,0 0,-3 -2,0 z m 0,5 0,3 2,0 0,-3 -2,0 z m 0,5 0,3 2,0 0,-3 -2,0 z"
+ id="rect15897"
+ inkscape:connector-curvature="0" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect15897"
+ id="use16424"
+ transform="translate(261,0)"
+ width="5033"
+ height="1085" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(522,0)"
+ id="use16504"
+ xlink:href="#rect15897"
+ y="0"
+ x="0" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect15897"
+ id="use16510"
+ transform="translate(783,0)"
+ width="5033"
+ height="1085" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(1305,0)"
+ id="use16596"
+ xlink:href="#rect15897"
+ y="0"
+ x="0" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#path25519"
+ id="use16636"
+ transform="translate(3408,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#path25521"
+ id="use16638"
+ transform="translate(3408,0.0608)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#path20877"
+ id="use16640"
+ transform="translate(3408,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#path20879"
+ id="use16642"
+ transform="translate(3408,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect20881"
+ id="use16644"
+ transform="translate(3408,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect20883"
+ id="use16646"
+ transform="translate(3408,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect20885"
+ id="use16648"
+ transform="translate(3408,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#path20891"
+ id="use16650"
+ transform="translate(3408,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect20893"
+ id="use16652"
+ transform="translate(3408,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect11303"
+ id="use16654"
+ transform="translate(3408,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect11305"
+ id="use16656"
+ transform="translate(3408,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect11307"
+ id="use16658"
+ transform="translate(3408,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#use14868"
+ id="use16660"
+ transform="translate(3408,0)"
+ width="5033"
+ height="1085" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(3669,0)"
+ id="use16662"
+ xlink:href="#path25519"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(3669,0.0608)"
+ id="use16664"
+ xlink:href="#path25521"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(3669,0)"
+ id="use16666"
+ xlink:href="#path20877"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(3669,0)"
+ id="use16668"
+ xlink:href="#path20879"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(3669,0)"
+ id="use16670"
+ xlink:href="#rect20881"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(3669,0)"
+ id="use16672"
+ xlink:href="#rect20883"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(3669,0)"
+ id="use16674"
+ xlink:href="#rect20885"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(3669,0)"
+ id="use16676"
+ xlink:href="#path20891"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(3669,0)"
+ id="use16678"
+ xlink:href="#rect20893"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(3669,0)"
+ id="use16680"
+ xlink:href="#rect11303"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(3669,0)"
+ id="use16682"
+ xlink:href="#rect11305"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(3669,0)"
+ id="use16684"
+ xlink:href="#rect11307"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(3669,0)"
+ id="use16686"
+ xlink:href="#use14868"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(3931,0)"
+ id="use16688"
+ xlink:href="#path25519"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(3931,0.0608)"
+ id="use16690"
+ xlink:href="#path25521"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(3931,0)"
+ id="use16692"
+ xlink:href="#path20877"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(3931,0)"
+ id="use16694"
+ xlink:href="#path20879"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(3931,0)"
+ id="use16696"
+ xlink:href="#rect20881"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(3931,0)"
+ id="use16698"
+ xlink:href="#rect20883"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(3931,0)"
+ id="use16700"
+ xlink:href="#rect20885"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(3931,0)"
+ id="use16702"
+ xlink:href="#path20891"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(3931,0)"
+ id="use16704"
+ xlink:href="#rect20893"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(3931,0)"
+ id="use16706"
+ xlink:href="#rect11303"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(3931,0)"
+ id="use16708"
+ xlink:href="#rect11305"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(3931,0)"
+ id="use16710"
+ xlink:href="#rect11307"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(3931,0)"
+ id="use16712"
+ xlink:href="#use14868"
+ y="0"
+ x="0" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#path25519"
+ id="use16714"
+ transform="translate(4191,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#path25521"
+ id="use16716"
+ transform="translate(4191,0.0608)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#path20877"
+ id="use16718"
+ transform="translate(4191,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#path20879"
+ id="use16720"
+ transform="translate(4191,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect20881"
+ id="use16722"
+ transform="translate(4191,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect20883"
+ id="use16724"
+ transform="translate(4191,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect20885"
+ id="use16726"
+ transform="translate(4191,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#path20891"
+ id="use16728"
+ transform="translate(4191,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect20893"
+ id="use16730"
+ transform="translate(4191,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect11303"
+ id="use16732"
+ transform="translate(4191,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect11305"
+ id="use16734"
+ transform="translate(4191,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect11307"
+ id="use16736"
+ transform="translate(4191,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#use14868"
+ id="use16738"
+ transform="translate(4191,0)"
+ width="5033"
+ height="1085" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(4457,0)"
+ id="use16740"
+ xlink:href="#path25519"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(4457,0.0608)"
+ id="use16742"
+ xlink:href="#path25521"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(4457,0)"
+ id="use16744"
+ xlink:href="#path20877"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(4457,0)"
+ id="use16746"
+ xlink:href="#path20879"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(4457,0)"
+ id="use16748"
+ xlink:href="#rect20881"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(4457,0)"
+ id="use16750"
+ xlink:href="#rect20883"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(4457,0)"
+ id="use16752"
+ xlink:href="#rect20885"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(4457,0)"
+ id="use16754"
+ xlink:href="#path20891"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(4457,0)"
+ id="use16756"
+ xlink:href="#rect20893"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(4457,0)"
+ id="use16758"
+ xlink:href="#rect11303"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(4457,0)"
+ id="use16760"
+ xlink:href="#rect11305"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(4457,0)"
+ id="use16762"
+ xlink:href="#rect11307"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(4457,0)"
+ id="use16764"
+ xlink:href="#use14868"
+ y="0"
+ x="0" />
+ <g
+ id="g55134">
+ <g
+ transform="matrix(7.99974,0,0,7.9969,-938.971,-8841.56)"
+ id="g20965"
+ style="fill:#ffffff;fill-opacity:1;display:inline">
+ <path
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="ccccccccccc"
+ id="path20967"
+ d="m 111,977.11926 0,14.50553 c 5e-5,0.52378 0.22641,0.75016 0.75,0.75021 l 11.50016,0 c 0.52359,-5e-5 0.74995,-0.22643 0.75,-0.75021 l 0,-8.98326 c 0.006,-0.26416 -0.0975,-0.52917 -0.28125,-0.71902 l -5.27049,-5.2721 c -0.18978,-0.18377 -0.4547,-0.28748 -0.71876,-0.28136 l -5.97966,0 c -0.51899,0 -0.75229,0.43588 -0.75,0.75021 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono" />
+ <path
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cccccccc"
+ id="path20969"
+ d="m 120.32949,976.37483 c -0.33283,0.10664 -0.44484,0.61349 -0.18826,0.85184 l 3.01205,3.02879 c 0.27825,0.26531 0.83247,0.0383 0.84713,-0.34705 l 0,-3.02878 c -3e-5,-0.26431 -0.23916,-0.50477 -0.50201,-0.5048 l -3.01204,0 c -0.0519,-0.008 -0.105,-0.008 -0.15687,0 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono" />
+ </g>
+ <path
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cccccccccccccccc"
+ id="path20971"
+ d="m -45,-1027.6378 0,2 0,112 0,2 1.999997,0 88.000006,0 1.999997,0 0,-2 0,-70 0,-0.8752 -0.624971,-0.6248 -41.7500029,-42 -0.4999691,-0.5 -0.875016,0 -46.250044,0 -1.999997,0 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono" />
+ </g>
+ <use
+ x="0"
+ y="0"
+ xlink:href="#g26331"
+ id="use26339"
+ transform="translate(1837,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#g26205"
+ id="use26265"
+ transform="translate(1837,0)"
+ width="5033"
+ height="1085" />
+ <g
+ id="g14835"
+ style="fill:url(#linearGradient14921-0) #000000;fill-opacity:1;display:inline"
+ transform="matrix(0.999981,0,0,0.999625,93.0022,-1681.64)">
+ <path
+ sodipodi:nodetypes="cccccccccccc"
+ id="path14837"
+ d="m 111.8125,976.375 c -0.4584,0.0875 -0.82072,0.5334 -0.8125,1 l 0,14 c 5e-5,0.52358 0.47642,0.99995 1,1 l 12,0 c 0.52358,-5e-5 0.99995,-0.47642 1,-1 l 0,-8 c 0.006,-0.26406 -0.0975,-0.52897 -0.28125,-0.71875 l -6,-6 C 118.52897,976.47255 118.26406,976.36888 118,976.375 l -6,0 c -0.0623,-0.006 -0.12518,-0.006 -0.1875,0 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:url(#linearGradient14917-9) #000000;fill-opacity:1;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono"
+ inkscape:connector-curvature="0" />
+ <path
+ sodipodi:nodetypes="cccccccc"
+ id="path14839"
+ d="m 121.34375,976.375 c -0.3315,0.10563 -0.44306,0.60766 -0.1875,0.84375 l 3,3 c 0.27715,0.26279 0.82915,0.0379 0.84375,-0.34375 l 0,-3 c -3e-5,-0.26179 -0.23821,-0.49997 -0.5,-0.5 l -3,0 c -0.0517,-0.008 -0.10459,-0.008 -0.15625,0 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:url(#linearGradient14919-3) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono"
+ inkscape:connector-curvature="0" />
+ </g>
+ <path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:url(#linearGradient44259) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono"
+ d="m 205.00012,-704.63781 0,0.5 0,13 0,0.5 0.49999,0 10.99979,0 0.5,0 0,-0.5 0,-7.3125 0,-0.2188 -0.15625,-0.125 -5.6874,-5.7187 -0.15624,-0.125 -0.1875,0 -5.3124,0 -0.49999,0 z"
+ id="path14871"
+ sodipodi:nodetypes="cccccccccccccccc"
+ inkscape:connector-curvature="0" />
+ <path
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/bedipp/DocumentFoundation/Writer_16.png"
+ sodipodi:nodetypes="cccccc"
+ inkscape:connector-curvature="0"
+ id="path14841"
+ d="m 206.0003,-703.63781 4.79971,0 5.2001,5.2 0,6.8 -9.99981,0 0,-12 z"
+ style="fill:#ffffff;fill-opacity:0.58823494;stroke:none;display:inline" />
+ <g
+ transform="matrix(0.999981,0,0,0.999625,1664,-1681.64)"
+ style="fill:url(#linearGradient16170-2) #000000;fill-opacity:1;display:inline"
+ id="g16146">
+ <path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:url(#linearGradient16166-3) #000000;fill-opacity:1;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono"
+ d="m 111.8125,976.375 c -0.4584,0.0875 -0.82072,0.5334 -0.8125,1 l 0,14 c 5e-5,0.52358 0.47642,0.99995 1,1 l 12,0 c 0.52358,-5e-5 0.99995,-0.47642 1,-1 l 0,-8 c 0.006,-0.26406 -0.0975,-0.52897 -0.28125,-0.71875 l -6,-6 C 118.52897,976.47255 118.26406,976.36888 118,976.375 l -6,0 c -0.0623,-0.006 -0.12518,-0.006 -0.1875,0 z"
+ id="path16148"
+ sodipodi:nodetypes="cccccccccccc"
+ inkscape:connector-curvature="0" />
+ <path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:url(#linearGradient16168-7) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono"
+ d="m 121.34375,976.375 c -0.3315,0.10563 -0.44306,0.60766 -0.1875,0.84375 l 3,3 c 0.27715,0.26279 0.82915,0.0379 0.84375,-0.34375 l 0,-3 c -3e-5,-0.26179 -0.23821,-0.49997 -0.5,-0.5 l -3,0 c -0.0517,-0.008 -0.10459,-0.008 -0.15625,0 z"
+ id="path16150"
+ sodipodi:nodetypes="cccccccc"
+ inkscape:connector-curvature="0" />
+ </g>
+ <path
+ sodipodi:nodetypes="cccccccccccccccc"
+ id="path16152"
+ d="m 1776.0001,-704.63781 0,0.5 0,13 0,0.5 0.5,0 10.9998,0 0.5,0 0,-0.5 0,-7.3125 0,-0.2188 -0.1562,-0.125 -5.6875,-5.7187 -0.1562,-0.125 -0.1875,0 -5.3124,0 -0.5,0 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:url(#linearGradient44252) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:#ffffff;fill-opacity:0.58823494;stroke:none;display:inline"
+ d="m 1776.0003,-703.63781 5.7997,0 5.2001,5.2 0,6.8 -10.9998,0 0,-12 z"
+ id="path16154"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cccccc"
+ inkscape:export-filename="/home/bedipp/DocumentFoundation/Writer_16.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ <rect
+ y="-703.63782"
+ x="1776"
+ height="1"
+ width="1"
+ id="rect16212"
+ style="color:#000000;fill:url(#linearGradient44248) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ inkscape:tile-cx="383.5"
+ inkscape:tile-cy="1050.5"
+ inkscape:tile-w="1"
+ inkscape:tile-h="1"
+ inkscape:tile-x0="383"
+ inkscape:tile-y0="1050" />
+ <g
+ transform="matrix(1.99993,0,0,1.99923,1555.01,-2736.62)"
+ id="g16559"
+ style="fill:url(#linearGradient16575-7) #000000;fill-opacity:1;display:inline">
+ <path
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cccccccccccc"
+ id="path16561"
+ d="m 111.8125,976.3733 c -0.4584,0.0875 -0.82072,0.53346 -0.8125,1.00011 l 0,14.00148 c 5e-5,0.52364 0.47642,1.00006 1,1.00011 l 10.99999,0 c 0.52358,-5e-5 0.99995,-0.47647 1,-1.00011 l 0,-8.73078 c 0.006,-0.26409 -0.0975,-0.52903 -0.28125,-0.71883 l -5.27042,-5.2707 c -0.18978,-0.18372 -0.45469,-0.2874 -0.71875,-0.28128 l -5.72957,0 c -0.0623,-0.006 -0.12518,-0.006 -0.1875,0 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:url(#linearGradient16571-9) #000000;fill-opacity:1;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono" />
+ <path
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cccccccc"
+ id="path16563"
+ d="m 120.32938,976.3765 c -0.33282,0.10664 -0.44483,0.61349 -0.18825,0.85184 l 3.01199,3.02879 c 0.27825,0.26531 0.83246,0.0383 0.84712,-0.34705 l 0,-3.02878 c -3e-5,-0.26431 -0.23916,-0.50477 -0.502,-0.5048 l -3.01199,0 c -0.0519,-0.008 -0.105,-0.008 -0.15687,0 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:url(#linearGradient16573-9) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono" />
+ </g>
+ <path
+ sodipodi:nodetypes="cccccccccccccccc"
+ id="path16565"
+ d="m 1779.0001,-782.62261 0,0.5 0,27 0,0.5 0.5,0 20.9995,0 0.5,0 0,-0.5 0,-17 0,-0.2188 -0.1562,-0.1562 -9.9373,-10 -0.125,-0.125 -0.2188,0 -11.0622,0 -0.5,0 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:url(#linearGradient44242) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:url(#linearGradient44239) #000000;fill-opacity:1;stroke:none;display:inline"
+ d="m 1781,-781.62261 9.0584,0 9.941,10 0,16 -18.9994,0 0,-26 z"
+ id="path16567"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cccccc"
+ inkscape:export-filename="/home/bedipp/DocumentFoundation/Writer_16.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ <g
+ id="g8221"
+ transform="translate(1.72768e-6,1.6925e-6)">
+ <g
+ transform="matrix(1.99993,0,0,1.99923,-281.992,-2736.62)"
+ id="g16593"
+ style="fill:url(#linearGradient43486) #000000;fill-opacity:1;display:inline">
+ <path
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cccccccccccc"
+ id="path16595"
+ d="m 111.8125,976.3733 c -0.4584,0.0875 -0.82072,0.53346 -0.8125,1.00011 l 0,14.00148 c 5e-5,0.52364 0.47642,1.00006 1,1.00011 l 10.99999,0 c 0.52358,-5e-5 0.99995,-0.47647 1,-1.00011 l 0,-8.73078 c 0.006,-0.26409 -0.0975,-0.52903 -0.28125,-0.71883 l -5.27042,-5.2707 c -0.18978,-0.18372 -0.45469,-0.2874 -0.71875,-0.28128 l -5.72957,0 c -0.0623,-0.006 -0.12518,-0.006 -0.1875,0 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:url(#linearGradient43482) #000000;fill-opacity:1;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono" />
+ <path
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cccccccc"
+ id="path16597"
+ d="m 120.32938,976.3765 c -0.33282,0.10664 -0.44483,0.61349 -0.18825,0.85184 l 3.01199,3.02879 c 0.27825,0.26531 0.83246,0.0383 0.84712,-0.34705 l 0,-3.02878 c -3e-5,-0.26431 -0.23916,-0.50477 -0.502,-0.5048 l -3.01199,0 c -0.0519,-0.008 -0.105,-0.008 -0.15687,0 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:url(#linearGradient43484) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono" />
+ </g>
+ <path
+ sodipodi:nodetypes="cccccccccccccccc"
+ id="path16599"
+ d="m -57.99994,-782.62261 0,0.5 0,27 0,0.5 0.49999,0 20.9996,0 0.49999,0 0,-0.5 0,-17 0,-0.2188 -0.15624,-0.1562 -9.93731,-10 -0.12499,-0.125 -0.21875,0 -11.0623,0 -0.49999,0 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:url(#linearGradient43488) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:url(#linearGradient43490) #000000;fill-opacity:1;stroke:none;display:inline"
+ d="m -56.99996,-781.62261 10.05841,0 9.9409,10 0,16 -19.99931,0 0,-26 z"
+ id="path16601"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cccccc"
+ inkscape:export-filename="/home/bedipp/DocumentFoundation/Writer_16.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ </g>
+ <rect
+ style="color:#000000;fill:#999999;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect16615"
+ width="1"
+ height="1"
+ x="1780"
+ y="-780.63782"
+ inkscape:tile-cx="381.5"
+ inkscape:tile-cy="972.49998"
+ inkscape:tile-w="1"
+ inkscape:tile-h="1"
+ inkscape:tile-x0="381"
+ inkscape:tile-y0="971.99998" />
+ <rect
+ inkscape:tile-y0="971.99998"
+ inkscape:tile-x0="381"
+ inkscape:tile-h="1"
+ inkscape:tile-w="1"
+ inkscape:tile-cy="972.49998"
+ inkscape:tile-cx="381.5"
+ y="-780.63782"
+ x="1776"
+ height="1"
+ width="3"
+ id="rect16795"
+ style="color:#000000;fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <use
+ x="0"
+ y="0"
+ inkscape:tiled-clone-of="#rect16795"
+ xlink:href="#rect16795"
+ transform="translate(0,2)"
+ id="use17219"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ inkscape:tiled-clone-of="#rect16795"
+ xlink:href="#rect16795"
+ transform="translate(0,4)"
+ id="use17221"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ inkscape:tiled-clone-of="#rect16795"
+ xlink:href="#rect16795"
+ transform="translate(0,6)"
+ id="use17223"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ inkscape:tiled-clone-of="#rect16795"
+ xlink:href="#rect16795"
+ transform="translate(0,8)"
+ id="use17225"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ inkscape:tiled-clone-of="#rect16795"
+ xlink:href="#rect16795"
+ transform="translate(0,10)"
+ id="use17227"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ inkscape:tiled-clone-of="#rect16795"
+ xlink:href="#rect16795"
+ transform="translate(0,12)"
+ id="use17229"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ inkscape:tiled-clone-of="#rect16795"
+ xlink:href="#rect16795"
+ transform="translate(0,14)"
+ id="use17231"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ inkscape:tiled-clone-of="#rect16795"
+ xlink:href="#rect16795"
+ transform="translate(0,16)"
+ id="use17233"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ inkscape:tiled-clone-of="#rect16795"
+ xlink:href="#rect16795"
+ transform="translate(0,18)"
+ id="use17235"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ inkscape:tiled-clone-of="#rect16795"
+ xlink:href="#rect16795"
+ transform="translate(0,20)"
+ id="use17237"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ inkscape:tiled-clone-of="#rect16795"
+ xlink:href="#rect16795"
+ transform="translate(0,22)"
+ id="use17239"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ inkscape:tiled-clone-of="#rect16795"
+ xlink:href="#rect16795"
+ transform="translate(0,24)"
+ id="use17241"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ inkscape:tiled-clone-of="#rect16615"
+ xlink:href="#rect16615"
+ transform="translate(0,2)"
+ id="use17245"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ inkscape:tiled-clone-of="#rect16615"
+ xlink:href="#rect16615"
+ transform="translate(0,4)"
+ id="use17247"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ inkscape:tiled-clone-of="#rect16615"
+ xlink:href="#rect16615"
+ transform="translate(0,6)"
+ id="use17249"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ inkscape:tiled-clone-of="#rect16615"
+ xlink:href="#rect16615"
+ transform="translate(0,8)"
+ id="use17251"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ inkscape:tiled-clone-of="#rect16615"
+ xlink:href="#rect16615"
+ transform="translate(0,10)"
+ id="use17253"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ inkscape:tiled-clone-of="#rect16615"
+ xlink:href="#rect16615"
+ transform="translate(0,12)"
+ id="use17255"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ inkscape:tiled-clone-of="#rect16615"
+ xlink:href="#rect16615"
+ transform="translate(0,14)"
+ id="use17257"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ inkscape:tiled-clone-of="#rect16615"
+ xlink:href="#rect16615"
+ transform="translate(0,16)"
+ id="use17259"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ inkscape:tiled-clone-of="#rect16615"
+ xlink:href="#rect16615"
+ transform="translate(0,18)"
+ id="use17261"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ inkscape:tiled-clone-of="#rect16615"
+ xlink:href="#rect16615"
+ transform="translate(0,20)"
+ id="use17263"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ inkscape:tiled-clone-of="#rect16615"
+ xlink:href="#rect16615"
+ transform="translate(0,22)"
+ id="use17265"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ inkscape:tiled-clone-of="#rect16615"
+ xlink:href="#rect16615"
+ transform="translate(0,24)"
+ id="use17267"
+ width="5033"
+ height="1085" />
+ <g
+ transform="matrix(2.9999,0,0,2.99884,1445.01,-3823.61)"
+ id="g23740"
+ style="fill:url(#linearGradient23776-9) #000000;fill-opacity:1;display:inline">
+ <path
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cccccccccccc"
+ id="path23742"
+ d="m 111.8125,976.3733 c -0.4584,0.0875 -0.82072,0.53346 -0.8125,1.00011 l 0,14.00148 c 5e-5,0.52364 0.47642,1.00006 1,1.00011 l 11.33333,0 c 0.52358,-5e-5 0.99995,-0.47647 1,-1.00011 l 0,-8.73078 c 0.006,-0.26409 -0.0975,-0.52903 -0.28125,-0.71883 l -5.27042,-5.2707 c -0.18978,-0.18372 -0.45469,-0.2874 -0.71875,-0.28128 l -6.06291,0 c -0.0623,-0.006 -0.12518,-0.006 -0.1875,0 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:url(#linearGradient23772-8) #000000;fill-opacity:1;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono" />
+ <path
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cccccccc"
+ id="path23744"
+ d="m 120.66272,976.3765 c -0.33282,0.10664 -0.44483,0.61349 -0.18825,0.85184 l 3.01199,3.02879 c 0.27825,0.26531 0.83246,0.0383 0.84712,-0.34705 l 0,-3.02878 c -3e-5,-0.26431 -0.23916,-0.50477 -0.502,-0.5048 l -3.01199,0 c -0.0519,-0.008 -0.105,-0.008 -0.15687,0 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:url(#linearGradient23774-8) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono" />
+ </g>
+ <path
+ sodipodi:nodetypes="cccccccccccccccc"
+ id="path23746"
+ d="m 1781.0001,-892.61507 0,0.75 0,40.50004 0,0.72723 0.75,0 32.4994,0 0.75,0 0,-0.72723 0,-25.50003 0,-0.3282 -0.2344,-0.2343 -14.9059,-15.00001 -0.1875,-0.1875 -0.3282,0 -17.5934,0 -0.75,0 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:url(#linearGradient44201) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:url(#linearGradient44198) #000000;fill-opacity:1;stroke:none;display:inline"
+ d="m 1783,-890.6378 16,0 14,14 0,24 -30,0 0,-38 z"
+ id="path23748"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cccccc"
+ inkscape:export-filename="/home/bedipp/DocumentFoundation/Writer_16.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ <g
+ id="g23860"
+ inkscape:tile-cx="392"
+ inkscape:tile-cy="916.49998"
+ inkscape:tile-w="6"
+ inkscape:tile-h="1"
+ inkscape:tile-x0="389"
+ inkscape:tile-y0="915.99998"
+ transform="translate(1511,-52)">
+ <rect
+ style="color:#000000;fill:#1c99e0;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect23806"
+ width="1"
+ height="1"
+ x="271"
+ y="-837.63782"
+ inkscape:tile-cx="381.5"
+ inkscape:tile-cy="972.49998"
+ inkscape:tile-w="1"
+ inkscape:tile-h="1"
+ inkscape:tile-x0="381"
+ inkscape:tile-y0="971.99998" />
+ <rect
+ inkscape:tile-y0="971.99998"
+ inkscape:tile-x0="381"
+ inkscape:tile-h="1"
+ inkscape:tile-w="1"
+ inkscape:tile-cy="972.49998"
+ inkscape:tile-cx="381.5"
+ y="-837.63782"
+ x="266"
+ height="1"
+ width="4"
+ id="rect23808"
+ style="color:#000000;fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ </g>
+ <use
+ x="0"
+ y="0"
+ inkscape:tiled-clone-of="#g23860"
+ xlink:href="#g23860"
+ transform="translate(0,3)"
+ id="use24090"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ inkscape:tiled-clone-of="#g23860"
+ xlink:href="#g23860"
+ transform="translate(0,6)"
+ id="use24092"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ inkscape:tiled-clone-of="#g23860"
+ xlink:href="#g23860"
+ transform="translate(0,9)"
+ id="use24094"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ inkscape:tiled-clone-of="#g23860"
+ xlink:href="#g23860"
+ transform="translate(0,12)"
+ id="use24096"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ inkscape:tiled-clone-of="#g23860"
+ xlink:href="#g23860"
+ transform="translate(0,15)"
+ id="use24098"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ inkscape:tiled-clone-of="#g23860"
+ xlink:href="#g23860"
+ transform="translate(0,18)"
+ id="use24100"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ inkscape:tiled-clone-of="#g23860"
+ xlink:href="#g23860"
+ transform="translate(0,21)"
+ id="use24102"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ inkscape:tiled-clone-of="#g23860"
+ xlink:href="#g23860"
+ transform="translate(0,24)"
+ id="use24104"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ inkscape:tiled-clone-of="#g23860"
+ xlink:href="#g23860"
+ transform="translate(0,27)"
+ id="use24106"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ inkscape:tiled-clone-of="#g23860"
+ xlink:href="#g23860"
+ transform="translate(0,30)"
+ id="use24108"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ inkscape:tiled-clone-of="#g23860"
+ xlink:href="#g23860"
+ transform="translate(0,33)"
+ id="use24110"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ inkscape:tiled-clone-of="#g23860"
+ xlink:href="#g23860"
+ transform="translate(0,36)"
+ id="use24112"
+ width="5033"
+ height="1085" />
+ <rect
+ style="color:#000000;fill:#cccccc;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect25331"
+ width="3"
+ height="1"
+ x="1774"
+ y="-682.63782"
+ inkscape:tile-cx="382.5"
+ inkscape:tile-cy="1071.5"
+ inkscape:tile-w="3"
+ inkscape:tile-h="1"
+ inkscape:tile-x0="381"
+ inkscape:tile-y0="1071" />
+ <g
+ id="g25851"
+ inkscape:tile-cx="379.5"
+ inkscape:tile-cy="1010"
+ inkscape:tile-w="5"
+ inkscape:tile-h="2"
+ inkscape:tile-x0="377"
+ inkscape:tile-y0="1009"
+ transform="translate(1521,1.6925e-6)">
+ <rect
+ style="color:#000000;fill:#cccccc;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect25381"
+ width="4"
+ height="2"
+ x="255"
+ y="-744.63782"
+ inkscape:tile-cx="381.5"
+ inkscape:tile-cy="972.49998"
+ inkscape:tile-w="1"
+ inkscape:tile-h="1"
+ inkscape:tile-x0="381"
+ inkscape:tile-y0="971.99998" />
+ </g>
+ <use
+ x="0"
+ y="0"
+ inkscape:tiled-clone-of="#g25851"
+ xlink:href="#g25851"
+ transform="translate(0,4)"
+ id="use25928"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ inkscape:tiled-clone-of="#g25851"
+ xlink:href="#g25851"
+ transform="translate(0,8)"
+ id="use25930"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ inkscape:tiled-clone-of="#g25851"
+ xlink:href="#g25851"
+ transform="translate(0,12)"
+ id="use25932"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ inkscape:tiled-clone-of="#g25851"
+ xlink:href="#g25851"
+ transform="translate(0,16)"
+ id="use25934"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ inkscape:tiled-clone-of="#g25851"
+ xlink:href="#g25851"
+ transform="translate(0,20)"
+ id="use25936"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ inkscape:tiled-clone-of="#g25851"
+ xlink:href="#g25851"
+ transform="translate(0,24)"
+ id="use25938"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ inkscape:tiled-clone-of="#rect25331"
+ xlink:href="#rect25331"
+ transform="translate(0,2)"
+ id="use26004"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ inkscape:tiled-clone-of="#rect25331"
+ xlink:href="#rect25331"
+ transform="translate(0,4)"
+ id="use26006"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ inkscape:tiled-clone-of="#rect25331"
+ xlink:href="#rect25331"
+ transform="translate(0,6)"
+ id="use26008"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ inkscape:tiled-clone-of="#rect25331"
+ xlink:href="#rect25331"
+ transform="translate(0,8)"
+ id="use26010"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ inkscape:tiled-clone-of="#rect25331"
+ xlink:href="#rect25331"
+ transform="translate(0,10)"
+ id="use26012"
+ width="5033"
+ height="1085" />
+ <g
+ id="g26069-2"
+ transform="translate(1.72768e-6,1.6925e-6)">
+ <g
+ transform="matrix(2.9999,0,0,2.99884,-391.989,-3770.61)"
+ id="g26014-4"
+ style="fill:#ffffff;fill-opacity:1;display:inline">
+ <path
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cccccccccccc"
+ id="path26016-8"
+ d="m 111.8125,976.3733 c -0.4584,0.0875 -0.82072,0.53346 -0.8125,1.00011 l 0,14.00148 c 5e-5,0.52364 0.47642,1.00006 1,1.00011 l 11.33333,0 c 0.52358,-5e-5 0.99995,-0.47647 1,-1.00011 l 0,-8.73078 c 0.006,-0.26409 -0.0975,-0.52903 -0.28125,-0.71883 l -5.27042,-5.2707 c -0.18978,-0.18372 -0.45469,-0.2874 -0.71875,-0.28128 l -6.06291,0 c -0.0623,-0.006 -0.12518,-0.006 -0.1875,0 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono" />
+ <path
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cccccccc"
+ id="path26018-8"
+ d="m 120.66272,976.3765 c -0.33282,0.10664 -0.44483,0.61349 -0.18825,0.85184 l 3.01199,3.02879 c 0.27825,0.26531 0.83246,0.0383 0.84712,-0.34705 l 0,-3.02878 c -3e-5,-0.26431 -0.23916,-0.50477 -0.502,-0.5048 l -3.01199,0 c -0.0519,-0.008 -0.105,-0.008 -0.15687,0 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono" />
+ </g>
+ <path
+ sodipodi:nodetypes="cccccccccccccccc"
+ id="path26020-8"
+ d="m -55.9999,-839.61507 0,0.75 0,40.50004 0,0.72723 0.74999,0 32.49943,0 0.74998,0 0,-0.72723 0,-25.50003 0,-0.3282 -0.23436,-0.2343 -14.90598,-15.00001 -0.18748,-0.1875 -0.32813,0 -17.59346,0 -0.74999,0 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono"
+ inkscape:connector-curvature="0" />
+ </g>
+ <use
+ x="0"
+ y="0"
+ xlink:href="#g26069-2"
+ id="use26075-1"
+ transform="translate(266,0)"
+ width="5033"
+ height="1085" />
+ <g
+ id="g8214"
+ transform="translate(1.72768e-6,1.6925e-6)">
+ <g
+ style="fill:url(#linearGradient43496) #000000;fill-opacity:1;display:inline"
+ id="g26113"
+ transform="matrix(2.9999,0,0,2.99884,-391.989,-3823.61)">
+ <path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:url(#linearGradient43492) #000000;fill-opacity:1;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono"
+ d="m 111.8125,976.3733 c -0.4584,0.0875 -0.82072,0.53346 -0.8125,1.00011 l 0,14.00148 c 5e-5,0.52364 0.47642,1.00006 1,1.00011 l 11.33333,0 c 0.52358,-5e-5 0.99995,-0.47647 1,-1.00011 l 0,-8.73078 c 0.006,-0.26409 -0.0975,-0.52903 -0.28125,-0.71883 l -5.27042,-5.2707 c -0.18978,-0.18372 -0.45469,-0.2874 -0.71875,-0.28128 l -6.06291,0 c -0.0623,-0.006 -0.12518,-0.006 -0.1875,0 z"
+ id="path26115"
+ sodipodi:nodetypes="cccccccccccc"
+ inkscape:connector-curvature="0" />
+ <path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:url(#linearGradient43494) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono"
+ d="m 120.66272,976.3765 c -0.33282,0.10664 -0.44483,0.61349 -0.18825,0.85184 l 3.01199,3.02879 c 0.27825,0.26531 0.83246,0.0383 0.84712,-0.34705 l 0,-3.02878 c -3e-5,-0.26431 -0.23916,-0.50477 -0.502,-0.5048 l -3.01199,0 c -0.0519,-0.008 -0.105,-0.008 -0.15687,0 z"
+ id="path26117"
+ sodipodi:nodetypes="cccccccc"
+ inkscape:connector-curvature="0" />
+ </g>
+ <path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:url(#linearGradient43498) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono"
+ d="m -55.9999,-892.61507 0,0.75 0,40.50004 0,0.72723 0.74999,0 32.49943,0 0.74998,0 0,-0.72723 0,-25.50003 0,-0.3282 -0.23436,-0.2343 -14.90598,-15.00001 -0.18748,-0.1875 -0.32813,0 -17.59346,0 -0.74999,0 z"
+ id="path26119"
+ sodipodi:nodetypes="cccccccccccccccc"
+ inkscape:connector-curvature="0" />
+ <path
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/bedipp/DocumentFoundation/Writer_16.png"
+ sodipodi:nodetypes="cccccc"
+ inkscape:connector-curvature="0"
+ id="path26121"
+ d="m -54,-890.6378 16,0 14,14 0,24 -30,0 0,-38 z"
+ style="fill:url(#linearGradient43500) #000000;fill-opacity:1;stroke:none;display:inline" />
+ </g>
+ <g
+ id="g26205"
+ transform="translate(1.72768e-6,1.6925e-6)">
+ <g
+ transform="matrix(1.99993,0,0,1.99923,-281.992,-2699.62)"
+ id="g26207"
+ style="fill:#ffffff;fill-opacity:1;display:inline">
+ <path
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cccccccccccc"
+ id="path26209"
+ d="m 111.8125,976.3733 c -0.4584,0.0875 -0.82072,0.53346 -0.8125,1.00011 l 0,14.00148 c 5e-5,0.52364 0.47642,1.00006 1,1.00011 l 10.99999,0 c 0.52358,-5e-5 0.99995,-0.47647 1,-1.00011 l 0,-8.73078 c 0.006,-0.26409 -0.0975,-0.52903 -0.28125,-0.71883 l -5.27042,-5.2707 c -0.18978,-0.18372 -0.45469,-0.2874 -0.71875,-0.28128 l -5.72957,0 c -0.0623,-0.006 -0.12518,-0.006 -0.1875,0 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono" />
+ <path
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cccccccc"
+ id="path26211"
+ d="m 120.32938,976.3765 c -0.33282,0.10664 -0.44483,0.61349 -0.18825,0.85184 l 3.01199,3.02879 c 0.27825,0.26531 0.83246,0.0383 0.84712,-0.34705 l 0,-3.02878 c -3e-5,-0.26431 -0.23916,-0.50477 -0.502,-0.5048 l -3.01199,0 c -0.0519,-0.008 -0.105,-0.008 -0.15687,0 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono" />
+ </g>
+ <path
+ sodipodi:nodetypes="cccccccccccccccc"
+ id="path26213"
+ d="m -57.99994,-745.62261 0,0.5 0,27 0,0.5 0.49999,0 20.9996,0 0.49999,0 0,-0.5 0,-17 0,-0.2188 -0.15624,-0.1562 -9.93731,-10 -0.12499,-0.125 -0.21875,0 -11.0623,0 -0.49999,0 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono"
+ inkscape:connector-curvature="0" />
+ </g>
+ <use
+ x="0"
+ y="0"
+ xlink:href="#g26205"
+ id="use26263"
+ transform="translate(266,0)"
+ width="5033"
+ height="1085" />
+ <g
+ id="g6032"
+ transform="translate(1.72768e-6,1.6925e-6)">
+ <g
+ id="g26267"
+ style="fill:url(#linearGradient43506) #000000;fill-opacity:1;display:inline"
+ transform="matrix(0.999981,0,0,0.999625,-172.998,-1681.64)">
+ <path
+ sodipodi:nodetypes="cccccccccccc"
+ id="path26269"
+ d="m 111.8125,976.375 c -0.4584,0.0875 -0.82072,0.5334 -0.8125,1 l 0,14 c 5e-5,0.52358 0.47642,0.99995 1,1 l 12,0 c 0.52358,-5e-5 0.99995,-0.47642 1,-1 l 0,-8 c 0.006,-0.26406 -0.0975,-0.52897 -0.28125,-0.71875 l -6,-6 C 118.52897,976.47255 118.26406,976.36888 118,976.375 l -6,0 c -0.0623,-0.006 -0.12518,-0.006 -0.1875,0 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:url(#linearGradient43502) #000000;fill-opacity:1;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono"
+ inkscape:connector-curvature="0" />
+ <path
+ sodipodi:nodetypes="cccccccc"
+ id="path26271"
+ d="m 121.34375,976.375 c -0.3315,0.10563 -0.44306,0.60766 -0.1875,0.84375 l 3,3 c 0.27715,0.26279 0.82915,0.0379 0.84375,-0.34375 l 0,-3 c -3e-5,-0.26179 -0.23821,-0.49997 -0.5,-0.5 l -3,0 c -0.0517,-0.008 -0.10459,-0.008 -0.15625,0 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:url(#linearGradient43504) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono"
+ inkscape:connector-curvature="0" />
+ </g>
+ <path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:url(#linearGradient43508) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono"
+ d="m -60.99988,-704.63781 0,0.5 0,13 0,0.5 0.49999,0 10.99979,0 0.5,0 0,-0.5 0,-7.3125 0,-0.2188 -0.15625,-0.125 -5.6874,-5.7187 -0.15624,-0.125 -0.1875,0 -5.3124,0 -0.49999,0 z"
+ id="path26273"
+ sodipodi:nodetypes="cccccccccccccccc"
+ inkscape:connector-curvature="0" />
+ <path
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/bedipp/DocumentFoundation/Writer_16.png"
+ sodipodi:nodetypes="cccccc"
+ inkscape:connector-curvature="0"
+ id="path26275"
+ d="m -59.9997,-703.63781 4.79971,0 5.2001,5.2 0,6.8 -9.99981,0 0,-12 z"
+ style="fill:#ffffff;fill-opacity:0.86274498;stroke:none;display:inline" />
+ </g>
+ <g
+ id="g26331"
+ transform="translate(1.72768e-6,1.6925e-6)">
+ <g
+ transform="matrix(0.999981,0,0,0.999625,-172.998,-1660.64)"
+ style="fill:#ffffff;fill-opacity:1;display:inline"
+ id="g26277">
+ <path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono"
+ d="m 111.8125,976.375 c -0.4584,0.0875 -0.82072,0.5334 -0.8125,1 l 0,14 c 5e-5,0.52358 0.47642,0.99995 1,1 l 12,0 c 0.52358,-5e-5 0.99995,-0.47642 1,-1 l 0,-8 c 0.006,-0.26406 -0.0975,-0.52897 -0.28125,-0.71875 l -6,-6 C 118.52897,976.47255 118.26406,976.36888 118,976.375 l -6,0 c -0.0623,-0.006 -0.12518,-0.006 -0.1875,0 z"
+ id="path26279"
+ sodipodi:nodetypes="cccccccccccc"
+ inkscape:connector-curvature="0" />
+ <path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono"
+ d="m 121.34375,976.375 c -0.3315,0.10563 -0.44306,0.60766 -0.1875,0.84375 l 3,3 c 0.27715,0.26279 0.82915,0.0379 0.84375,-0.34375 l 0,-3 c -3e-5,-0.26179 -0.23821,-0.49997 -0.5,-0.5 l -3,0 c -0.0517,-0.008 -0.10459,-0.008 -0.15625,0 z"
+ id="path26281"
+ sodipodi:nodetypes="cccccccc"
+ inkscape:connector-curvature="0" />
+ </g>
+ <path
+ sodipodi:nodetypes="cccccccccccccccc"
+ id="path26283"
+ d="m -60.99988,-683.63781 0,0.5 0,13 0,0.5 0.49999,0 10.99979,0 0.5,0 0,-0.5 0,-7.3125 0,-0.2188 -0.15625,-0.125 -5.6874,-5.7187 -0.15624,-0.125 -0.1875,0 -5.3124,0 -0.49999,0 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono"
+ inkscape:connector-curvature="0" />
+ </g>
+ <use
+ x="0"
+ y="0"
+ xlink:href="#g26331"
+ id="use26337"
+ transform="translate(266,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#g26069-2"
+ id="use26385-1"
+ transform="translate(1837,0)"
+ width="5033"
+ height="1085" />
+ <g
+ transform="matrix(1.5,0,0,1,1394.5,-93)"
+ inkscape:tile-y0="916"
+ inkscape:tile-x0="388"
+ inkscape:tile-h="2"
+ inkscape:tile-w="7"
+ inkscape:tile-cy="917"
+ inkscape:tile-cx="391.5"
+ id="g26421-2">
+ <rect
+ inkscape:tile-y0="971.99998"
+ inkscape:tile-x0="381"
+ inkscape:tile-h="1"
+ inkscape:tile-w="1"
+ inkscape:tile-cy="972.49998"
+ inkscape:tile-cx="381.5"
+ y="-744.63782"
+ x="255"
+ height="2"
+ width="4"
+ id="rect26423-8"
+ style="color:#000000;fill:#cccccc;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ </g>
+ <use
+ x="0"
+ y="0"
+ inkscape:tiled-clone-of="#g26421-2"
+ xlink:href="#g26421-2"
+ transform="translate(0,4)"
+ id="use26439-5"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ inkscape:tiled-clone-of="#g26421-2"
+ xlink:href="#g26421-2"
+ transform="translate(0,8)"
+ id="use26441-8"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ inkscape:tiled-clone-of="#g26421-2"
+ xlink:href="#g26421-2"
+ transform="translate(0,12)"
+ id="use26443-6"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ inkscape:tiled-clone-of="#g26421-2"
+ xlink:href="#g26421-2"
+ transform="translate(0,16)"
+ id="use26445-1"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ inkscape:tiled-clone-of="#g26421-2"
+ xlink:href="#g26421-2"
+ transform="translate(0,20)"
+ id="use26447-8"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ inkscape:tiled-clone-of="#g26421-2"
+ xlink:href="#g26421-2"
+ transform="translate(0,24)"
+ id="use26449-1"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ inkscape:tiled-clone-of="#g26421-2"
+ xlink:href="#g26421-2"
+ transform="translate(0,28)"
+ id="use26451-0"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ inkscape:tiled-clone-of="#g26421-2"
+ xlink:href="#g26421-2"
+ transform="translate(0,32)"
+ id="use26453-8"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ inkscape:tiled-clone-of="#g26421-2"
+ xlink:href="#g26421-2"
+ transform="translate(0,36)"
+ id="use26455-5"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ inkscape:tiled-clone-of="#rect16212"
+ xlink:href="#rect16212"
+ transform="translate(0,2)"
+ id="use5084"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ inkscape:tiled-clone-of="#rect16212"
+ xlink:href="#rect16212"
+ transform="translate(0,4)"
+ id="use5086"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ inkscape:tiled-clone-of="#rect16212"
+ xlink:href="#rect16212"
+ transform="translate(0,6)"
+ id="use5088"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ inkscape:tiled-clone-of="#rect16212"
+ xlink:href="#rect16212"
+ transform="translate(0,8)"
+ id="use5090"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ inkscape:tiled-clone-of="#rect16212"
+ xlink:href="#rect16212"
+ transform="translate(0,10)"
+ id="use5092"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#g26331"
+ id="use6492"
+ transform="translate(527,0)"
+ width="5033"
+ height="1085" />
+ <g
+ id="use6496"
+ style="fill:url(#linearGradient6514-5) #000000;fill-opacity:1;display:inline"
+ transform="matrix(0.999981,0,0,0.999625,354.002,-1681.64)">
+ <path
+ sodipodi:nodetypes="cccccccccccc"
+ id="path6506"
+ d="m 111.8125,976.375 c -0.4584,0.0875 -0.82072,0.5334 -0.8125,1 l 0,14 c 5e-5,0.52358 0.47642,0.99995 1,1 l 12,0 c 0.52358,-5e-5 0.99995,-0.47642 1,-1 l 0,-8 c 0.006,-0.26406 -0.0975,-0.52897 -0.28125,-0.71875 l -6,-6 C 118.52897,976.47255 118.26406,976.36888 118,976.375 l -6,0 c -0.0623,-0.006 -0.12518,-0.006 -0.1875,0 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:url(#linearGradient6510-0) #000000;fill-opacity:1;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono"
+ inkscape:connector-curvature="0" />
+ <path
+ sodipodi:nodetypes="cccccccc"
+ id="path6508"
+ d="m 121.34375,976.375 c -0.3315,0.10563 -0.44306,0.60766 -0.1875,0.84375 l 3,3 c 0.27715,0.26279 0.82915,0.0379 0.84375,-0.34375 l 0,-3 c -3e-5,-0.26179 -0.23821,-0.49997 -0.5,-0.5 l -3,0 c -0.0517,-0.008 -0.10459,-0.008 -0.15625,0 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:url(#linearGradient6512-4) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono"
+ inkscape:connector-curvature="0" />
+ </g>
+ <path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:url(#linearGradient44115) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono"
+ d="m 466.00012,-704.63781 0,0.5 0,13 0,0.5 0.49999,0 10.99979,0 0.5,0 0,-0.5 0,-7.3125 0,-0.2188 -0.15625,-0.125 -5.6874,-5.7187 -0.15624,-0.125 -0.1875,0 -5.3124,0 -0.49999,0 z"
+ id="use6498"
+ sodipodi:nodetypes="cccccccccccccccc"
+ inkscape:connector-curvature="0" />
+ <path
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/bedipp/DocumentFoundation/Writer_16.png"
+ sodipodi:nodetypes="cccccc"
+ inkscape:connector-curvature="0"
+ id="use6500"
+ d="m 467.0003,-703.63781 4.79971,0 5.2001,5.2 0,6.8 -9.99981,0 0,-12 z"
+ style="fill:#ffffff;fill-opacity:0.58823494;stroke:none;display:inline" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#g26205"
+ id="use7289"
+ transform="translate(527,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#g26069-2"
+ id="use7550-6"
+ transform="translate(527,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#use26385-1"
+ id="use8310-3"
+ transform="translate(261,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#g26421-2"
+ id="use8312-2"
+ transform="translate(261,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#use26439-5"
+ id="use8314-7"
+ transform="translate(261,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#use26441-8"
+ id="use8316-2"
+ transform="translate(261,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#use26443-6"
+ id="use8318-1"
+ transform="translate(261,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#use26445-1"
+ id="use8320-7"
+ transform="translate(261,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#use26447-8"
+ id="use8322-7"
+ transform="translate(261,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#use26449-1"
+ id="use8324-7"
+ transform="translate(261,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#use26451-0"
+ id="use8326-9"
+ transform="translate(261,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#use26453-8"
+ id="use8328-4"
+ transform="translate(261,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#use26455-5"
+ id="use8330-3"
+ transform="translate(261,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#use26265"
+ id="use8398"
+ transform="translate(261,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#g25851"
+ id="use8400"
+ transform="translate(261,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#use25928"
+ id="use8402"
+ transform="translate(261,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#use25930"
+ id="use8404"
+ transform="translate(261,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#use25932"
+ id="use8406"
+ transform="translate(261,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#use25934"
+ id="use8408"
+ transform="translate(261,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#use25936"
+ id="use8410"
+ transform="translate(261,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#use25938"
+ id="use8412"
+ transform="translate(261,0)"
+ width="5033"
+ height="1085" />
+ <g
+ id="use8418"
+ style="fill:url(#linearGradient8464-7) #000000;fill-opacity:1;display:inline"
+ transform="matrix(0.999981,0,0,0.999625,1925,-1681.64)">
+ <path
+ sodipodi:nodetypes="cccccccccccc"
+ id="path8456"
+ d="m 111.8125,976.375 c -0.4584,0.0875 -0.82072,0.5334 -0.8125,1 l 0,14 c 5e-5,0.52358 0.47642,0.99995 1,1 l 12,0 c 0.52358,-5e-5 0.99995,-0.47642 1,-1 l 0,-8 c 0.006,-0.26406 -0.0975,-0.52897 -0.28125,-0.71875 l -6,-6 C 118.52897,976.47255 118.26406,976.36888 118,976.375 l -6,0 c -0.0623,-0.006 -0.12518,-0.006 -0.1875,0 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:url(#linearGradient8460-9) #000000;fill-opacity:1;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono"
+ inkscape:connector-curvature="0" />
+ <path
+ sodipodi:nodetypes="cccccccc"
+ id="path8458"
+ d="m 121.34375,976.375 c -0.3315,0.10563 -0.44306,0.60766 -0.1875,0.84375 l 3,3 c 0.27715,0.26279 0.82915,0.0379 0.84375,-0.34375 l 0,-3 c -3e-5,-0.26179 -0.23821,-0.49997 -0.5,-0.5 l -3,0 c -0.0517,-0.008 -0.10459,-0.008 -0.15625,0 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:url(#linearGradient8462-0) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono"
+ inkscape:connector-curvature="0" />
+ </g>
+ <path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:url(#linearGradient44087) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono"
+ d="m 2037.0001,-704.63781 0,0.5 0,13 0,0.5 0.5,0 10.9998,0 0.5,0 0,-0.5 0,-7.3125 0,-0.2188 -0.1562,-0.125 -5.6875,-5.7187 -0.1562,-0.125 -0.1875,0 -5.3124,0 -0.5,0 z"
+ id="use8420"
+ sodipodi:nodetypes="cccccccccccccccc"
+ inkscape:connector-curvature="0" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#path16154"
+ id="use8422"
+ transform="translate(261,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect16212"
+ id="use8424"
+ transform="translate(261,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#use5084"
+ id="use8426"
+ transform="translate(261,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#use5086"
+ id="use8428"
+ transform="translate(261,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#use5088"
+ id="use8430"
+ transform="translate(261,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#use5090"
+ id="use8432"
+ transform="translate(261,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#use5092"
+ id="use8434"
+ transform="translate(261,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#use26339"
+ id="use8438"
+ transform="translate(261,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect25331"
+ id="use8440"
+ transform="translate(261,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#use26004"
+ id="use8442"
+ transform="translate(261,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#use26006"
+ id="use8444"
+ transform="translate(261,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#use26008"
+ id="use8446"
+ transform="translate(261,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#use26010"
+ id="use8448"
+ transform="translate(261,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#use26012"
+ id="use8450"
+ transform="translate(261,0)"
+ width="5033"
+ height="1085" />
+ <g
+ transform="matrix(0.999981,0,0,0.999625,1137,-1681.64)"
+ style="fill:url(#linearGradient6343-9) #000000;fill-opacity:1;display:inline"
+ id="g6316">
+ <path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:url(#linearGradient43234) #000000;fill-opacity:1;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono"
+ d="m 111.8125,976.375 c -0.4584,0.0875 -0.82072,0.5334 -0.8125,1 l 0,14 c 5e-5,0.52358 0.47642,0.99995 1,1 l 12,0 c 0.52358,-5e-5 0.99995,-0.47642 1,-1 l 0,-8 c 0.006,-0.26406 -0.0975,-0.52897 -0.28125,-0.71875 l -6,-6 C 118.52897,976.47255 118.26406,976.36888 118,976.375 l -6,0 c -0.0623,-0.006 -0.12518,-0.006 -0.1875,0 z"
+ id="path6318"
+ sodipodi:nodetypes="cccccccccccc"
+ inkscape:connector-curvature="0" />
+ <path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:url(#linearGradient6341-6) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono"
+ d="m 121.34375,976.375 c -0.3315,0.10563 -0.44306,0.60766 -0.1875,0.84375 l 3,3 c 0.27715,0.26279 0.82915,0.0379 0.84375,-0.34375 l 0,-3 c -3e-5,-0.26179 -0.23821,-0.49997 -0.5,-0.5 l -3,0 c -0.0517,-0.008 -0.10459,-0.008 -0.15625,0 z"
+ id="path6320"
+ sodipodi:nodetypes="cccccccc"
+ inkscape:connector-curvature="0" />
+ </g>
+ <path
+ sodipodi:nodetypes="cccccccccccccccc"
+ id="path6322"
+ d="m 1249.0001,-704.63781 0,0.5 0,13 0,0.5 0.5,0 10.9998,0 0.5,0 0,-0.5 0,-7.3125 0,-0.2188 -0.1562,-0.125 -5.6875,-5.7187 -0.1562,-0.125 -0.1875,0 -5.3124,0 -0.5,0 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:url(#linearGradient44067) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:#ffffff;fill-opacity:0.58823494;stroke:none;display:inline"
+ d="m 1250.0003,-703.63781 4.7997,0 5.2001,5.2 0,6.8 -9.9998,0 0,-12 z"
+ id="path6324"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cccccc"
+ inkscape:export-filename="/home/bedipp/DocumentFoundation/Writer_16.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ <g
+ transform="matrix(2.9999,0,0,2.99884,-125.989,-3823.61)"
+ id="g13937"
+ style="fill:url(#linearGradient13979-4) #000000;fill-opacity:1;display:inline">
+ <path
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cccccccccccc"
+ id="path13939"
+ d="m 111.8125,976.3733 c -0.4584,0.0875 -0.82072,0.53346 -0.8125,1.00011 l 0,14.00148 c 5e-5,0.52364 0.47642,1.00006 1,1.00011 l 11.33333,0 c 0.52358,-5e-5 0.99995,-0.47647 1,-1.00011 l 0,-8.73078 c 0.006,-0.26409 -0.0975,-0.52903 -0.28125,-0.71883 l -5.27042,-5.2707 c -0.18978,-0.18372 -0.45469,-0.2874 -0.71875,-0.28128 l -6.06291,0 c -0.0623,-0.006 -0.12518,-0.006 -0.1875,0 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:url(#linearGradient13975-6) #000000;fill-opacity:1;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono" />
+ <path
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cccccccc"
+ id="path13941"
+ d="m 120.66272,976.3765 c -0.33282,0.10664 -0.44483,0.61349 -0.18825,0.85184 l 3.01199,3.02879 c 0.27825,0.26531 0.83246,0.0383 0.84712,-0.34705 l 0,-3.02878 c -3e-5,-0.26431 -0.23916,-0.50477 -0.502,-0.5048 l -3.01199,0 c -0.0519,-0.008 -0.105,-0.008 -0.15687,0 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:url(#linearGradient13977-0) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono" />
+ </g>
+ <path
+ sodipodi:nodetypes="cccccccccccccccc"
+ id="path13943"
+ d="m 210.0001,-892.61507 0,0.75 0,40.50004 0,0.72723 0.74999,0 32.49943,0 0.74998,0 0,-0.72723 0,-25.50003 0,-0.3282 -0.23436,-0.2343 -14.90598,-15.00001 -0.18748,-0.1875 -0.32813,0 -17.59346,0 -0.74999,0 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:url(#linearGradient44060) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:url(#linearGradient44057) #000000;fill-opacity:1;stroke:none;display:inline"
+ d="m 212,-890.6378 16,0 14,14 0,24 -30,0 0,-38 z"
+ id="path13945"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cccccc"
+ inkscape:export-filename="/home/bedipp/DocumentFoundation/Writer_16.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ <g
+ style="fill:url(#linearGradient14047-7) #000000;fill-opacity:1;display:inline"
+ id="g14005"
+ transform="matrix(2.9999,0,0,2.99884,135.011,-3823.61)">
+ <path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:url(#linearGradient14043-3) #000000;fill-opacity:1;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono"
+ d="m 111.8125,976.3733 c -0.4584,0.0875 -0.82072,0.53346 -0.8125,1.00011 l 0,14.00148 c 5e-5,0.52364 0.47642,1.00006 1,1.00011 l 11.33333,0 c 0.52358,-5e-5 0.99995,-0.47647 1,-1.00011 l 0,-8.73078 c 0.006,-0.26409 -0.0975,-0.52903 -0.28125,-0.71883 l -5.27042,-5.2707 c -0.18978,-0.18372 -0.45469,-0.2874 -0.71875,-0.28128 l -6.06291,0 c -0.0623,-0.006 -0.12518,-0.006 -0.1875,0 z"
+ id="path14007"
+ sodipodi:nodetypes="cccccccccccc"
+ inkscape:connector-curvature="0" />
+ <path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:url(#linearGradient14045-8) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono"
+ d="m 120.66272,976.3765 c -0.33282,0.10664 -0.44483,0.61349 -0.18825,0.85184 l 3.01199,3.02879 c 0.27825,0.26531 0.83246,0.0383 0.84712,-0.34705 l 0,-3.02878 c -3e-5,-0.26431 -0.23916,-0.50477 -0.502,-0.5048 l -3.01199,0 c -0.0519,-0.008 -0.105,-0.008 -0.15687,0 z"
+ id="path14009"
+ sodipodi:nodetypes="cccccccc"
+ inkscape:connector-curvature="0" />
+ </g>
+ <path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:url(#linearGradient44051) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono"
+ d="m 471.0001,-892.61507 0,0.75 0,40.50004 0,0.72723 0.74999,0 32.49943,0 0.74998,0 0,-0.72723 0,-25.50003 0,-0.3282 -0.23436,-0.2343 -14.90598,-15.00001 -0.18748,-0.1875 -0.32813,0 -17.59346,0 -0.74999,0 z"
+ id="path14011"
+ sodipodi:nodetypes="cccccccccccccccc"
+ inkscape:connector-curvature="0" />
+ <path
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/bedipp/DocumentFoundation/Writer_16.png"
+ sodipodi:nodetypes="cccccc"
+ inkscape:connector-curvature="0"
+ id="path14013"
+ d="m 473,-890.6378 16,0 14,14 0,24 -30,0 0,-38 z"
+ style="fill:url(#linearGradient44048) #000000;fill-opacity:1;stroke:none;display:inline" />
+ <g
+ transform="matrix(2.9999,0,0,2.99884,918.011,-3823.61)"
+ id="g14073"
+ style="fill:url(#linearGradient43236) #000000;fill-opacity:1;display:inline">
+ <path
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cccccccccccc"
+ id="path14075"
+ d="m 111.8125,976.3733 c -0.4584,0.0875 -0.82072,0.53346 -0.8125,1.00011 l 0,14.00148 c 5e-5,0.52364 0.47642,1.00006 1,1.00011 l 11.33333,0 c 0.52358,-5e-5 0.99995,-0.47647 1,-1.00011 l 0,-8.73078 c 0.006,-0.26409 -0.0975,-0.52903 -0.28125,-0.71883 l -5.27042,-5.2707 c -0.18978,-0.18372 -0.45469,-0.2874 -0.71875,-0.28128 l -6.06291,0 c -0.0623,-0.006 -0.12518,-0.006 -0.1875,0 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:url(#linearGradient14097-7) #000000;fill-opacity:1;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono" />
+ <path
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cccccccc"
+ id="path14077"
+ d="m 120.66272,976.3765 c -0.33282,0.10664 -0.44483,0.61349 -0.18825,0.85184 l 3.01199,3.02879 c 0.27825,0.26531 0.83246,0.0383 0.84712,-0.34705 l 0,-3.02878 c -3e-5,-0.26431 -0.23916,-0.50477 -0.502,-0.5048 l -3.01199,0 c -0.0519,-0.008 -0.105,-0.008 -0.15687,0 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:url(#linearGradient14099-2) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono" />
+ </g>
+ <path
+ sodipodi:nodetypes="cccccccccccccccc"
+ id="path14079"
+ d="m 1254.0001,-892.61507 0,0.75 0,40.50004 0,0.72723 0.75,0 32.4994,0 0.75,0 0,-0.72723 0,-25.50003 0,-0.3282 -0.2344,-0.2343 -14.9059,-15.00001 -0.1875,-0.1875 -0.3282,0 -17.5934,0 -0.75,0 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:url(#linearGradient44042) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:url(#linearGradient44039) #000000;fill-opacity:1;stroke:none;display:inline"
+ d="m 1256,-890.6378 16,0 14,14 0,24 -30,0 0,-38 z"
+ id="path14081"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cccccc"
+ inkscape:export-filename="/home/bedipp/DocumentFoundation/Writer_16.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ <g
+ transform="matrix(1.99993,0,0,1.99923,-15.9923,-2736.62)"
+ id="g14433"
+ style="fill:url(#linearGradient14449-4) #000000;fill-opacity:1;display:inline">
+ <path
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cccccccccccc"
+ id="path14435"
+ d="m 111.8125,976.3733 c -0.4584,0.0875 -0.82072,0.53346 -0.8125,1.00011 l 0,14.00148 c 5e-5,0.52364 0.47642,1.00006 1,1.00011 l 10.99999,0 c 0.52358,-5e-5 0.99995,-0.47647 1,-1.00011 l 0,-8.73078 c 0.006,-0.26409 -0.0975,-0.52903 -0.28125,-0.71883 l -5.27042,-5.2707 c -0.18978,-0.18372 -0.45469,-0.2874 -0.71875,-0.28128 l -5.72957,0 c -0.0623,-0.006 -0.12518,-0.006 -0.1875,0 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:url(#linearGradient14445-5) #000000;fill-opacity:1;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono" />
+ <path
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cccccccc"
+ id="path14437"
+ d="m 120.32938,976.3765 c -0.33282,0.10664 -0.44483,0.61349 -0.18825,0.85184 l 3.01199,3.02879 c 0.27825,0.26531 0.83246,0.0383 0.84712,-0.34705 l 0,-3.02878 c -3e-5,-0.26431 -0.23916,-0.50477 -0.502,-0.5048 l -3.01199,0 c -0.0519,-0.008 -0.105,-0.008 -0.15687,0 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:url(#linearGradient14447-7) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono" />
+ </g>
+ <path
+ sodipodi:nodetypes="cccccccccccccccc"
+ id="path14439"
+ d="m 208.00006,-782.62261 0,0.5 0,27 0,0.5 0.49999,0 20.9996,0 0.49999,0 0,-0.5 0,-17 0,-0.2188 -0.15624,-0.1562 -9.93731,-10 -0.12499,-0.125 -0.21875,0 -11.0623,0 -0.49999,0 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:url(#linearGradient44033) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:url(#linearGradient44030) #000000;fill-opacity:1;stroke:none;display:inline"
+ d="m 209.00004,-781.62261 10.05841,0 9.9409,10 0,16 -19.99931,0 0,-26 z"
+ id="path14441"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cccccc"
+ inkscape:export-filename="/home/bedipp/DocumentFoundation/Writer_16.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ <g
+ style="fill:url(#linearGradient43244) #000000;fill-opacity:1;display:inline"
+ id="g15014"
+ transform="matrix(1.99993,0,0,1.99923,1028.01,-2736.62)">
+ <path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:url(#linearGradient15046-9) #000000;fill-opacity:1;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono"
+ d="m 111.8125,976.3733 c -0.4584,0.0875 -0.82072,0.53346 -0.8125,1.00011 l 0,14.00148 c 5e-5,0.52364 0.47642,1.00006 1,1.00011 l 10.99999,0 c 0.52358,-5e-5 0.99995,-0.47647 1,-1.00011 l 0,-8.73078 c 0.006,-0.26409 -0.0975,-0.52903 -0.28125,-0.71883 l -5.27042,-5.2707 c -0.18978,-0.18372 -0.45469,-0.2874 -0.71875,-0.28128 l -5.72957,0 c -0.0623,-0.006 -0.12518,-0.006 -0.1875,0 z"
+ id="path15016"
+ sodipodi:nodetypes="cccccccccccc"
+ inkscape:connector-curvature="0" />
+ <path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:url(#linearGradient43242) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono"
+ d="m 120.32938,976.3765 c -0.33282,0.10664 -0.44483,0.61349 -0.18825,0.85184 l 3.01199,3.02879 c 0.27825,0.26531 0.83246,0.0383 0.84712,-0.34705 l 0,-3.02878 c -3e-5,-0.26431 -0.23916,-0.50477 -0.502,-0.5048 l -3.01199,0 c -0.0519,-0.008 -0.105,-0.008 -0.15687,0 z"
+ id="path15018"
+ sodipodi:nodetypes="cccccccc"
+ inkscape:connector-curvature="0" />
+ </g>
+ <path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:url(#linearGradient44024) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono"
+ d="m 1252.0001,-782.62261 0,0.5 0,27 0,0.5 0.4999,0 20.9996,0 0.5,0 0,-0.5 0,-17 0,-0.2188 -0.1562,-0.1562 -9.9373,-10 -0.125,-0.125 -0.2188,0 -11.0623,0 -0.4999,0 z"
+ id="path15020"
+ sodipodi:nodetypes="cccccccccccccccc"
+ inkscape:connector-curvature="0" />
+ <path
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/bedipp/DocumentFoundation/Writer_16.png"
+ sodipodi:nodetypes="cccccc"
+ inkscape:connector-curvature="0"
+ id="path15022"
+ d="m 1253,-781.62261 10.0584,0 9.941,10 0,16 -19.9994,0 0,-26 z"
+ style="fill:url(#linearGradient44021) #000000;fill-opacity:1;stroke:none;display:inline" />
+ <g
+ transform="matrix(1.99993,0,0,1.99923,245.008,-2736.62)"
+ id="g15073"
+ style="fill:url(#linearGradient15110-3) #000000;fill-opacity:1;display:inline">
+ <path
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cccccccccccc"
+ id="path15075"
+ d="m 111.8125,976.3733 c -0.4584,0.0875 -0.82072,0.53346 -0.8125,1.00011 l 0,14.00148 c 5e-5,0.52364 0.47642,1.00006 1,1.00011 l 10.99999,0 c 0.52358,-5e-5 0.99995,-0.47647 1,-1.00011 l 0,-8.73078 c 0.006,-0.26409 -0.0975,-0.52903 -0.28125,-0.71883 l -5.27042,-5.2707 c -0.18978,-0.18372 -0.45469,-0.2874 -0.71875,-0.28128 l -5.72957,0 c -0.0623,-0.006 -0.12518,-0.006 -0.1875,0 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:url(#linearGradient15105-2) #000000;fill-opacity:1;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono" />
+ <path
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cccccccc"
+ id="path15077"
+ d="m 120.32938,976.3765 c -0.33282,0.10664 -0.44483,0.61349 -0.18825,0.85184 l 3.01199,3.02879 c 0.27825,0.26531 0.83246,0.0383 0.84712,-0.34705 l 0,-3.02878 c -3e-5,-0.26431 -0.23916,-0.50477 -0.502,-0.5048 l -3.01199,0 c -0.0519,-0.008 -0.105,-0.008 -0.15687,0 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:url(#linearGradient15108-4) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono" />
+ </g>
+ <path
+ sodipodi:nodetypes="cccccccccccccccc"
+ id="path15079"
+ d="m 469.00006,-782.62261 0,0.5 0,27 0,0.5 0.49999,0 20.9996,0 0.49999,0 0,-0.5 0,-17 0,-0.2188 -0.15624,-0.1562 -9.93731,-10 -0.12499,-0.125 -0.21875,0 -11.0623,0 -0.49999,0 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:url(#linearGradient44015) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:url(#linearGradient44012) #000000;fill-opacity:1;stroke:none;display:inline"
+ d="m 470.00004,-781.62261 10.05841,0 9.9409,10 0,16 -19.99931,0 0,-26 z"
+ id="path15081"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cccccc"
+ inkscape:export-filename="/home/bedipp/DocumentFoundation/Writer_16.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ <g
+ style="fill:url(#linearGradient15478-2) #000000;fill-opacity:1;display:inline"
+ id="g15406"
+ transform="matrix(2.9999,0,0,2.99884,1706.01,-3823.61)">
+ <path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:url(#linearGradient15474-1) #000000;fill-opacity:1;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono"
+ d="m 111.8125,976.3733 c -0.4584,0.0875 -0.82072,0.53346 -0.8125,1.00011 l 0,14.00148 c 5e-5,0.52364 0.47642,1.00006 1,1.00011 l 11.33333,0 c 0.52358,-5e-5 0.99995,-0.47647 1,-1.00011 l 0,-8.73078 c 0.006,-0.26409 -0.0975,-0.52903 -0.28125,-0.71883 l -5.27042,-5.2707 c -0.18978,-0.18372 -0.45469,-0.2874 -0.71875,-0.28128 l -6.06291,0 c -0.0623,-0.006 -0.12518,-0.006 -0.1875,0 z"
+ id="path15408"
+ sodipodi:nodetypes="cccccccccccc"
+ inkscape:connector-curvature="0" />
+ <path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:url(#linearGradient43248) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono"
+ d="m 120.66272,976.3765 c -0.33282,0.10664 -0.44483,0.61349 -0.18825,0.85184 l 3.01199,3.02879 c 0.27825,0.26531 0.83246,0.0383 0.84712,-0.34705 l 0,-3.02878 c -3e-5,-0.26431 -0.23916,-0.50477 -0.502,-0.5048 l -3.01199,0 c -0.0519,-0.008 -0.105,-0.008 -0.15687,0 z"
+ id="path15410"
+ sodipodi:nodetypes="cccccccc"
+ inkscape:connector-curvature="0" />
+ </g>
+ <path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:url(#linearGradient44006) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono"
+ d="m 2042.0001,-892.61507 0,0.75 0,40.50004 0,0.72723 0.75,0 32.4994,0 0.75,0 0,-0.72723 0,-25.50003 0,-0.3282 -0.2344,-0.2343 -14.9059,-15.00001 -0.1875,-0.1875 -0.3282,0 -17.5934,0 -0.75,0 z"
+ id="path15412"
+ sodipodi:nodetypes="cccccccccccccccc"
+ inkscape:connector-curvature="0" />
+ <path
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/bedipp/DocumentFoundation/Writer_16.png"
+ sodipodi:nodetypes="cccccc"
+ inkscape:connector-curvature="0"
+ id="path15414"
+ d="m 2044,-890.6378 16,0 14,14 0,24 -30,0 0,-38 z"
+ style="fill:url(#linearGradient44003) #000000;fill-opacity:1;stroke:none;display:inline" />
+ <g
+ id="g15745"
+ style="fill:#43c330"
+ transform="translate(51,1.6925e-6)">
+ <rect
+ inkscape:tile-y0="971.99998"
+ inkscape:tile-x0="381"
+ inkscape:tile-h="1"
+ inkscape:tile-w="1"
+ inkscape:tile-cy="972.49998"
+ inkscape:tile-cx="381.5"
+ y="-889.63782"
+ x="1992"
+ height="1"
+ width="1"
+ id="rect15418"
+ style="color:#000000;fill:#43c330;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ inkscape:tile-y0="971.99998"
+ inkscape:tile-x0="381"
+ inkscape:tile-h="1"
+ inkscape:tile-w="1"
+ inkscape:tile-cy="972.49998"
+ inkscape:tile-cx="381.5"
+ y="-886.63782"
+ x="1992"
+ height="1"
+ width="1"
+ id="rect15715"
+ style="color:#000000;fill:#43c330;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ inkscape:tile-y0="971.99998"
+ inkscape:tile-x0="381"
+ inkscape:tile-h="1"
+ inkscape:tile-w="1"
+ inkscape:tile-cy="972.49998"
+ inkscape:tile-cx="381.5"
+ y="-883.63782"
+ x="1992"
+ height="1"
+ width="1"
+ id="rect15709"
+ style="color:#000000;fill:#43c330;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ inkscape:tile-y0="971.99998"
+ inkscape:tile-x0="381"
+ inkscape:tile-h="1"
+ inkscape:tile-w="1"
+ inkscape:tile-cy="972.49998"
+ inkscape:tile-cx="381.5"
+ y="-880.63782"
+ x="1992"
+ height="1"
+ width="1"
+ id="rect15703"
+ style="color:#000000;fill:#43c330;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ inkscape:tile-y0="971.99998"
+ inkscape:tile-x0="381"
+ inkscape:tile-h="1"
+ inkscape:tile-w="1"
+ inkscape:tile-cy="972.49998"
+ inkscape:tile-cx="381.5"
+ y="-877.63782"
+ x="1992"
+ height="1"
+ width="1"
+ id="rect15697"
+ style="color:#000000;fill:#43c330;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ inkscape:tile-y0="971.99998"
+ inkscape:tile-x0="381"
+ inkscape:tile-h="1"
+ inkscape:tile-w="1"
+ inkscape:tile-cy="972.49998"
+ inkscape:tile-cx="381.5"
+ y="-874.63782"
+ x="1992"
+ height="1"
+ width="1"
+ id="rect15691"
+ style="color:#000000;fill:#43c330;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ inkscape:tile-y0="971.99998"
+ inkscape:tile-x0="381"
+ inkscape:tile-h="1"
+ inkscape:tile-w="1"
+ inkscape:tile-cy="972.49998"
+ inkscape:tile-cx="381.5"
+ y="-871.63782"
+ x="1992"
+ height="1"
+ width="1"
+ id="rect15685"
+ style="color:#000000;fill:#43c330;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ inkscape:tile-y0="971.99998"
+ inkscape:tile-x0="381"
+ inkscape:tile-h="1"
+ inkscape:tile-w="1"
+ inkscape:tile-cy="972.49998"
+ inkscape:tile-cx="381.5"
+ y="-868.63782"
+ x="1992"
+ height="1"
+ width="1"
+ id="rect15679"
+ style="color:#000000;fill:#43c330;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ inkscape:tile-y0="971.99998"
+ inkscape:tile-x0="381"
+ inkscape:tile-h="1"
+ inkscape:tile-w="1"
+ inkscape:tile-cy="972.49998"
+ inkscape:tile-cx="381.5"
+ y="-865.63782"
+ x="1992"
+ height="1"
+ width="1"
+ id="rect15673"
+ style="color:#000000;fill:#43c330;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ inkscape:tile-y0="971.99998"
+ inkscape:tile-x0="381"
+ inkscape:tile-h="1"
+ inkscape:tile-w="1"
+ inkscape:tile-cy="972.49998"
+ inkscape:tile-cx="381.5"
+ y="-862.63782"
+ x="1992"
+ height="1"
+ width="1"
+ id="rect15667"
+ style="color:#000000;fill:#43c330;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ inkscape:tile-y0="971.99998"
+ inkscape:tile-x0="381"
+ inkscape:tile-h="1"
+ inkscape:tile-w="1"
+ inkscape:tile-cy="972.49998"
+ inkscape:tile-cx="381.5"
+ y="-859.63782"
+ x="1992"
+ height="1"
+ width="1"
+ id="rect15661"
+ style="color:#000000;fill:#43c330;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ inkscape:tile-y0="971.99998"
+ inkscape:tile-x0="381"
+ inkscape:tile-h="1"
+ inkscape:tile-w="1"
+ inkscape:tile-cy="972.49998"
+ inkscape:tile-cx="381.5"
+ y="-856.63782"
+ x="1992"
+ height="1"
+ width="1"
+ id="rect15655"
+ style="color:#000000;fill:#43c330;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ inkscape:tile-y0="971.99998"
+ inkscape:tile-x0="381"
+ inkscape:tile-h="1"
+ inkscape:tile-w="1"
+ inkscape:tile-cy="972.49998"
+ inkscape:tile-cx="381.5"
+ y="-853.63782"
+ x="1992"
+ height="1"
+ width="1"
+ id="rect15649"
+ style="color:#000000;fill:#43c330;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ </g>
+ <g
+ id="g15760"
+ transform="translate(51,1.6925e-6)">
+ <rect
+ style="color:#000000;fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect15420"
+ width="4"
+ height="1"
+ x="1987"
+ y="-889.63782"
+ inkscape:tile-cx="381.5"
+ inkscape:tile-cy="972.49998"
+ inkscape:tile-w="1"
+ inkscape:tile-h="1"
+ inkscape:tile-x0="381"
+ inkscape:tile-y0="971.99998" />
+ <rect
+ style="color:#000000;fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect15717"
+ width="4"
+ height="1"
+ x="1987"
+ y="-886.63782"
+ inkscape:tile-cx="381.5"
+ inkscape:tile-cy="972.49998"
+ inkscape:tile-w="1"
+ inkscape:tile-h="1"
+ inkscape:tile-x0="381"
+ inkscape:tile-y0="971.99998" />
+ <rect
+ style="color:#000000;fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect15711"
+ width="4"
+ height="1"
+ x="1987"
+ y="-883.63782"
+ inkscape:tile-cx="381.5"
+ inkscape:tile-cy="972.49998"
+ inkscape:tile-w="1"
+ inkscape:tile-h="1"
+ inkscape:tile-x0="381"
+ inkscape:tile-y0="971.99998" />
+ <rect
+ style="color:#000000;fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect15705"
+ width="4"
+ height="1"
+ x="1987"
+ y="-880.63782"
+ inkscape:tile-cx="381.5"
+ inkscape:tile-cy="972.49998"
+ inkscape:tile-w="1"
+ inkscape:tile-h="1"
+ inkscape:tile-x0="381"
+ inkscape:tile-y0="971.99998" />
+ <rect
+ style="color:#000000;fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect15699"
+ width="4"
+ height="1"
+ x="1987"
+ y="-877.63782"
+ inkscape:tile-cx="381.5"
+ inkscape:tile-cy="972.49998"
+ inkscape:tile-w="1"
+ inkscape:tile-h="1"
+ inkscape:tile-x0="381"
+ inkscape:tile-y0="971.99998" />
+ <rect
+ style="color:#000000;fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect15693"
+ width="4"
+ height="1"
+ x="1987"
+ y="-874.63782"
+ inkscape:tile-cx="381.5"
+ inkscape:tile-cy="972.49998"
+ inkscape:tile-w="1"
+ inkscape:tile-h="1"
+ inkscape:tile-x0="381"
+ inkscape:tile-y0="971.99998" />
+ <rect
+ style="color:#000000;fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect15687"
+ width="4"
+ height="1"
+ x="1987"
+ y="-871.63782"
+ inkscape:tile-cx="381.5"
+ inkscape:tile-cy="972.49998"
+ inkscape:tile-w="1"
+ inkscape:tile-h="1"
+ inkscape:tile-x0="381"
+ inkscape:tile-y0="971.99998" />
+ <rect
+ style="color:#000000;fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect15681"
+ width="4"
+ height="1"
+ x="1987"
+ y="-868.63782"
+ inkscape:tile-cx="381.5"
+ inkscape:tile-cy="972.49998"
+ inkscape:tile-w="1"
+ inkscape:tile-h="1"
+ inkscape:tile-x0="381"
+ inkscape:tile-y0="971.99998" />
+ <rect
+ style="color:#000000;fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect15675"
+ width="4"
+ height="1"
+ x="1987"
+ y="-865.63782"
+ inkscape:tile-cx="381.5"
+ inkscape:tile-cy="972.49998"
+ inkscape:tile-w="1"
+ inkscape:tile-h="1"
+ inkscape:tile-x0="381"
+ inkscape:tile-y0="971.99998" />
+ <rect
+ style="color:#000000;fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect15669"
+ width="4"
+ height="1"
+ x="1987"
+ y="-862.63782"
+ inkscape:tile-cx="381.5"
+ inkscape:tile-cy="972.49998"
+ inkscape:tile-w="1"
+ inkscape:tile-h="1"
+ inkscape:tile-x0="381"
+ inkscape:tile-y0="971.99998" />
+ <rect
+ style="color:#000000;fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect15663"
+ width="4"
+ height="1"
+ x="1987"
+ y="-859.63782"
+ inkscape:tile-cx="381.5"
+ inkscape:tile-cy="972.49998"
+ inkscape:tile-w="1"
+ inkscape:tile-h="1"
+ inkscape:tile-x0="381"
+ inkscape:tile-y0="971.99998" />
+ <rect
+ style="color:#000000;fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect15657"
+ width="4"
+ height="1"
+ x="1987"
+ y="-856.63782"
+ inkscape:tile-cx="381.5"
+ inkscape:tile-cy="972.49998"
+ inkscape:tile-w="1"
+ inkscape:tile-h="1"
+ inkscape:tile-x0="381"
+ inkscape:tile-y0="971.99998" />
+ <rect
+ style="color:#000000;fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect15651"
+ width="4"
+ height="1"
+ x="1987"
+ y="-853.63782"
+ inkscape:tile-cx="381.5"
+ inkscape:tile-cy="972.49998"
+ inkscape:tile-w="1"
+ inkscape:tile-h="1"
+ inkscape:tile-x0="381"
+ inkscape:tile-y0="971.99998" />
+ </g>
+ <g
+ style="fill:url(#linearGradient16012-5) #000000;fill-opacity:1;display:inline"
+ id="g15940"
+ transform="matrix(1.99993,0,0,1.99923,1816.01,-2736.62)">
+ <path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:url(#linearGradient16008-9) #000000;fill-opacity:1;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono"
+ d="m 111.8125,976.3733 c -0.4584,0.0875 -0.82072,0.53346 -0.8125,1.00011 l 0,14.00148 c 5e-5,0.52364 0.47642,1.00006 1,1.00011 l 10.99999,0 c 0.52358,-5e-5 0.99995,-0.47647 1,-1.00011 l 0,-8.73078 c 0.006,-0.26409 -0.0975,-0.52903 -0.28125,-0.71883 l -5.27042,-5.2707 c -0.18978,-0.18372 -0.45469,-0.2874 -0.71875,-0.28128 l -5.72957,0 c -0.0623,-0.006 -0.12518,-0.006 -0.1875,0 z"
+ id="path15942"
+ sodipodi:nodetypes="cccccccccccc"
+ inkscape:connector-curvature="0" />
+ <path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:url(#linearGradient16010-6) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono"
+ d="m 120.32938,976.3765 c -0.33282,0.10664 -0.44483,0.61349 -0.18825,0.85184 l 3.01199,3.02879 c 0.27825,0.26531 0.83246,0.0383 0.84712,-0.34705 l 0,-3.02878 c -3e-5,-0.26431 -0.23916,-0.50477 -0.502,-0.5048 l -3.01199,0 c -0.0519,-0.008 -0.105,-0.008 -0.15687,0 z"
+ id="path15944"
+ sodipodi:nodetypes="cccccccc"
+ inkscape:connector-curvature="0" />
+ </g>
+ <path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:url(#linearGradient43969) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono"
+ d="m 2040.0001,-782.62261 0,0.5 0,27 0,0.5 0.5,0 20.9995,0 0.5,0 0,-0.5 0,-17 0,-0.2188 -0.1562,-0.1562 -9.9373,-10 -0.125,-0.125 -0.2188,0 -11.0622,0 -0.5,0 z"
+ id="path15946"
+ sodipodi:nodetypes="cccccccccccccccc"
+ inkscape:connector-curvature="0" />
+ <path
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/bedipp/DocumentFoundation/Writer_16.png"
+ sodipodi:nodetypes="cccccc"
+ inkscape:connector-curvature="0"
+ id="path15948"
+ d="m 2042,-781.62261 9.0584,0 9.941,10 0,16 -18.9994,0 0,-26 z"
+ style="fill:url(#linearGradient43966) #000000;fill-opacity:1;stroke:none;display:inline" />
+ <rect
+ inkscape:tile-y0="971.99998"
+ inkscape:tile-x0="381"
+ inkscape:tile-h="1"
+ inkscape:tile-w="1"
+ inkscape:tile-cy="972.49998"
+ inkscape:tile-cx="381.5"
+ y="-780.63782"
+ x="2041"
+ height="1"
+ width="1"
+ id="rect15950"
+ style="color:#000000;fill:#43c330;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ style="color:#000000;fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect15952"
+ width="3"
+ height="1"
+ x="2037"
+ y="-780.63782"
+ inkscape:tile-cx="381.5"
+ inkscape:tile-cy="972.49998"
+ inkscape:tile-w="1"
+ inkscape:tile-h="1"
+ inkscape:tile-x0="381"
+ inkscape:tile-y0="971.99998" />
+ <use
+ height="1085"
+ width="5033"
+ id="use15954"
+ transform="translate(261,2)"
+ xlink:href="#rect16795"
+ inkscape:tiled-clone-of="#rect16795"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ id="use15956"
+ transform="translate(261,4)"
+ xlink:href="#rect16795"
+ inkscape:tiled-clone-of="#rect16795"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ id="use15958"
+ transform="translate(261,6)"
+ xlink:href="#rect16795"
+ inkscape:tiled-clone-of="#rect16795"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ id="use15960"
+ transform="translate(261,8)"
+ xlink:href="#rect16795"
+ inkscape:tiled-clone-of="#rect16795"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ id="use15962"
+ transform="translate(261,10)"
+ xlink:href="#rect16795"
+ inkscape:tiled-clone-of="#rect16795"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ id="use15964"
+ transform="translate(261,12)"
+ xlink:href="#rect16795"
+ inkscape:tiled-clone-of="#rect16795"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ id="use15966"
+ transform="translate(261,14)"
+ xlink:href="#rect16795"
+ inkscape:tiled-clone-of="#rect16795"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ id="use15968"
+ transform="translate(261,16)"
+ xlink:href="#rect16795"
+ inkscape:tiled-clone-of="#rect16795"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ id="use15970"
+ transform="translate(261,18)"
+ xlink:href="#rect16795"
+ inkscape:tiled-clone-of="#rect16795"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ id="use15972"
+ transform="translate(261,20)"
+ xlink:href="#rect16795"
+ inkscape:tiled-clone-of="#rect16795"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ id="use15974"
+ transform="translate(261,22)"
+ xlink:href="#rect16795"
+ inkscape:tiled-clone-of="#rect16795"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ id="use15976"
+ transform="translate(261,24)"
+ xlink:href="#rect16795"
+ inkscape:tiled-clone-of="#rect16795"
+ y="0"
+ x="0" />
+ <rect
+ inkscape:tile-y0="971.99998"
+ inkscape:tile-x0="381"
+ y="-778.63782"
+ x="2041"
+ height="1"
+ width="1"
+ id="use15978"
+ style="color:#000000;fill:#43c330;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ inkscape:tile-y0="971.99998"
+ inkscape:tile-x0="381"
+ y="-776.63782"
+ x="2041"
+ height="1"
+ width="1"
+ id="use15980"
+ style="color:#000000;fill:#43c330;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ inkscape:tile-y0="971.99998"
+ inkscape:tile-x0="381"
+ y="-774.63782"
+ x="2041"
+ height="1"
+ width="1"
+ id="use15982"
+ style="color:#000000;fill:#43c330;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ inkscape:tile-y0="971.99998"
+ inkscape:tile-x0="381"
+ y="-772.63782"
+ x="2041"
+ height="1"
+ width="1"
+ id="use15984"
+ style="color:#000000;fill:#43c330;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ inkscape:tile-y0="971.99998"
+ inkscape:tile-x0="381"
+ y="-770.63782"
+ x="2041"
+ height="1"
+ width="1"
+ id="use15986"
+ style="color:#000000;fill:#43c330;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ inkscape:tile-y0="971.99998"
+ inkscape:tile-x0="381"
+ y="-768.63782"
+ x="2041"
+ height="1"
+ width="1"
+ id="use15988"
+ style="color:#000000;fill:#43c330;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ inkscape:tile-y0="971.99998"
+ inkscape:tile-x0="381"
+ y="-766.63782"
+ x="2041"
+ height="1"
+ width="1"
+ id="use15990"
+ style="color:#000000;fill:#43c330;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ inkscape:tile-y0="971.99998"
+ inkscape:tile-x0="381"
+ y="-764.63782"
+ x="2041"
+ height="1"
+ width="1"
+ id="use15992"
+ style="color:#000000;fill:#43c330;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ inkscape:tile-y0="971.99998"
+ inkscape:tile-x0="381"
+ y="-762.63782"
+ x="2041"
+ height="1"
+ width="1"
+ id="use15994"
+ style="color:#000000;fill:#43c330;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ inkscape:tile-y0="971.99998"
+ inkscape:tile-x0="381"
+ y="-760.63782"
+ x="2041"
+ height="1"
+ width="1"
+ id="use15996"
+ style="color:#000000;fill:#43c330;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ inkscape:tile-y0="971.99998"
+ inkscape:tile-x0="381"
+ y="-758.63782"
+ x="2041"
+ height="1"
+ width="1"
+ id="use15998"
+ style="color:#000000;fill:#43c330;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ inkscape:tile-y0="971.99998"
+ inkscape:tile-x0="381"
+ y="-756.63782"
+ x="2041"
+ height="1"
+ width="1"
+ id="use16000"
+ style="color:#000000;fill:#43c330;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#g26069-2"
+ id="use16205-9"
+ transform="translate(1310,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#g26205"
+ id="use16209"
+ transform="translate(1310,0)"
+ width="5033"
+ height="1085" />
+ <g
+ transform="matrix(0.999981,0,0,0.999625,615.002,-1681.64)"
+ style="fill:url(#linearGradient4767-7) #000000;fill-opacity:1;display:inline"
+ id="g4743">
+ <path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:url(#linearGradient4763-5) #000000;fill-opacity:1;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono"
+ d="m 111.8125,976.375 c -0.4584,0.0875 -0.82072,0.5334 -0.8125,1 l 0,14 c 5e-5,0.52358 0.47642,0.99995 1,1 l 12,0 c 0.52358,-5e-5 0.99995,-0.47642 1,-1 l 0,-8 c 0.006,-0.26406 -0.0975,-0.52897 -0.28125,-0.71875 l -6,-6 C 118.52897,976.47255 118.26406,976.36888 118,976.375 l -6,0 c -0.0623,-0.006 -0.12518,-0.006 -0.1875,0 z"
+ id="path4745"
+ sodipodi:nodetypes="cccccccccccc"
+ inkscape:connector-curvature="0" />
+ <path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:url(#linearGradient4765-3) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono"
+ d="m 121.34375,976.375 c -0.3315,0.10563 -0.44306,0.60766 -0.1875,0.84375 l 3,3 c 0.27715,0.26279 0.82915,0.0379 0.84375,-0.34375 l 0,-3 c -3e-5,-0.26179 -0.23821,-0.49997 -0.5,-0.5 l -3,0 c -0.0517,-0.008 -0.10459,-0.008 -0.15625,0 z"
+ id="path4747"
+ sodipodi:nodetypes="cccccccc"
+ inkscape:connector-curvature="0" />
+ </g>
+ <path
+ sodipodi:nodetypes="cccccccccccccccc"
+ id="path4749"
+ d="m 727.00012,-704.63781 0,0.5 0,13 0,0.5 0.49999,0 10.99979,0 0.5,0 0,-0.5 0,-7.3125 0,-0.2188 -0.15625,-0.125 -5.6874,-5.7187 -0.15624,-0.125 -0.1875,0 -5.3124,0 -0.49999,0 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:url(#linearGradient43932) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:#ffffff;fill-opacity:0.58823494;stroke:none;display:inline"
+ d="m 728.0003,-703.63781 4.79971,0 5.2001,5.2 0,6.8 -9.99981,0 0,-12 z"
+ id="path4751"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cccccc"
+ inkscape:export-filename="/home/bedipp/DocumentFoundation/Writer_16.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ <g
+ transform="matrix(2.9999,0,0,2.99884,396.011,-3823.61)"
+ id="g7055"
+ style="fill:url(#linearGradient7105-9) #000000;fill-opacity:1;display:inline">
+ <path
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cccccccccccc"
+ id="path7057"
+ d="m 111.8125,976.3733 c -0.4584,0.0875 -0.82072,0.53346 -0.8125,1.00011 l 0,14.00148 c 5e-5,0.52364 0.47642,1.00006 1,1.00011 l 11.33333,0 c 0.52358,-5e-5 0.99995,-0.47647 1,-1.00011 l 0,-8.73078 c 0.006,-0.26409 -0.0975,-0.52903 -0.28125,-0.71883 l -5.27042,-5.2707 c -0.18978,-0.18372 -0.45469,-0.2874 -0.71875,-0.28128 l -6.06291,0 c -0.0623,-0.006 -0.12518,-0.006 -0.1875,0 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:url(#linearGradient7101-1) #000000;fill-opacity:1;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono" />
+ <path
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cccccccc"
+ id="path7059"
+ d="m 120.66272,976.3765 c -0.33282,0.10664 -0.44483,0.61349 -0.18825,0.85184 l 3.01199,3.02879 c 0.27825,0.26531 0.83246,0.0383 0.84712,-0.34705 l 0,-3.02878 c -3e-5,-0.26431 -0.23916,-0.50477 -0.502,-0.5048 l -3.01199,0 c -0.0519,-0.008 -0.105,-0.008 -0.15687,0 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:url(#linearGradient7103-2) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono" />
+ </g>
+ <path
+ sodipodi:nodetypes="cccccccccccccccc"
+ id="path7061"
+ d="m 732.0001,-892.61507 0,0.75 0,40.50004 0,0.72723 0.74999,0 32.49943,0 0.74998,0 0,-0.72723 0,-25.50003 0,-0.3282 -0.23436,-0.2343 -14.90598,-15.00001 -0.18748,-0.1875 -0.32813,0 -17.59346,0 -0.74999,0 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:url(#linearGradient43925) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:url(#linearGradient43922) #000000;fill-opacity:1;stroke:none;display:inline"
+ d="m 734,-890.6378 16,0 14,14 0,24 -30,0 0,-38 z"
+ id="path7063"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cccccc"
+ inkscape:export-filename="/home/bedipp/DocumentFoundation/Writer_16.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ <g
+ style="fill:url(#linearGradient7470-3) #000000;fill-opacity:1;display:inline"
+ id="g7432"
+ transform="matrix(1.99993,0,0,1.99923,506.008,-2736.62)">
+ <path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:url(#linearGradient7466-8) #000000;fill-opacity:1;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono"
+ d="m 111.8125,976.3733 c -0.4584,0.0875 -0.82072,0.53346 -0.8125,1.00011 l 0,14.00148 c 5e-5,0.52364 0.47642,1.00006 1,1.00011 l 10.99999,0 c 0.52358,-5e-5 0.99995,-0.47647 1,-1.00011 l 0,-8.73078 c 0.006,-0.26409 -0.0975,-0.52903 -0.28125,-0.71883 l -5.27042,-5.2707 c -0.18978,-0.18372 -0.45469,-0.2874 -0.71875,-0.28128 l -5.72957,0 c -0.0623,-0.006 -0.12518,-0.006 -0.1875,0 z"
+ id="path7434"
+ sodipodi:nodetypes="cccccccccccc"
+ inkscape:connector-curvature="0" />
+ <path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:url(#linearGradient7468-5) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono"
+ d="m 120.32938,976.3765 c -0.33282,0.10664 -0.44483,0.61349 -0.18825,0.85184 l 3.01199,3.02879 c 0.27825,0.26531 0.83246,0.0383 0.84712,-0.34705 l 0,-3.02878 c -3e-5,-0.26431 -0.23916,-0.50477 -0.502,-0.5048 l -3.01199,0 c -0.0519,-0.008 -0.105,-0.008 -0.15687,0 z"
+ id="path7436"
+ sodipodi:nodetypes="cccccccc"
+ inkscape:connector-curvature="0" />
+ </g>
+ <path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:url(#linearGradient43916) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono"
+ d="m 730.00006,-782.62261 0,0.5 0,27 0,0.5 0.49999,0 20.9996,0 0.49999,0 0,-0.5 0,-17 0,-0.2188 -0.15624,-0.1562 -9.93731,-10 -0.12499,-0.125 -0.21875,0 -11.0623,0 -0.49999,0 z"
+ id="path7438"
+ sodipodi:nodetypes="cccccccccccccccc"
+ inkscape:connector-curvature="0" />
+ <path
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/bedipp/DocumentFoundation/Writer_16.png"
+ sodipodi:nodetypes="cccccc"
+ inkscape:connector-curvature="0"
+ id="path7440"
+ d="m 731.00004,-781.62261 10.05841,0 9.9409,10 0,16 -19.99931,0 0,-26 z"
+ style="fill:url(#linearGradient43913) #000000;fill-opacity:1;stroke:none;display:inline" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#g26205"
+ id="use7543"
+ transform="translate(788,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#g26069-2"
+ id="use7578-6"
+ transform="translate(788,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#g26331"
+ id="use7630"
+ transform="translate(1310,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#g26331"
+ id="use7632"
+ transform="translate(788,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#g8221"
+ id="use8229"
+ transform="translate(1571,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#g26069-2"
+ id="use8231-9"
+ transform="translate(1571,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#g8214"
+ id="use8233"
+ transform="translate(1571,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#g26205"
+ id="use8235"
+ transform="translate(1571,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#g6032"
+ id="use8237"
+ transform="translate(1571,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#g26331"
+ id="use8239"
+ transform="translate(1571,0)"
+ width="5033"
+ height="1085" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(3669,0)"
+ id="use8255"
+ xlink:href="#g8221"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(3669,0)"
+ id="use8257-9"
+ xlink:href="#g26069-2"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(3669,0)"
+ id="use8259"
+ xlink:href="#g8214"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(3669,0)"
+ id="use8261"
+ xlink:href="#g26205"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(3669,0)"
+ id="use8263"
+ xlink:href="#g6032"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(3669,0)"
+ id="use8265"
+ xlink:href="#g26331"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(522,0)"
+ id="use9306-4"
+ xlink:href="#use26385-1"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(522,0)"
+ id="use9308-0"
+ xlink:href="#g26421-2"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(522,0)"
+ id="use9310-2"
+ xlink:href="#use26439-5"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(522,0)"
+ id="use9312-5"
+ xlink:href="#use26441-8"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(522,0)"
+ id="use9314-2"
+ xlink:href="#use26443-6"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(522,0)"
+ id="use9316-1"
+ xlink:href="#use26445-1"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(522,0)"
+ id="use9318-2"
+ xlink:href="#use26447-8"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(522,0)"
+ id="use9320-0"
+ xlink:href="#use26449-1"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(522,0)"
+ id="use9322-9"
+ xlink:href="#use26451-0"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(522,0)"
+ id="use9324-4"
+ xlink:href="#use26453-8"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(522,0)"
+ id="use9326-8"
+ xlink:href="#use26455-5"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(522,0)"
+ id="use9328"
+ xlink:href="#use26265"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(522,0)"
+ id="use9330"
+ xlink:href="#g25851"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(522,0)"
+ id="use9332"
+ xlink:href="#use25928"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(522,0)"
+ id="use9334"
+ xlink:href="#use25930"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(522,0)"
+ id="use9336"
+ xlink:href="#use25932"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(522,0)"
+ id="use9338"
+ xlink:href="#use25934"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(522,0)"
+ id="use9340"
+ xlink:href="#use25936"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(522,0)"
+ id="use9342-2"
+ xlink:href="#use25938"
+ y="0"
+ x="0" />
+ <g
+ transform="matrix(0.999981,0,0,0.999625,2186,-1681.64)"
+ style="fill:url(#linearGradient9670-7) #000000;fill-opacity:1;display:inline"
+ id="g9344">
+ <path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:url(#linearGradient9666-8) #000000;fill-opacity:1;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono"
+ d="m 111.8125,976.375 c -0.4584,0.0875 -0.82072,0.5334 -0.8125,1 l 0,14 c 5e-5,0.52358 0.47642,0.99995 1,1 l 12,0 c 0.52358,-5e-5 0.99995,-0.47642 1,-1 l 0,-8 c 0.006,-0.26406 -0.0975,-0.52897 -0.28125,-0.71875 l -6,-6 C 118.52897,976.47255 118.26406,976.36888 118,976.375 l -6,0 c -0.0623,-0.006 -0.12518,-0.006 -0.1875,0 z"
+ id="path9346"
+ sodipodi:nodetypes="cccccccccccc"
+ inkscape:connector-curvature="0" />
+ <path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:url(#linearGradient9668-0) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono"
+ d="m 121.34375,976.375 c -0.3315,0.10563 -0.44306,0.60766 -0.1875,0.84375 l 3,3 c 0.27715,0.26279 0.82915,0.0379 0.84375,-0.34375 l 0,-3 c -3e-5,-0.26179 -0.23821,-0.49997 -0.5,-0.5 l -3,0 c -0.0517,-0.008 -0.10459,-0.008 -0.15625,0 z"
+ id="path9348"
+ sodipodi:nodetypes="cccccccc"
+ inkscape:connector-curvature="0" />
+ </g>
+ <path
+ sodipodi:nodetypes="cccccccccccccccc"
+ id="path9350"
+ d="m 2298.0001,-704.63781 0,0.5 0,13 0,0.5 0.5,0 10.9998,0 0.5,0 0,-0.5 0,-7.3125 0,-0.2188 -0.1562,-0.125 -5.6875,-5.7187 -0.1562,-0.125 -0.1875,0 -5.3124,0 -0.5,0 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:url(#linearGradient43872) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono"
+ inkscape:connector-curvature="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(522,0)"
+ id="use9352-6"
+ xlink:href="#path16154"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(522,0)"
+ id="use9366"
+ xlink:href="#use26339"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(522,0)"
+ id="use9368"
+ xlink:href="#rect25331"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(522,0)"
+ id="use9370"
+ xlink:href="#use26004"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(522,0)"
+ id="use9372"
+ xlink:href="#use26006"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(522,0)"
+ id="use9374"
+ xlink:href="#use26008"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(522,0)"
+ id="use9376"
+ xlink:href="#use26010"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(522,0)"
+ id="use9378"
+ xlink:href="#use26012"
+ y="0"
+ x="0" />
+ <g
+ transform="matrix(2.9999,0,0,2.99884,1967.01,-3823.61)"
+ id="g9524"
+ style="fill:url(#linearGradient9690-5) #000000;fill-opacity:1;display:inline">
+ <path
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cccccccccccc"
+ id="path9526"
+ d="m 111.8125,976.3733 c -0.4584,0.0875 -0.82072,0.53346 -0.8125,1.00011 l 0,14.00148 c 5e-5,0.52364 0.47642,1.00006 1,1.00011 l 11.33333,0 c 0.52358,-5e-5 0.99995,-0.47647 1,-1.00011 l 0,-8.73078 c 0.006,-0.26409 -0.0975,-0.52903 -0.28125,-0.71883 l -5.27042,-5.2707 c -0.18978,-0.18372 -0.45469,-0.2874 -0.71875,-0.28128 l -6.06291,0 c -0.0623,-0.006 -0.12518,-0.006 -0.1875,0 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:url(#linearGradient9686-4) #000000;fill-opacity:1;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono" />
+ <path
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cccccccc"
+ id="path9528"
+ d="m 120.66272,976.3765 c -0.33282,0.10664 -0.44483,0.61349 -0.18825,0.85184 l 3.01199,3.02879 c 0.27825,0.26531 0.83246,0.0383 0.84712,-0.34705 l 0,-3.02878 c -3e-5,-0.26431 -0.23916,-0.50477 -0.502,-0.5048 l -3.01199,0 c -0.0519,-0.008 -0.105,-0.008 -0.15687,0 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:url(#linearGradient9688-3) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono" />
+ </g>
+ <path
+ sodipodi:nodetypes="cccccccccccccccc"
+ id="path9530"
+ d="m 2303.0001,-892.61507 0,0.75 0,40.50004 0,0.72723 0.75,0 32.4994,0 0.75,0 0,-0.72723 0,-25.50003 0,-0.3282 -0.2344,-0.2343 -14.9059,-15.00001 -0.1875,-0.1875 -0.3282,0 -17.5934,0 -0.75,0 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:url(#linearGradient43858) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:url(#linearGradient43855) #000000;fill-opacity:1;stroke:none;display:inline"
+ d="m 2305,-890.6378 16,0 14,14 0,24 -30,0 0,-38 z"
+ id="path9532"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cccccc"
+ inkscape:export-filename="/home/bedipp/DocumentFoundation/Writer_16.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ <g
+ transform="translate(312,1.6925e-6)"
+ style="fill:#d36118"
+ id="g9534">
+ <rect
+ style="color:#000000;fill:#d36118;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect9536"
+ width="1"
+ height="1"
+ x="1992"
+ y="-889.63782"
+ inkscape:tile-cx="381.5"
+ inkscape:tile-cy="972.49998"
+ inkscape:tile-w="1"
+ inkscape:tile-h="1"
+ inkscape:tile-x0="381"
+ inkscape:tile-y0="971.99998" />
+ <rect
+ style="color:#000000;fill:#d36118;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect9538"
+ width="1"
+ height="1"
+ x="1992"
+ y="-886.63782"
+ inkscape:tile-cx="381.5"
+ inkscape:tile-cy="972.49998"
+ inkscape:tile-w="1"
+ inkscape:tile-h="1"
+ inkscape:tile-x0="381"
+ inkscape:tile-y0="971.99998" />
+ <rect
+ style="color:#000000;fill:#d36118;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect9540"
+ width="1"
+ height="1"
+ x="1992"
+ y="-883.63782"
+ inkscape:tile-cx="381.5"
+ inkscape:tile-cy="972.49998"
+ inkscape:tile-w="1"
+ inkscape:tile-h="1"
+ inkscape:tile-x0="381"
+ inkscape:tile-y0="971.99998" />
+ <rect
+ style="color:#000000;fill:#d36118;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect9542"
+ width="1"
+ height="1"
+ x="1992"
+ y="-880.63782"
+ inkscape:tile-cx="381.5"
+ inkscape:tile-cy="972.49998"
+ inkscape:tile-w="1"
+ inkscape:tile-h="1"
+ inkscape:tile-x0="381"
+ inkscape:tile-y0="971.99998" />
+ <rect
+ style="color:#000000;fill:#d36118;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect9544"
+ width="1"
+ height="1"
+ x="1992"
+ y="-877.63782"
+ inkscape:tile-cx="381.5"
+ inkscape:tile-cy="972.49998"
+ inkscape:tile-w="1"
+ inkscape:tile-h="1"
+ inkscape:tile-x0="381"
+ inkscape:tile-y0="971.99998" />
+ <rect
+ style="color:#000000;fill:#d36118;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect9546"
+ width="1"
+ height="1"
+ x="1992"
+ y="-874.63782"
+ inkscape:tile-cx="381.5"
+ inkscape:tile-cy="972.49998"
+ inkscape:tile-w="1"
+ inkscape:tile-h="1"
+ inkscape:tile-x0="381"
+ inkscape:tile-y0="971.99998" />
+ <rect
+ style="color:#000000;fill:#d36118;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect9548"
+ width="1"
+ height="1"
+ x="1992"
+ y="-871.63782"
+ inkscape:tile-cx="381.5"
+ inkscape:tile-cy="972.49998"
+ inkscape:tile-w="1"
+ inkscape:tile-h="1"
+ inkscape:tile-x0="381"
+ inkscape:tile-y0="971.99998" />
+ <rect
+ style="color:#000000;fill:#d36118;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect9550"
+ width="1"
+ height="1"
+ x="1992"
+ y="-868.63782"
+ inkscape:tile-cx="381.5"
+ inkscape:tile-cy="972.49998"
+ inkscape:tile-w="1"
+ inkscape:tile-h="1"
+ inkscape:tile-x0="381"
+ inkscape:tile-y0="971.99998" />
+ <rect
+ style="color:#000000;fill:#d36118;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect9552"
+ width="1"
+ height="1"
+ x="1992"
+ y="-865.63782"
+ inkscape:tile-cx="381.5"
+ inkscape:tile-cy="972.49998"
+ inkscape:tile-w="1"
+ inkscape:tile-h="1"
+ inkscape:tile-x0="381"
+ inkscape:tile-y0="971.99998" />
+ <rect
+ style="color:#000000;fill:#d36118;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect9554"
+ width="1"
+ height="1"
+ x="1992"
+ y="-862.63782"
+ inkscape:tile-cx="381.5"
+ inkscape:tile-cy="972.49998"
+ inkscape:tile-w="1"
+ inkscape:tile-h="1"
+ inkscape:tile-x0="381"
+ inkscape:tile-y0="971.99998" />
+ <rect
+ style="color:#000000;fill:#d36118;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect9556"
+ width="1"
+ height="1"
+ x="1992"
+ y="-859.63782"
+ inkscape:tile-cx="381.5"
+ inkscape:tile-cy="972.49998"
+ inkscape:tile-w="1"
+ inkscape:tile-h="1"
+ inkscape:tile-x0="381"
+ inkscape:tile-y0="971.99998" />
+ <rect
+ style="color:#000000;fill:#d36118;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect9558"
+ width="1"
+ height="1"
+ x="1992"
+ y="-856.63782"
+ inkscape:tile-cx="381.5"
+ inkscape:tile-cy="972.49998"
+ inkscape:tile-w="1"
+ inkscape:tile-h="1"
+ inkscape:tile-x0="381"
+ inkscape:tile-y0="971.99998" />
+ <rect
+ style="color:#000000;fill:#d36118;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect9560"
+ width="1"
+ height="1"
+ x="1992"
+ y="-853.63782"
+ inkscape:tile-cx="381.5"
+ inkscape:tile-cy="972.49998"
+ inkscape:tile-w="1"
+ inkscape:tile-h="1"
+ inkscape:tile-x0="381"
+ inkscape:tile-y0="971.99998" />
+ </g>
+ <g
+ transform="translate(312,1.6925e-6)"
+ id="g9562">
+ <rect
+ inkscape:tile-y0="971.99998"
+ inkscape:tile-x0="381"
+ inkscape:tile-h="1"
+ inkscape:tile-w="1"
+ inkscape:tile-cy="972.49998"
+ inkscape:tile-cx="381.5"
+ y="-889.63782"
+ x="1987"
+ height="1"
+ width="4"
+ id="rect9564"
+ style="color:#000000;fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ inkscape:tile-y0="971.99998"
+ inkscape:tile-x0="381"
+ inkscape:tile-h="1"
+ inkscape:tile-w="1"
+ inkscape:tile-cy="972.49998"
+ inkscape:tile-cx="381.5"
+ y="-886.63782"
+ x="1987"
+ height="1"
+ width="4"
+ id="rect9566"
+ style="color:#000000;fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ inkscape:tile-y0="971.99998"
+ inkscape:tile-x0="381"
+ inkscape:tile-h="1"
+ inkscape:tile-w="1"
+ inkscape:tile-cy="972.49998"
+ inkscape:tile-cx="381.5"
+ y="-883.63782"
+ x="1987"
+ height="1"
+ width="4"
+ id="rect9568"
+ style="color:#000000;fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ inkscape:tile-y0="971.99998"
+ inkscape:tile-x0="381"
+ inkscape:tile-h="1"
+ inkscape:tile-w="1"
+ inkscape:tile-cy="972.49998"
+ inkscape:tile-cx="381.5"
+ y="-880.63782"
+ x="1987"
+ height="1"
+ width="4"
+ id="rect9570"
+ style="color:#000000;fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ inkscape:tile-y0="971.99998"
+ inkscape:tile-x0="381"
+ inkscape:tile-h="1"
+ inkscape:tile-w="1"
+ inkscape:tile-cy="972.49998"
+ inkscape:tile-cx="381.5"
+ y="-877.63782"
+ x="1987"
+ height="1"
+ width="4"
+ id="rect9572"
+ style="color:#000000;fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ inkscape:tile-y0="971.99998"
+ inkscape:tile-x0="381"
+ inkscape:tile-h="1"
+ inkscape:tile-w="1"
+ inkscape:tile-cy="972.49998"
+ inkscape:tile-cx="381.5"
+ y="-874.63782"
+ x="1987"
+ height="1"
+ width="4"
+ id="rect9574"
+ style="color:#000000;fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ inkscape:tile-y0="971.99998"
+ inkscape:tile-x0="381"
+ inkscape:tile-h="1"
+ inkscape:tile-w="1"
+ inkscape:tile-cy="972.49998"
+ inkscape:tile-cx="381.5"
+ y="-871.63782"
+ x="1987"
+ height="1"
+ width="4"
+ id="rect9576"
+ style="color:#000000;fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ inkscape:tile-y0="971.99998"
+ inkscape:tile-x0="381"
+ inkscape:tile-h="1"
+ inkscape:tile-w="1"
+ inkscape:tile-cy="972.49998"
+ inkscape:tile-cx="381.5"
+ y="-868.63782"
+ x="1987"
+ height="1"
+ width="4"
+ id="rect9578"
+ style="color:#000000;fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ inkscape:tile-y0="971.99998"
+ inkscape:tile-x0="381"
+ inkscape:tile-h="1"
+ inkscape:tile-w="1"
+ inkscape:tile-cy="972.49998"
+ inkscape:tile-cx="381.5"
+ y="-865.63782"
+ x="1987"
+ height="1"
+ width="4"
+ id="rect9580-6"
+ style="color:#000000;fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ inkscape:tile-y0="971.99998"
+ inkscape:tile-x0="381"
+ inkscape:tile-h="1"
+ inkscape:tile-w="1"
+ inkscape:tile-cy="972.49998"
+ inkscape:tile-cx="381.5"
+ y="-862.63782"
+ x="1987"
+ height="1"
+ width="4"
+ id="rect9582"
+ style="color:#000000;fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ inkscape:tile-y0="971.99998"
+ inkscape:tile-x0="381"
+ inkscape:tile-h="1"
+ inkscape:tile-w="1"
+ inkscape:tile-cy="972.49998"
+ inkscape:tile-cx="381.5"
+ y="-859.63782"
+ x="1987"
+ height="1"
+ width="4"
+ id="rect9584"
+ style="color:#000000;fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ inkscape:tile-y0="971.99998"
+ inkscape:tile-x0="381"
+ inkscape:tile-h="1"
+ inkscape:tile-w="1"
+ inkscape:tile-cy="972.49998"
+ inkscape:tile-cx="381.5"
+ y="-856.63782"
+ x="1987"
+ height="1"
+ width="4"
+ id="rect9586"
+ style="color:#000000;fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ inkscape:tile-y0="971.99998"
+ inkscape:tile-x0="381"
+ inkscape:tile-h="1"
+ inkscape:tile-w="1"
+ inkscape:tile-cy="972.49998"
+ inkscape:tile-cx="381.5"
+ y="-853.63782"
+ x="1987"
+ height="1"
+ width="4"
+ id="rect9588"
+ style="color:#000000;fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ </g>
+ <g
+ transform="matrix(1.99993,0,0,1.99923,2077.01,-2736.62)"
+ id="g9590"
+ style="fill:url(#linearGradient9700-9) #000000;fill-opacity:1;display:inline">
+ <path
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cccccccccccc"
+ id="path9592"
+ d="m 111.8125,976.3733 c -0.4584,0.0875 -0.82072,0.53346 -0.8125,1.00011 l 0,14.00148 c 5e-5,0.52364 0.47642,1.00006 1,1.00011 l 10.99999,0 c 0.52358,-5e-5 0.99995,-0.47647 1,-1.00011 l 0,-8.73078 c 0.006,-0.26409 -0.0975,-0.52903 -0.28125,-0.71883 l -5.27042,-5.2707 c -0.18978,-0.18372 -0.45469,-0.2874 -0.71875,-0.28128 l -5.72957,0 c -0.0623,-0.006 -0.12518,-0.006 -0.1875,0 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:url(#linearGradient9696-3) #000000;fill-opacity:1;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono" />
+ <path
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cccccccc"
+ id="path9594"
+ d="m 120.32938,976.3765 c -0.33282,0.10664 -0.44483,0.61349 -0.18825,0.85184 l 3.01199,3.02879 c 0.27825,0.26531 0.83246,0.0383 0.84712,-0.34705 l 0,-3.02878 c -3e-5,-0.26431 -0.23916,-0.50477 -0.502,-0.5048 l -3.01199,0 c -0.0519,-0.008 -0.105,-0.008 -0.15687,0 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:url(#linearGradient43254) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono" />
+ </g>
+ <path
+ sodipodi:nodetypes="cccccccccccccccc"
+ id="path9596"
+ d="m 2301.0001,-782.62261 0,0.5 0,27 0,0.5 0.5,0 20.9995,0 0.5,0 0,-0.5 0,-17 0,-0.2188 -0.1562,-0.1562 -9.9373,-10 -0.125,-0.125 -0.2188,0 -11.0622,0 -0.5,0 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:url(#linearGradient43821) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:url(#linearGradient43818) #000000;fill-opacity:1;stroke:none;display:inline"
+ d="m 2303,-781.62261 9.0584,0 9.941,10 0,16 -18.9994,0 0,-26 z"
+ id="path9598"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cccccc"
+ inkscape:export-filename="/home/bedipp/DocumentFoundation/Writer_16.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ <rect
+ style="color:#000000;fill:#d36118;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect9600"
+ width="1"
+ height="1"
+ x="2302"
+ y="-780.63782"
+ inkscape:tile-cx="381.5"
+ inkscape:tile-cy="972.49998"
+ inkscape:tile-w="1"
+ inkscape:tile-h="1"
+ inkscape:tile-x0="381"
+ inkscape:tile-y0="971.99998" />
+ <rect
+ inkscape:tile-y0="971.99998"
+ inkscape:tile-x0="381"
+ inkscape:tile-h="1"
+ inkscape:tile-w="1"
+ inkscape:tile-cy="972.49998"
+ inkscape:tile-cx="381.5"
+ y="-780.63782"
+ x="2298"
+ height="1"
+ width="3"
+ id="rect9602"
+ style="color:#000000;fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <use
+ x="0"
+ y="0"
+ inkscape:tiled-clone-of="#rect16795"
+ xlink:href="#rect16795"
+ transform="translate(522,2)"
+ id="use9604"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ inkscape:tiled-clone-of="#rect16795"
+ xlink:href="#rect16795"
+ transform="translate(522,4)"
+ id="use9606"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ inkscape:tiled-clone-of="#rect16795"
+ xlink:href="#rect16795"
+ transform="translate(522,6)"
+ id="use9608"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ inkscape:tiled-clone-of="#rect16795"
+ xlink:href="#rect16795"
+ transform="translate(522,8)"
+ id="use9610"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ inkscape:tiled-clone-of="#rect16795"
+ xlink:href="#rect16795"
+ transform="translate(522,10)"
+ id="use9612"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ inkscape:tiled-clone-of="#rect16795"
+ xlink:href="#rect16795"
+ transform="translate(522,12)"
+ id="use9614"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ inkscape:tiled-clone-of="#rect16795"
+ xlink:href="#rect16795"
+ transform="translate(522,14)"
+ id="use9616"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ inkscape:tiled-clone-of="#rect16795"
+ xlink:href="#rect16795"
+ transform="translate(522,16)"
+ id="use9618"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ inkscape:tiled-clone-of="#rect16795"
+ xlink:href="#rect16795"
+ transform="translate(522,18)"
+ id="use9620"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ inkscape:tiled-clone-of="#rect16795"
+ xlink:href="#rect16795"
+ transform="translate(522,20)"
+ id="use9622"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ inkscape:tiled-clone-of="#rect16795"
+ xlink:href="#rect16795"
+ transform="translate(522,22)"
+ id="use9624"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ inkscape:tiled-clone-of="#rect16795"
+ xlink:href="#rect16795"
+ transform="translate(522,24)"
+ id="use9626"
+ width="5033"
+ height="1085" />
+ <rect
+ style="color:#000000;fill:#d36118;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect9628"
+ width="1"
+ height="1"
+ x="2302"
+ y="-778.63782"
+ inkscape:tile-x0="381"
+ inkscape:tile-y0="971.99998" />
+ <rect
+ style="color:#000000;fill:#d36118;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect9630"
+ width="1"
+ height="1"
+ x="2302"
+ y="-776.63782"
+ inkscape:tile-x0="381"
+ inkscape:tile-y0="971.99998" />
+ <rect
+ style="color:#000000;fill:#d36118;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect9632"
+ width="1"
+ height="1"
+ x="2302"
+ y="-774.63782"
+ inkscape:tile-x0="381"
+ inkscape:tile-y0="971.99998" />
+ <rect
+ style="color:#000000;fill:#d36118;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect9634"
+ width="1"
+ height="1"
+ x="2302"
+ y="-772.63782"
+ inkscape:tile-x0="381"
+ inkscape:tile-y0="971.99998" />
+ <rect
+ style="color:#000000;fill:#d36118;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect9636"
+ width="1"
+ height="1"
+ x="2302"
+ y="-770.63782"
+ inkscape:tile-x0="381"
+ inkscape:tile-y0="971.99998" />
+ <rect
+ style="color:#000000;fill:#d36118;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect9638"
+ width="1"
+ height="1"
+ x="2302"
+ y="-768.63782"
+ inkscape:tile-x0="381"
+ inkscape:tile-y0="971.99998" />
+ <rect
+ style="color:#000000;fill:#d36118;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect9640"
+ width="1"
+ height="1"
+ x="2302"
+ y="-766.63782"
+ inkscape:tile-x0="381"
+ inkscape:tile-y0="971.99998" />
+ <rect
+ style="color:#000000;fill:#d36118;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect9642"
+ width="1"
+ height="1"
+ x="2302"
+ y="-764.63782"
+ inkscape:tile-x0="381"
+ inkscape:tile-y0="971.99998" />
+ <rect
+ style="color:#000000;fill:#d36118;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect9644"
+ width="1"
+ height="1"
+ x="2302"
+ y="-762.63782"
+ inkscape:tile-x0="381"
+ inkscape:tile-y0="971.99998" />
+ <rect
+ style="color:#000000;fill:#d36118;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect9646"
+ width="1"
+ height="1"
+ x="2302"
+ y="-760.63782"
+ inkscape:tile-x0="381"
+ inkscape:tile-y0="971.99998" />
+ <rect
+ style="color:#000000;fill:#d36118;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect9648"
+ width="1"
+ height="1"
+ x="2302"
+ y="-758.63782"
+ inkscape:tile-x0="381"
+ inkscape:tile-y0="971.99998" />
+ <rect
+ style="color:#000000;fill:#d36118;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect9650"
+ width="1"
+ height="1"
+ x="2302"
+ y="-756.63782"
+ inkscape:tile-x0="381"
+ inkscape:tile-y0="971.99998" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#use26385-1"
+ id="use9706-8"
+ transform="translate(783,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#g26421-2"
+ id="use9708-2"
+ transform="translate(783,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#use26439-5"
+ id="use9710-1"
+ transform="translate(783,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#use26441-8"
+ id="use9712-0"
+ transform="translate(783,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#use26443-6"
+ id="use9714-2"
+ transform="translate(783,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#use26445-1"
+ id="use9716-4"
+ transform="translate(783,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#use26447-8"
+ id="use9718-3"
+ transform="translate(783,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#use26449-1"
+ id="use9720-1"
+ transform="translate(783,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#use26451-0"
+ id="use9722-3"
+ transform="translate(783,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#use26453-8"
+ id="use9724-0"
+ transform="translate(783,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#use26455-5"
+ id="use9726-0"
+ transform="translate(783,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#use26265"
+ id="use9728"
+ transform="translate(783,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#g25851"
+ id="use9730"
+ transform="translate(783,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#use25928"
+ id="use9732"
+ transform="translate(783,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#use25930"
+ id="use9734"
+ transform="translate(783,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#use25932"
+ id="use9736"
+ transform="translate(783,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#use25934"
+ id="use9738"
+ transform="translate(783,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#use25936"
+ id="use9741"
+ transform="translate(783,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#use25938"
+ id="use9743"
+ transform="translate(783,0)"
+ width="5033"
+ height="1085" />
+ <g
+ id="g9745"
+ style="fill:url(#linearGradient10071-3) #000000;fill-opacity:1;display:inline"
+ transform="matrix(0.999981,0,0,0.999625,2447,-1681.64)">
+ <path
+ sodipodi:nodetypes="cccccccccccc"
+ id="path9747"
+ d="m 111.8125,976.375 c -0.4584,0.0875 -0.82072,0.5334 -0.8125,1 l 0,14 c 5e-5,0.52358 0.47642,0.99995 1,1 l 12,0 c 0.52358,-5e-5 0.99995,-0.47642 1,-1 l 0,-8 c 0.006,-0.26406 -0.0975,-0.52897 -0.28125,-0.71875 l -6,-6 C 118.52897,976.47255 118.26406,976.36888 118,976.375 l -6,0 c -0.0623,-0.006 -0.12518,-0.006 -0.1875,0 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:url(#linearGradient10067-1) #000000;fill-opacity:1;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono"
+ inkscape:connector-curvature="0" />
+ <path
+ sodipodi:nodetypes="cccccccc"
+ id="path9749"
+ d="m 121.34375,976.375 c -0.3315,0.10563 -0.44306,0.60766 -0.1875,0.84375 l 3,3 c 0.27715,0.26279 0.82915,0.0379 0.84375,-0.34375 l 0,-3 c -3e-5,-0.26179 -0.23821,-0.49997 -0.5,-0.5 l -3,0 c -0.0517,-0.008 -0.10459,-0.008 -0.15625,0 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:url(#linearGradient43258) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono"
+ inkscape:connector-curvature="0" />
+ </g>
+ <path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:url(#linearGradient43767) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono"
+ d="m 2559.0001,-704.63781 0,0.5 0,13 0,0.5 0.5,0 10.9998,0 0.5,0 0,-0.5 0,-7.3125 0,-0.2188 -0.1562,-0.125 -5.6875,-5.7187 -0.1562,-0.125 -0.1875,0 -5.3124,0 -0.5,0 z"
+ id="path9751"
+ sodipodi:nodetypes="cccccccccccccccc"
+ inkscape:connector-curvature="0" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#path16154"
+ id="use9753"
+ transform="translate(783,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect16212"
+ id="use9755"
+ transform="translate(783,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#use5084"
+ id="use9757"
+ transform="translate(783,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#use5086"
+ id="use9759"
+ transform="translate(783,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#use5088"
+ id="use9761"
+ transform="translate(783,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#use5090"
+ id="use9763"
+ transform="translate(783,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#use5092"
+ id="use9765"
+ transform="translate(783,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#use26339"
+ id="use9767"
+ transform="translate(783,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect25331"
+ id="use9769"
+ transform="translate(783,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#use26004"
+ id="use9771"
+ transform="translate(783,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#use26006"
+ id="use9773"
+ transform="translate(783,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#use26008"
+ id="use9775"
+ transform="translate(783,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#use26010"
+ id="use9777"
+ transform="translate(783,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#use26012"
+ id="use9779"
+ transform="translate(783,0)"
+ width="5033"
+ height="1085" />
+ <g
+ style="fill:url(#linearGradient10091-2) #000000;fill-opacity:1;display:inline"
+ id="g9925"
+ transform="matrix(2.9999,0,0,2.99884,2228.01,-3823.61)">
+ <path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:url(#linearGradient43260) #000000;fill-opacity:1;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono"
+ d="m 111.8125,976.3733 c -0.4584,0.0875 -0.82072,0.53346 -0.8125,1.00011 l 0,14.00148 c 5e-5,0.52364 0.47642,1.00006 1,1.00011 l 11.33333,0 c 0.52358,-5e-5 0.99995,-0.47647 1,-1.00011 l 0,-8.73078 c 0.006,-0.26409 -0.0975,-0.52903 -0.28125,-0.71883 l -5.27042,-5.2707 c -0.18978,-0.18372 -0.45469,-0.2874 -0.71875,-0.28128 l -6.06291,0 c -0.0623,-0.006 -0.12518,-0.006 -0.1875,0 z"
+ id="path9927"
+ sodipodi:nodetypes="cccccccccccc"
+ inkscape:connector-curvature="0" />
+ <path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:url(#linearGradient43262) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono"
+ d="m 120.66272,976.3765 c -0.33282,0.10664 -0.44483,0.61349 -0.18825,0.85184 l 3.01199,3.02879 c 0.27825,0.26531 0.83246,0.0383 0.84712,-0.34705 l 0,-3.02878 c -3e-5,-0.26431 -0.23916,-0.50477 -0.502,-0.5048 l -3.01199,0 c -0.0519,-0.008 -0.105,-0.008 -0.15687,0 z"
+ id="path9929"
+ sodipodi:nodetypes="cccccccc"
+ inkscape:connector-curvature="0" />
+ </g>
+ <path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:url(#linearGradient43747) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono"
+ d="m 2564.0001,-892.61507 0,0.75 0,40.50004 0,0.72723 0.75,0 32.4994,0 0.75,0 0,-0.72723 0,-25.50003 0,-0.3282 -0.2344,-0.2343 -14.9059,-15.00001 -0.1875,-0.1875 -0.3282,0 -17.5934,0 -0.75,0 z"
+ id="path9931"
+ sodipodi:nodetypes="cccccccccccccccc"
+ inkscape:connector-curvature="0" />
+ <path
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/bedipp/DocumentFoundation/Writer_16.png"
+ sodipodi:nodetypes="cccccc"
+ inkscape:connector-curvature="0"
+ id="path9933"
+ d="m 2566,-890.6378 16,0 14,14 0,24 -30,0 0,-38 z"
+ style="fill:url(#linearGradient43744) #000000;fill-opacity:1;stroke:none;display:inline" />
+ <g
+ id="g9935"
+ style="fill:#e9b913"
+ transform="translate(573,1.6925e-6)">
+ <rect
+ inkscape:tile-y0="971.99998"
+ inkscape:tile-x0="381"
+ inkscape:tile-h="1"
+ inkscape:tile-w="1"
+ inkscape:tile-cy="972.49998"
+ inkscape:tile-cx="381.5"
+ y="-889.63782"
+ x="1992"
+ height="1"
+ width="1"
+ id="rect9937"
+ style="color:#000000;fill:#e9b913;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ inkscape:tile-y0="971.99998"
+ inkscape:tile-x0="381"
+ inkscape:tile-h="1"
+ inkscape:tile-w="1"
+ inkscape:tile-cy="972.49998"
+ inkscape:tile-cx="381.5"
+ y="-886.63782"
+ x="1992"
+ height="1"
+ width="1"
+ id="rect9939"
+ style="color:#000000;fill:#e9b913;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ inkscape:tile-y0="971.99998"
+ inkscape:tile-x0="381"
+ inkscape:tile-h="1"
+ inkscape:tile-w="1"
+ inkscape:tile-cy="972.49998"
+ inkscape:tile-cx="381.5"
+ y="-883.63782"
+ x="1992"
+ height="1"
+ width="1"
+ id="rect9941"
+ style="color:#000000;fill:#e9b913;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ inkscape:tile-y0="971.99998"
+ inkscape:tile-x0="381"
+ inkscape:tile-h="1"
+ inkscape:tile-w="1"
+ inkscape:tile-cy="972.49998"
+ inkscape:tile-cx="381.5"
+ y="-880.63782"
+ x="1992"
+ height="1"
+ width="1"
+ id="rect9943"
+ style="color:#000000;fill:#e9b913;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ inkscape:tile-y0="971.99998"
+ inkscape:tile-x0="381"
+ inkscape:tile-h="1"
+ inkscape:tile-w="1"
+ inkscape:tile-cy="972.49998"
+ inkscape:tile-cx="381.5"
+ y="-877.63782"
+ x="1992"
+ height="1"
+ width="1"
+ id="rect9945"
+ style="color:#000000;fill:#e9b913;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ inkscape:tile-y0="971.99998"
+ inkscape:tile-x0="381"
+ inkscape:tile-h="1"
+ inkscape:tile-w="1"
+ inkscape:tile-cy="972.49998"
+ inkscape:tile-cx="381.5"
+ y="-874.63782"
+ x="1992"
+ height="1"
+ width="1"
+ id="rect9947"
+ style="color:#000000;fill:#e9b913;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ inkscape:tile-y0="971.99998"
+ inkscape:tile-x0="381"
+ inkscape:tile-h="1"
+ inkscape:tile-w="1"
+ inkscape:tile-cy="972.49998"
+ inkscape:tile-cx="381.5"
+ y="-871.63782"
+ x="1992"
+ height="1"
+ width="1"
+ id="rect9949"
+ style="color:#000000;fill:#e9b913;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ inkscape:tile-y0="971.99998"
+ inkscape:tile-x0="381"
+ inkscape:tile-h="1"
+ inkscape:tile-w="1"
+ inkscape:tile-cy="972.49998"
+ inkscape:tile-cx="381.5"
+ y="-868.63782"
+ x="1992"
+ height="1"
+ width="1"
+ id="rect9951"
+ style="color:#000000;fill:#e9b913;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ inkscape:tile-y0="971.99998"
+ inkscape:tile-x0="381"
+ inkscape:tile-h="1"
+ inkscape:tile-w="1"
+ inkscape:tile-cy="972.49998"
+ inkscape:tile-cx="381.5"
+ y="-865.63782"
+ x="1992"
+ height="1"
+ width="1"
+ id="rect9953"
+ style="color:#000000;fill:#e9b913;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ inkscape:tile-y0="971.99998"
+ inkscape:tile-x0="381"
+ inkscape:tile-h="1"
+ inkscape:tile-w="1"
+ inkscape:tile-cy="972.49998"
+ inkscape:tile-cx="381.5"
+ y="-862.63782"
+ x="1992"
+ height="1"
+ width="1"
+ id="rect9955"
+ style="color:#000000;fill:#e9b913;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ inkscape:tile-y0="971.99998"
+ inkscape:tile-x0="381"
+ inkscape:tile-h="1"
+ inkscape:tile-w="1"
+ inkscape:tile-cy="972.49998"
+ inkscape:tile-cx="381.5"
+ y="-859.63782"
+ x="1992"
+ height="1"
+ width="1"
+ id="rect9957"
+ style="color:#000000;fill:#e9b913;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ inkscape:tile-y0="971.99998"
+ inkscape:tile-x0="381"
+ inkscape:tile-h="1"
+ inkscape:tile-w="1"
+ inkscape:tile-cy="972.49998"
+ inkscape:tile-cx="381.5"
+ y="-856.63782"
+ x="1992"
+ height="1"
+ width="1"
+ id="rect9959"
+ style="color:#000000;fill:#e9b913;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ inkscape:tile-y0="971.99998"
+ inkscape:tile-x0="381"
+ inkscape:tile-h="1"
+ inkscape:tile-w="1"
+ inkscape:tile-cy="972.49998"
+ inkscape:tile-cx="381.5"
+ y="-853.63782"
+ x="1992"
+ height="1"
+ width="1"
+ id="rect9961"
+ style="color:#000000;fill:#e9b913;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ </g>
+ <g
+ id="g9963"
+ transform="translate(573,1.6925e-6)">
+ <rect
+ style="color:#000000;fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect9965"
+ width="4"
+ height="1"
+ x="1987"
+ y="-889.63782"
+ inkscape:tile-cx="381.5"
+ inkscape:tile-cy="972.49998"
+ inkscape:tile-w="1"
+ inkscape:tile-h="1"
+ inkscape:tile-x0="381"
+ inkscape:tile-y0="971.99998" />
+ <rect
+ style="color:#000000;fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect9967"
+ width="4"
+ height="1"
+ x="1987"
+ y="-886.63782"
+ inkscape:tile-cx="381.5"
+ inkscape:tile-cy="972.49998"
+ inkscape:tile-w="1"
+ inkscape:tile-h="1"
+ inkscape:tile-x0="381"
+ inkscape:tile-y0="971.99998" />
+ <rect
+ style="color:#000000;fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect9969"
+ width="4"
+ height="1"
+ x="1987"
+ y="-883.63782"
+ inkscape:tile-cx="381.5"
+ inkscape:tile-cy="972.49998"
+ inkscape:tile-w="1"
+ inkscape:tile-h="1"
+ inkscape:tile-x0="381"
+ inkscape:tile-y0="971.99998" />
+ <rect
+ style="color:#000000;fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect9971"
+ width="4"
+ height="1"
+ x="1987"
+ y="-880.63782"
+ inkscape:tile-cx="381.5"
+ inkscape:tile-cy="972.49998"
+ inkscape:tile-w="1"
+ inkscape:tile-h="1"
+ inkscape:tile-x0="381"
+ inkscape:tile-y0="971.99998" />
+ <rect
+ style="color:#000000;fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect9973"
+ width="4"
+ height="1"
+ x="1987"
+ y="-877.63782"
+ inkscape:tile-cx="381.5"
+ inkscape:tile-cy="972.49998"
+ inkscape:tile-w="1"
+ inkscape:tile-h="1"
+ inkscape:tile-x0="381"
+ inkscape:tile-y0="971.99998" />
+ <rect
+ style="color:#000000;fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect9975"
+ width="4"
+ height="1"
+ x="1987"
+ y="-874.63782"
+ inkscape:tile-cx="381.5"
+ inkscape:tile-cy="972.49998"
+ inkscape:tile-w="1"
+ inkscape:tile-h="1"
+ inkscape:tile-x0="381"
+ inkscape:tile-y0="971.99998" />
+ <rect
+ style="color:#000000;fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect9977"
+ width="4"
+ height="1"
+ x="1987"
+ y="-871.63782"
+ inkscape:tile-cx="381.5"
+ inkscape:tile-cy="972.49998"
+ inkscape:tile-w="1"
+ inkscape:tile-h="1"
+ inkscape:tile-x0="381"
+ inkscape:tile-y0="971.99998" />
+ <rect
+ style="color:#000000;fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect9979"
+ width="4"
+ height="1"
+ x="1987"
+ y="-868.63782"
+ inkscape:tile-cx="381.5"
+ inkscape:tile-cy="972.49998"
+ inkscape:tile-w="1"
+ inkscape:tile-h="1"
+ inkscape:tile-x0="381"
+ inkscape:tile-y0="971.99998" />
+ <rect
+ style="color:#000000;fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect9981"
+ width="4"
+ height="1"
+ x="1987"
+ y="-865.63782"
+ inkscape:tile-cx="381.5"
+ inkscape:tile-cy="972.49998"
+ inkscape:tile-w="1"
+ inkscape:tile-h="1"
+ inkscape:tile-x0="381"
+ inkscape:tile-y0="971.99998" />
+ <rect
+ style="color:#000000;fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect9983"
+ width="4"
+ height="1"
+ x="1987"
+ y="-862.63782"
+ inkscape:tile-cx="381.5"
+ inkscape:tile-cy="972.49998"
+ inkscape:tile-w="1"
+ inkscape:tile-h="1"
+ inkscape:tile-x0="381"
+ inkscape:tile-y0="971.99998" />
+ <rect
+ style="color:#000000;fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect9985"
+ width="4"
+ height="1"
+ x="1987"
+ y="-859.63782"
+ inkscape:tile-cx="381.5"
+ inkscape:tile-cy="972.49998"
+ inkscape:tile-w="1"
+ inkscape:tile-h="1"
+ inkscape:tile-x0="381"
+ inkscape:tile-y0="971.99998" />
+ <rect
+ style="color:#000000;fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect9987"
+ width="4"
+ height="1"
+ x="1987"
+ y="-856.63782"
+ inkscape:tile-cx="381.5"
+ inkscape:tile-cy="972.49998"
+ inkscape:tile-w="1"
+ inkscape:tile-h="1"
+ inkscape:tile-x0="381"
+ inkscape:tile-y0="971.99998" />
+ <rect
+ style="color:#000000;fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect9989"
+ width="4"
+ height="1"
+ x="1987"
+ y="-853.63782"
+ inkscape:tile-cx="381.5"
+ inkscape:tile-cy="972.49998"
+ inkscape:tile-w="1"
+ inkscape:tile-h="1"
+ inkscape:tile-x0="381"
+ inkscape:tile-y0="971.99998" />
+ </g>
+ <g
+ style="fill:url(#linearGradient10101-3) #000000;fill-opacity:1;display:inline"
+ id="g9991"
+ transform="matrix(1.99993,0,0,1.99923,2338.01,-2736.62)">
+ <path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:url(#linearGradient10097-5) #000000;fill-opacity:1;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono"
+ d="m 111.8125,976.3733 c -0.4584,0.0875 -0.82072,0.53346 -0.8125,1.00011 l 0,14.00148 c 5e-5,0.52364 0.47642,1.00006 1,1.00011 l 10.99999,0 c 0.52358,-5e-5 0.99995,-0.47647 1,-1.00011 l 0,-8.73078 c 0.006,-0.26409 -0.0975,-0.52903 -0.28125,-0.71883 l -5.27042,-5.2707 c -0.18978,-0.18372 -0.45469,-0.2874 -0.71875,-0.28128 l -5.72957,0 c -0.0623,-0.006 -0.12518,-0.006 -0.1875,0 z"
+ id="path9993"
+ sodipodi:nodetypes="cccccccccccc"
+ inkscape:connector-curvature="0" />
+ <path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:url(#linearGradient10099-1) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono"
+ d="m 120.32938,976.3765 c -0.33282,0.10664 -0.44483,0.61349 -0.18825,0.85184 l 3.01199,3.02879 c 0.27825,0.26531 0.83246,0.0383 0.84712,-0.34705 l 0,-3.02878 c -3e-5,-0.26431 -0.23916,-0.50477 -0.502,-0.5048 l -3.01199,0 c -0.0519,-0.008 -0.105,-0.008 -0.15687,0 z"
+ id="path9995"
+ sodipodi:nodetypes="cccccccc"
+ inkscape:connector-curvature="0" />
+ </g>
+ <path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:url(#linearGradient43710) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono"
+ d="m 2562.0001,-782.62261 0,0.5 0,27 0,0.5 0.5,0 20.9995,0 0.5,0 0,-0.5 0,-17 0,-0.2188 -0.1562,-0.1562 -9.9373,-10 -0.125,-0.125 -0.2188,0 -11.0622,0 -0.5,0 z"
+ id="path9997"
+ sodipodi:nodetypes="cccccccccccccccc"
+ inkscape:connector-curvature="0" />
+ <path
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/bedipp/DocumentFoundation/Writer_16.png"
+ sodipodi:nodetypes="cccccc"
+ inkscape:connector-curvature="0"
+ id="path9999"
+ d="m 2564,-781.62261 9.0584,0 9.941,10 0,16 -18.9994,0 0,-26 z"
+ style="fill:url(#linearGradient43707) #000000;fill-opacity:1;stroke:none;display:inline" />
+ <rect
+ inkscape:tile-y0="971.99998"
+ inkscape:tile-x0="381"
+ inkscape:tile-h="1"
+ inkscape:tile-w="1"
+ inkscape:tile-cy="972.49998"
+ inkscape:tile-cx="381.5"
+ y="-780.63782"
+ x="2563"
+ height="1"
+ width="1"
+ id="rect10001"
+ style="color:#000000;fill:#e9b913;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ style="color:#000000;fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect10003"
+ width="3"
+ height="1"
+ x="2559"
+ y="-780.63782"
+ inkscape:tile-cx="381.5"
+ inkscape:tile-cy="972.49998"
+ inkscape:tile-w="1"
+ inkscape:tile-h="1"
+ inkscape:tile-x0="381"
+ inkscape:tile-y0="971.99998" />
+ <use
+ height="1085"
+ width="5033"
+ id="use10005"
+ transform="translate(783,2)"
+ xlink:href="#rect16795"
+ inkscape:tiled-clone-of="#rect16795"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ id="use10007"
+ transform="translate(783,4)"
+ xlink:href="#rect16795"
+ inkscape:tiled-clone-of="#rect16795"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ id="use10009"
+ transform="translate(783,6)"
+ xlink:href="#rect16795"
+ inkscape:tiled-clone-of="#rect16795"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ id="use10011"
+ transform="translate(783,8)"
+ xlink:href="#rect16795"
+ inkscape:tiled-clone-of="#rect16795"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ id="use10013"
+ transform="translate(783,10)"
+ xlink:href="#rect16795"
+ inkscape:tiled-clone-of="#rect16795"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ id="use10015"
+ transform="translate(783,12)"
+ xlink:href="#rect16795"
+ inkscape:tiled-clone-of="#rect16795"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ id="use10017"
+ transform="translate(783,14)"
+ xlink:href="#rect16795"
+ inkscape:tiled-clone-of="#rect16795"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ id="use10019"
+ transform="translate(783,16)"
+ xlink:href="#rect16795"
+ inkscape:tiled-clone-of="#rect16795"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ id="use10021"
+ transform="translate(783,18)"
+ xlink:href="#rect16795"
+ inkscape:tiled-clone-of="#rect16795"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ id="use10023"
+ transform="translate(783,20)"
+ xlink:href="#rect16795"
+ inkscape:tiled-clone-of="#rect16795"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ id="use10025"
+ transform="translate(783,22)"
+ xlink:href="#rect16795"
+ inkscape:tiled-clone-of="#rect16795"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ id="use10027"
+ transform="translate(783,24)"
+ xlink:href="#rect16795"
+ inkscape:tiled-clone-of="#rect16795"
+ y="0"
+ x="0" />
+ <rect
+ inkscape:tile-y0="971.99998"
+ inkscape:tile-x0="381"
+ y="-778.63782"
+ x="2563"
+ height="1"
+ width="1"
+ id="rect10029"
+ style="color:#000000;fill:#e9b913;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ inkscape:tile-y0="971.99998"
+ inkscape:tile-x0="381"
+ y="-776.63782"
+ x="2563"
+ height="1"
+ width="1"
+ id="rect10031"
+ style="color:#000000;fill:#e9b913;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ inkscape:tile-y0="971.99998"
+ inkscape:tile-x0="381"
+ y="-774.63782"
+ x="2563"
+ height="1"
+ width="1"
+ id="rect10033"
+ style="color:#000000;fill:#e9b913;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ inkscape:tile-y0="971.99998"
+ inkscape:tile-x0="381"
+ y="-772.63782"
+ x="2563"
+ height="1"
+ width="1"
+ id="rect10035"
+ style="color:#000000;fill:#e9b913;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ inkscape:tile-y0="971.99998"
+ inkscape:tile-x0="381"
+ y="-770.63782"
+ x="2563"
+ height="1"
+ width="1"
+ id="rect10037"
+ style="color:#000000;fill:#e9b913;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ inkscape:tile-y0="971.99998"
+ inkscape:tile-x0="381"
+ y="-768.63782"
+ x="2563"
+ height="1"
+ width="1"
+ id="rect10039"
+ style="color:#000000;fill:#e9b913;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ inkscape:tile-y0="971.99998"
+ inkscape:tile-x0="381"
+ y="-766.63782"
+ x="2563"
+ height="1"
+ width="1"
+ id="rect10041"
+ style="color:#000000;fill:#e9b913;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ inkscape:tile-y0="971.99998"
+ inkscape:tile-x0="381"
+ y="-764.63782"
+ x="2563"
+ height="1"
+ width="1"
+ id="rect10043"
+ style="color:#000000;fill:#e9b913;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ inkscape:tile-y0="971.99998"
+ inkscape:tile-x0="381"
+ y="-762.63782"
+ x="2563"
+ height="1"
+ width="1"
+ id="rect10045"
+ style="color:#000000;fill:#e9b913;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ inkscape:tile-y0="971.99998"
+ inkscape:tile-x0="381"
+ y="-760.63782"
+ x="2563"
+ height="1"
+ width="1"
+ id="rect10047"
+ style="color:#000000;fill:#e9b913;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ inkscape:tile-y0="971.99998"
+ inkscape:tile-x0="381"
+ y="-758.63782"
+ x="2563"
+ height="1"
+ width="1"
+ id="rect10049"
+ style="color:#000000;fill:#e9b913;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ inkscape:tile-y0="971.99998"
+ inkscape:tile-x0="381"
+ y="-756.63782"
+ x="2563"
+ height="1"
+ width="1"
+ id="rect10051"
+ style="color:#000000;fill:#e9b913;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(522,0)"
+ id="use10107"
+ xlink:href="#rect16212"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(522,0)"
+ id="use10109"
+ xlink:href="#use5084"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(522,0)"
+ id="use10111"
+ xlink:href="#use5086"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(522,0)"
+ id="use10113"
+ xlink:href="#use5088"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(522,0)"
+ id="use10115"
+ xlink:href="#use5090"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(522,0)"
+ id="use10117"
+ xlink:href="#use5092"
+ y="0"
+ x="0" />
+ <g
+ id="g10528"
+ transform="translate(1049,1.6925e-6)">
+ <g
+ style="fill:url(#linearGradient10580-7) #000000;fill-opacity:1;display:inline"
+ id="g10530"
+ transform="matrix(1.99993,0,0,1.99923,-281.992,-2736.62)">
+ <path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:url(#linearGradient43264) #000000;fill-opacity:1;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono"
+ d="m 111.8125,976.3733 c -0.4584,0.0875 -0.82072,0.53346 -0.8125,1.00011 l 0,14.00148 c 5e-5,0.52364 0.47642,1.00006 1,1.00011 l 10.99999,0 c 0.52358,-5e-5 0.99995,-0.47647 1,-1.00011 l 0,-8.73078 c 0.006,-0.26409 -0.0975,-0.52903 -0.28125,-0.71883 l -5.27042,-5.2707 c -0.18978,-0.18372 -0.45469,-0.2874 -0.71875,-0.28128 l -5.72957,0 c -0.0623,-0.006 -0.12518,-0.006 -0.1875,0 z"
+ id="path10532"
+ sodipodi:nodetypes="cccccccccccc"
+ inkscape:connector-curvature="0" />
+ <path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:url(#linearGradient10578-8) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono"
+ d="m 120.32938,976.3765 c -0.33282,0.10664 -0.44483,0.61349 -0.18825,0.85184 l 3.01199,3.02879 c 0.27825,0.26531 0.83246,0.0383 0.84712,-0.34705 l 0,-3.02878 c -3e-5,-0.26431 -0.23916,-0.50477 -0.502,-0.5048 l -3.01199,0 c -0.0519,-0.008 -0.105,-0.008 -0.15687,0 z"
+ id="path10534"
+ sodipodi:nodetypes="cccccccc"
+ inkscape:connector-curvature="0" />
+ </g>
+ <path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:url(#linearGradient10582-9) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono"
+ d="m -57.99994,-782.62261 0,0.5 0,27 0,0.5 0.49999,0 20.9996,0 0.49999,0 0,-0.5 0,-17 0,-0.2188 -0.15624,-0.1562 -9.93731,-10 -0.12499,-0.125 -0.21875,0 -11.0623,0 -0.49999,0 z"
+ id="path10536"
+ sodipodi:nodetypes="cccccccccccccccc"
+ inkscape:connector-curvature="0" />
+ <path
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/bedipp/DocumentFoundation/Writer_16.png"
+ sodipodi:nodetypes="cccccc"
+ inkscape:connector-curvature="0"
+ id="path10538"
+ d="m -56.99996,-781.62261 10.05841,0 9.9409,10 0,16 -19.99931,0 0,-26 z"
+ style="fill:url(#linearGradient10584-6) #000000;fill-opacity:1;stroke:none;display:inline" />
+ </g>
+ <g
+ id="g10552"
+ transform="translate(1049,1.6925e-6)">
+ <g
+ transform="matrix(2.9999,0,0,2.99884,-391.989,-3823.61)"
+ id="g10554"
+ style="fill:url(#linearGradient10600-2) #000000;fill-opacity:1;display:inline">
+ <path
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cccccccccccc"
+ id="path10556"
+ d="m 111.8125,976.3733 c -0.4584,0.0875 -0.82072,0.53346 -0.8125,1.00011 l 0,14.00148 c 5e-5,0.52364 0.47642,1.00006 1,1.00011 l 11.33333,0 c 0.52358,-5e-5 0.99995,-0.47647 1,-1.00011 l 0,-8.73078 c 0.006,-0.26409 -0.0975,-0.52903 -0.28125,-0.71883 l -5.27042,-5.2707 c -0.18978,-0.18372 -0.45469,-0.2874 -0.71875,-0.28128 l -6.06291,0 c -0.0623,-0.006 -0.12518,-0.006 -0.1875,0 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:url(#linearGradient10596-0) #000000;fill-opacity:1;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono" />
+ <path
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cccccccc"
+ id="path10558"
+ d="m 120.66272,976.3765 c -0.33282,0.10664 -0.44483,0.61349 -0.18825,0.85184 l 3.01199,3.02879 c 0.27825,0.26531 0.83246,0.0383 0.84712,-0.34705 l 0,-3.02878 c -3e-5,-0.26431 -0.23916,-0.50477 -0.502,-0.5048 l -3.01199,0 c -0.0519,-0.008 -0.105,-0.008 -0.15687,0 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:url(#linearGradient10598-1) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono" />
+ </g>
+ <path
+ sodipodi:nodetypes="cccccccccccccccc"
+ id="path10560"
+ d="m -55.9999,-892.61507 0,0.75 0,40.50004 0,0.72723 0.74999,0 32.49943,0 0.74998,0 0,-0.72723 0,-25.50003 0,-0.3282 -0.23436,-0.2343 -14.90598,-15.00001 -0.18748,-0.1875 -0.32813,0 -17.59346,0 -0.74999,0 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:url(#linearGradient10602-2) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:url(#linearGradient10604-5) #000000;fill-opacity:1;stroke:none;display:inline"
+ d="m -54,-890.6378 16,0 14,14 0,24 -30,0 0,-38 z"
+ id="path10562"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cccccc"
+ inkscape:export-filename="/home/bedipp/DocumentFoundation/Writer_16.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ </g>
+ <g
+ id="g10564"
+ transform="translate(1049,1.6925e-6)">
+ <g
+ transform="matrix(0.999981,0,0,0.999625,-172.998,-1681.64)"
+ style="fill:url(#linearGradient10610-4) #000000;fill-opacity:1;display:inline"
+ id="g10566">
+ <path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:url(#linearGradient10606-3) #000000;fill-opacity:1;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono"
+ d="m 111.8125,976.375 c -0.4584,0.0875 -0.82072,0.5334 -0.8125,1 l 0,14 c 5e-5,0.52358 0.47642,0.99995 1,1 l 12,0 c 0.52358,-5e-5 0.99995,-0.47642 1,-1 l 0,-8 c 0.006,-0.26406 -0.0975,-0.52897 -0.28125,-0.71875 l -6,-6 C 118.52897,976.47255 118.26406,976.36888 118,976.375 l -6,0 c -0.0623,-0.006 -0.12518,-0.006 -0.1875,0 z"
+ id="path10568"
+ sodipodi:nodetypes="cccccccccccc"
+ inkscape:connector-curvature="0" />
+ <path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:url(#linearGradient10608-8) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono"
+ d="m 121.34375,976.375 c -0.3315,0.10563 -0.44306,0.60766 -0.1875,0.84375 l 3,3 c 0.27715,0.26279 0.82915,0.0379 0.84375,-0.34375 l 0,-3 c -3e-5,-0.26179 -0.23821,-0.49997 -0.5,-0.5 l -3,0 c -0.0517,-0.008 -0.10459,-0.008 -0.15625,0 z"
+ id="path10570"
+ sodipodi:nodetypes="cccccccc"
+ inkscape:connector-curvature="0" />
+ </g>
+ <path
+ sodipodi:nodetypes="cccccccccccccccc"
+ id="path10572"
+ d="m -60.99988,-704.63781 0,0.5 0,13 0,0.5 0.49999,0 10.99979,0 0.5,0 0,-0.5 0,-7.3125 0,-0.2188 -0.15625,-0.125 -5.6874,-5.7187 -0.15624,-0.125 -0.1875,0 -5.3124,0 -0.49999,0 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:url(#linearGradient10612-4) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:#ffffff;fill-opacity:0.86274498;stroke:none;display:inline"
+ d="m -59.9997,-703.63781 4.79971,0 5.2001,5.2 0,6.8 -9.99981,0 0,-12 z"
+ id="path10574"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cccccc"
+ inkscape:export-filename="/home/bedipp/DocumentFoundation/Writer_16.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ </g>
+ <use
+ x="0"
+ y="0"
+ xlink:href="#g26069-2"
+ id="use10614-7"
+ transform="translate(1049,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#g26205"
+ id="use10616"
+ transform="translate(1049,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#g26331"
+ id="use10618"
+ transform="translate(1049,0)"
+ width="5033"
+ height="1085" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(3408,0)"
+ id="use6700"
+ xlink:href="#g8221"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(3408,0)"
+ id="use6702-3"
+ xlink:href="#g26069-2"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(3408,0)"
+ id="use6704"
+ xlink:href="#g8214"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(3408,0)"
+ id="use6706"
+ xlink:href="#g26205"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(3408,0)"
+ id="use6708"
+ xlink:href="#g6032"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(3408,0)"
+ id="use6710"
+ xlink:href="#g26331"
+ y="0"
+ x="0" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#g8221"
+ id="use6728"
+ transform="translate(3930,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#g26069-2"
+ id="use6730-1"
+ transform="translate(3930,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#g8214"
+ id="use6732"
+ transform="translate(3930,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#g26205"
+ id="use6734"
+ transform="translate(3930,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#g6032"
+ id="use6736"
+ transform="translate(3930,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#g26331"
+ id="use6738"
+ transform="translate(3930,0)"
+ width="5033"
+ height="1085" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(4191,0)"
+ id="use10217"
+ xlink:href="#g8221"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(4191,0)"
+ id="use10219-6"
+ xlink:href="#g26069-2"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(4191,0)"
+ id="use10221"
+ xlink:href="#g8214"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(4191,0)"
+ id="use10223"
+ xlink:href="#g26205"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(4191,0)"
+ id="use10225"
+ xlink:href="#g6032"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(4191,0)"
+ id="use10227"
+ xlink:href="#g26331"
+ y="0"
+ x="0" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#g8221"
+ id="use10247"
+ transform="translate(4457,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#g26069-2"
+ id="use10249-4"
+ transform="translate(4457,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#g8214"
+ id="use10251"
+ transform="translate(4457,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#g26205"
+ id="use10253"
+ transform="translate(4457,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#g6032"
+ id="use10255"
+ transform="translate(4457,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#g26331"
+ id="use10257"
+ transform="translate(4457,0)"
+ width="5033"
+ height="1085" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(4717,0)"
+ id="use10277"
+ xlink:href="#g8221"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(4717,0)"
+ id="use10279-3"
+ xlink:href="#g26069-2"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(4717,0)"
+ id="use10281"
+ xlink:href="#g8214"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(4717,0)"
+ id="use10283"
+ xlink:href="#g26205"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(4717,0)"
+ id="use10285"
+ xlink:href="#g6032"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(4717,0)"
+ id="use10287"
+ xlink:href="#g26331"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(3142,0)"
+ id="use10822"
+ xlink:href="#g26331"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(3142,0)"
+ id="use10824"
+ xlink:href="#g26205"
+ y="0"
+ x="0" />
+ <g
+ id="g10828"
+ style="fill:url(#linearGradient11240-0) #000000;fill-opacity:1;display:inline"
+ transform="matrix(0.999981,0,0,0.999625,2969,-1681.64)">
+ <path
+ sodipodi:nodetypes="cccccccccccc"
+ id="path10830"
+ d="m 111.8125,976.375 c -0.4584,0.0875 -0.82072,0.5334 -0.8125,1 l 0,14 c 5e-5,0.52358 0.47642,0.99995 1,1 l 12,0 c 0.52358,-5e-5 0.99995,-0.47642 1,-1 l 0,-8 c 0.006,-0.26406 -0.0975,-0.52897 -0.28125,-0.71875 l -6,-6 C 118.52897,976.47255 118.26406,976.36888 118,976.375 l -6,0 c -0.0623,-0.006 -0.12518,-0.006 -0.1875,0 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:url(#linearGradient11236-2) #000000;fill-opacity:1;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono"
+ inkscape:connector-curvature="0" />
+ <path
+ sodipodi:nodetypes="cccccccc"
+ id="path10832"
+ d="m 121.34375,976.375 c -0.3315,0.10563 -0.44306,0.60766 -0.1875,0.84375 l 3,3 c 0.27715,0.26279 0.82915,0.0379 0.84375,-0.34375 l 0,-3 c -3e-5,-0.26179 -0.23821,-0.49997 -0.5,-0.5 l -3,0 c -0.0517,-0.008 -0.10459,-0.008 -0.15625,0 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:url(#linearGradient11238-9) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono"
+ inkscape:connector-curvature="0" />
+ </g>
+ <path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:url(#linearGradient43616) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono"
+ d="m 3081.0001,-704.63781 0,0.5 0,13 0,0.5 0.5,0 10.9998,0 0.5,0 0,-0.5 0,-7.3125 0,-0.2188 -0.1562,-0.125 -5.6875,-5.7187 -0.1562,-0.125 -0.1875,0 -5.3124,0 -0.5,0 z"
+ id="path10834"
+ sodipodi:nodetypes="cccccccccccccccc"
+ inkscape:connector-curvature="0" />
+ <path
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/bedipp/DocumentFoundation/Writer_16.png"
+ sodipodi:nodetypes="cccccc"
+ inkscape:connector-curvature="0"
+ id="path10837"
+ d="m 3081.0003,-703.63781 5.7997,0 5.2001,5.2 0,6.8 -10.9998,0 0,-12 z"
+ style="fill:#ffffff;fill-opacity:0.58823494;stroke:none;display:inline" />
+ <rect
+ inkscape:tile-y0="1050"
+ inkscape:tile-x0="383"
+ inkscape:tile-h="1"
+ inkscape:tile-w="1"
+ inkscape:tile-cy="1050.5"
+ inkscape:tile-cx="383.5"
+ style="color:#000000;fill:url(#linearGradient43612) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect10839"
+ width="1"
+ height="1"
+ x="3081"
+ y="-703.63782" />
+ <g
+ style="fill:url(#linearGradient11250-3) #000000;fill-opacity:1;display:inline"
+ id="g10841"
+ transform="matrix(1.99993,0,0,1.99923,2860.01,-2736.62)">
+ <path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:url(#linearGradient11246-5) #000000;fill-opacity:1;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono"
+ d="m 111.8125,976.3733 c -0.4584,0.0875 -0.82072,0.53346 -0.8125,1.00011 l 0,14.00148 c 5e-5,0.52364 0.47642,1.00006 1,1.00011 l 10.99999,0 c 0.52358,-5e-5 0.99995,-0.47647 1,-1.00011 l 0,-8.73078 c 0.006,-0.26409 -0.0975,-0.52903 -0.28125,-0.71883 l -5.27042,-5.2707 c -0.18978,-0.18372 -0.45469,-0.2874 -0.71875,-0.28128 l -5.72957,0 c -0.0623,-0.006 -0.12518,-0.006 -0.1875,0 z"
+ id="path10843"
+ sodipodi:nodetypes="cccccccccccc"
+ inkscape:connector-curvature="0" />
+ <path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:url(#linearGradient43266) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono"
+ d="m 120.32938,976.3765 c -0.33282,0.10664 -0.44483,0.61349 -0.18825,0.85184 l 3.01199,3.02879 c 0.27825,0.26531 0.83246,0.0383 0.84712,-0.34705 l 0,-3.02878 c -3e-5,-0.26431 -0.23916,-0.50477 -0.502,-0.5048 l -3.01199,0 c -0.0519,-0.008 -0.105,-0.008 -0.15687,0 z"
+ id="path10845"
+ sodipodi:nodetypes="cccccccc"
+ inkscape:connector-curvature="0" />
+ </g>
+ <path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:url(#linearGradient43606) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono"
+ d="m 3084.0001,-782.62261 0,0.5 0,27 0,0.5 0.5,0 20.9995,0 0.5,0 0,-0.5 0,-17 0,-0.2188 -0.1562,-0.1562 -9.9373,-10 -0.125,-0.125 -0.2188,0 -11.0622,0 -0.5,0 z"
+ id="path10847"
+ sodipodi:nodetypes="cccccccccccccccc"
+ inkscape:connector-curvature="0" />
+ <path
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/bedipp/DocumentFoundation/Writer_16.png"
+ sodipodi:nodetypes="cccccc"
+ inkscape:connector-curvature="0"
+ id="path10849"
+ d="m 3086,-781.62261 9.0584,0 9.941,10 0,16 -18.9994,0 0,-26 z"
+ style="fill:url(#linearGradient43603) #000000;fill-opacity:1;stroke:none;display:inline" />
+ <rect
+ inkscape:tile-y0="971.99998"
+ inkscape:tile-x0="381"
+ inkscape:tile-h="1"
+ inkscape:tile-w="1"
+ inkscape:tile-cy="972.49998"
+ inkscape:tile-cx="381.5"
+ y="-780.63782"
+ x="3085"
+ height="1"
+ width="1"
+ id="rect10851"
+ style="color:#000000;fill:#999999;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ style="color:#000000;fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect10853"
+ width="3"
+ height="1"
+ x="3081"
+ y="-780.63782"
+ inkscape:tile-cx="381.5"
+ inkscape:tile-cy="972.49998"
+ inkscape:tile-w="1"
+ inkscape:tile-h="1"
+ inkscape:tile-x0="381"
+ inkscape:tile-y0="971.99998" />
+ <use
+ height="1085"
+ width="5033"
+ id="use10855"
+ transform="translate(1305,2)"
+ xlink:href="#rect16795"
+ inkscape:tiled-clone-of="#rect16795"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ id="use10857"
+ transform="translate(1305,4)"
+ xlink:href="#rect16795"
+ inkscape:tiled-clone-of="#rect16795"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ id="use10859"
+ transform="translate(1305,6)"
+ xlink:href="#rect16795"
+ inkscape:tiled-clone-of="#rect16795"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ id="use10861"
+ transform="translate(1305,8)"
+ xlink:href="#rect16795"
+ inkscape:tiled-clone-of="#rect16795"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ id="use10863"
+ transform="translate(1305,10)"
+ xlink:href="#rect16795"
+ inkscape:tiled-clone-of="#rect16795"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ id="use10865"
+ transform="translate(1305,12)"
+ xlink:href="#rect16795"
+ inkscape:tiled-clone-of="#rect16795"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ id="use10867"
+ transform="translate(1305,14)"
+ xlink:href="#rect16795"
+ inkscape:tiled-clone-of="#rect16795"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ id="use10869"
+ transform="translate(1305,16)"
+ xlink:href="#rect16795"
+ inkscape:tiled-clone-of="#rect16795"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ id="use10871"
+ transform="translate(1305,18)"
+ xlink:href="#rect16795"
+ inkscape:tiled-clone-of="#rect16795"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ id="use10873"
+ transform="translate(1305,20)"
+ xlink:href="#rect16795"
+ inkscape:tiled-clone-of="#rect16795"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ id="use10875"
+ transform="translate(1305,22)"
+ xlink:href="#rect16795"
+ inkscape:tiled-clone-of="#rect16795"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ id="use10877"
+ transform="translate(1305,24)"
+ xlink:href="#rect16795"
+ inkscape:tiled-clone-of="#rect16795"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ id="use10879"
+ transform="translate(1305,2)"
+ xlink:href="#rect16615"
+ inkscape:tiled-clone-of="#rect16615"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ id="use10881"
+ transform="translate(1305,4)"
+ xlink:href="#rect16615"
+ inkscape:tiled-clone-of="#rect16615"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ id="use10883"
+ transform="translate(1305,6)"
+ xlink:href="#rect16615"
+ inkscape:tiled-clone-of="#rect16615"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ id="use10885"
+ transform="translate(1305,8)"
+ xlink:href="#rect16615"
+ inkscape:tiled-clone-of="#rect16615"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ id="use10887"
+ transform="translate(1305,10)"
+ xlink:href="#rect16615"
+ inkscape:tiled-clone-of="#rect16615"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ id="use10889"
+ transform="translate(1305,12)"
+ xlink:href="#rect16615"
+ inkscape:tiled-clone-of="#rect16615"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ id="use10891"
+ transform="translate(1305,14)"
+ xlink:href="#rect16615"
+ inkscape:tiled-clone-of="#rect16615"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ id="use10893"
+ transform="translate(1305,16)"
+ xlink:href="#rect16615"
+ inkscape:tiled-clone-of="#rect16615"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ id="use10895"
+ transform="translate(1305,18)"
+ xlink:href="#rect16615"
+ inkscape:tiled-clone-of="#rect16615"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ id="use10897"
+ transform="translate(1305,20)"
+ xlink:href="#rect16615"
+ inkscape:tiled-clone-of="#rect16615"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ id="use10899"
+ transform="translate(1305,22)"
+ xlink:href="#rect16615"
+ inkscape:tiled-clone-of="#rect16615"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ id="use10901"
+ transform="translate(1305,24)"
+ xlink:href="#rect16615"
+ inkscape:tiled-clone-of="#rect16615"
+ y="0"
+ x="0" />
+ <g
+ style="fill:url(#linearGradient11272-9) #000000;fill-opacity:1;display:inline"
+ id="g10926"
+ transform="matrix(2.9999,0,0,2.99884,2750.01,-3823.61)">
+ <path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:url(#linearGradient11268-9) #000000;fill-opacity:1;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono"
+ d="m 111.8125,976.3733 c -0.4584,0.0875 -0.82072,0.53346 -0.8125,1.00011 l 0,14.00148 c 5e-5,0.52364 0.47642,1.00006 1,1.00011 l 11.33333,0 c 0.52358,-5e-5 0.99995,-0.47647 1,-1.00011 l 0,-8.73078 c 0.006,-0.26409 -0.0975,-0.52903 -0.28125,-0.71883 l -5.27042,-5.2707 c -0.18978,-0.18372 -0.45469,-0.2874 -0.71875,-0.28128 l -6.06291,0 c -0.0623,-0.006 -0.12518,-0.006 -0.1875,0 z"
+ id="path10928"
+ sodipodi:nodetypes="cccccccccccc"
+ inkscape:connector-curvature="0" />
+ <path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:url(#linearGradient11270-5) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono"
+ d="m 120.66272,976.3765 c -0.33282,0.10664 -0.44483,0.61349 -0.18825,0.85184 l 3.01199,3.02879 c 0.27825,0.26531 0.83246,0.0383 0.84712,-0.34705 l 0,-3.02878 c -3e-5,-0.26431 -0.23916,-0.50477 -0.502,-0.5048 l -3.01199,0 c -0.0519,-0.008 -0.105,-0.008 -0.15687,0 z"
+ id="path10930"
+ sodipodi:nodetypes="cccccccc"
+ inkscape:connector-curvature="0" />
+ </g>
+ <path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:url(#linearGradient43571) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono"
+ d="m 3086.0001,-892.61507 0,0.75 0,40.50004 0,0.72723 0.75,0 32.4994,0 0.75,0 0,-0.72723 0,-25.50003 0,-0.3282 -0.2344,-0.2343 -14.9059,-15.00001 -0.1875,-0.1875 -0.3282,0 -17.5934,0 -0.75,0 z"
+ id="path10932"
+ sodipodi:nodetypes="cccccccccccccccc"
+ inkscape:connector-curvature="0" />
+ <path
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/bedipp/DocumentFoundation/Writer_16.png"
+ sodipodi:nodetypes="cccccc"
+ inkscape:connector-curvature="0"
+ id="path10934"
+ d="m 3088,-890.6378 16,0 14,14 0,24 -30,0 0,-38 z"
+ style="fill:url(#linearGradient43568) #000000;fill-opacity:1;stroke:none;display:inline" />
+ <rect
+ style="color:#000000;fill:#808080;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect10938"
+ width="1"
+ height="1"
+ x="3087"
+ y="-889.63782"
+ inkscape:tile-cx="381.5"
+ inkscape:tile-cy="972.49998"
+ inkscape:tile-w="1"
+ inkscape:tile-h="1"
+ inkscape:tile-x0="381"
+ inkscape:tile-y0="971.99998" />
+ <rect
+ inkscape:tile-y0="971.99998"
+ inkscape:tile-x0="381"
+ inkscape:tile-h="1"
+ inkscape:tile-w="1"
+ inkscape:tile-cy="972.49998"
+ inkscape:tile-cx="381.5"
+ y="-889.63782"
+ x="3082"
+ height="1"
+ width="4"
+ id="rect10940"
+ style="color:#000000;fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ style="color:#000000;fill:#808080;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect11442"
+ width="1"
+ height="1"
+ x="3087"
+ y="-886.63782"
+ inkscape:tile-cx="381.5"
+ inkscape:tile-cy="972.49998"
+ inkscape:tile-w="1"
+ inkscape:tile-h="1"
+ inkscape:tile-x0="381"
+ inkscape:tile-y0="971.99998" />
+ <rect
+ inkscape:tile-y0="971.99998"
+ inkscape:tile-x0="381"
+ inkscape:tile-h="1"
+ inkscape:tile-w="1"
+ inkscape:tile-cy="972.49998"
+ inkscape:tile-cx="381.5"
+ y="-886.63782"
+ x="3082"
+ height="1"
+ width="4"
+ id="rect11444"
+ style="color:#000000;fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ style="color:#000000;fill:#808080;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect11436"
+ width="1"
+ height="1"
+ x="3087"
+ y="-883.63782"
+ inkscape:tile-cx="381.5"
+ inkscape:tile-cy="972.49998"
+ inkscape:tile-w="1"
+ inkscape:tile-h="1"
+ inkscape:tile-x0="381"
+ inkscape:tile-y0="971.99998" />
+ <rect
+ inkscape:tile-y0="971.99998"
+ inkscape:tile-x0="381"
+ inkscape:tile-h="1"
+ inkscape:tile-w="1"
+ inkscape:tile-cy="972.49998"
+ inkscape:tile-cx="381.5"
+ y="-883.63782"
+ x="3082"
+ height="1"
+ width="4"
+ id="rect11438"
+ style="color:#000000;fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ style="color:#000000;fill:#808080;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect11430"
+ width="1"
+ height="1"
+ x="3087"
+ y="-880.63782"
+ inkscape:tile-cx="381.5"
+ inkscape:tile-cy="972.49998"
+ inkscape:tile-w="1"
+ inkscape:tile-h="1"
+ inkscape:tile-x0="381"
+ inkscape:tile-y0="971.99998" />
+ <rect
+ inkscape:tile-y0="971.99998"
+ inkscape:tile-x0="381"
+ inkscape:tile-h="1"
+ inkscape:tile-w="1"
+ inkscape:tile-cy="972.49998"
+ inkscape:tile-cx="381.5"
+ y="-880.63782"
+ x="3082"
+ height="1"
+ width="4"
+ id="rect11432"
+ style="color:#000000;fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ style="color:#000000;fill:#808080;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect11424"
+ width="1"
+ height="1"
+ x="3087"
+ y="-877.63782"
+ inkscape:tile-cx="381.5"
+ inkscape:tile-cy="972.49998"
+ inkscape:tile-w="1"
+ inkscape:tile-h="1"
+ inkscape:tile-x0="381"
+ inkscape:tile-y0="971.99998" />
+ <rect
+ inkscape:tile-y0="971.99998"
+ inkscape:tile-x0="381"
+ inkscape:tile-h="1"
+ inkscape:tile-w="1"
+ inkscape:tile-cy="972.49998"
+ inkscape:tile-cx="381.5"
+ y="-877.63782"
+ x="3082"
+ height="1"
+ width="4"
+ id="rect11426"
+ style="color:#000000;fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ style="color:#000000;fill:#808080;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect11418"
+ width="1"
+ height="1"
+ x="3087"
+ y="-874.63782"
+ inkscape:tile-cx="381.5"
+ inkscape:tile-cy="972.49998"
+ inkscape:tile-w="1"
+ inkscape:tile-h="1"
+ inkscape:tile-x0="381"
+ inkscape:tile-y0="971.99998" />
+ <rect
+ inkscape:tile-y0="971.99998"
+ inkscape:tile-x0="381"
+ inkscape:tile-h="1"
+ inkscape:tile-w="1"
+ inkscape:tile-cy="972.49998"
+ inkscape:tile-cx="381.5"
+ y="-874.63782"
+ x="3082"
+ height="1"
+ width="4"
+ id="rect11420"
+ style="color:#000000;fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ style="color:#000000;fill:#808080;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect11412"
+ width="1"
+ height="1"
+ x="3087"
+ y="-871.63782"
+ inkscape:tile-cx="381.5"
+ inkscape:tile-cy="972.49998"
+ inkscape:tile-w="1"
+ inkscape:tile-h="1"
+ inkscape:tile-x0="381"
+ inkscape:tile-y0="971.99998" />
+ <rect
+ inkscape:tile-y0="971.99998"
+ inkscape:tile-x0="381"
+ inkscape:tile-h="1"
+ inkscape:tile-w="1"
+ inkscape:tile-cy="972.49998"
+ inkscape:tile-cx="381.5"
+ y="-871.63782"
+ x="3082"
+ height="1"
+ width="4"
+ id="rect11414"
+ style="color:#000000;fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ style="color:#000000;fill:#808080;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect11406"
+ width="1"
+ height="1"
+ x="3087"
+ y="-868.63782"
+ inkscape:tile-cx="381.5"
+ inkscape:tile-cy="972.49998"
+ inkscape:tile-w="1"
+ inkscape:tile-h="1"
+ inkscape:tile-x0="381"
+ inkscape:tile-y0="971.99998" />
+ <rect
+ inkscape:tile-y0="971.99998"
+ inkscape:tile-x0="381"
+ inkscape:tile-h="1"
+ inkscape:tile-w="1"
+ inkscape:tile-cy="972.49998"
+ inkscape:tile-cx="381.5"
+ y="-868.63782"
+ x="3082"
+ height="1"
+ width="4"
+ id="rect11408"
+ style="color:#000000;fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ style="color:#000000;fill:#808080;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect11400"
+ width="1"
+ height="1"
+ x="3087"
+ y="-865.63782"
+ inkscape:tile-cx="381.5"
+ inkscape:tile-cy="972.49998"
+ inkscape:tile-w="1"
+ inkscape:tile-h="1"
+ inkscape:tile-x0="381"
+ inkscape:tile-y0="971.99998" />
+ <rect
+ inkscape:tile-y0="971.99998"
+ inkscape:tile-x0="381"
+ inkscape:tile-h="1"
+ inkscape:tile-w="1"
+ inkscape:tile-cy="972.49998"
+ inkscape:tile-cx="381.5"
+ y="-865.63782"
+ x="3082"
+ height="1"
+ width="4"
+ id="rect11402"
+ style="color:#000000;fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ style="color:#000000;fill:#808080;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect11394"
+ width="1"
+ height="1"
+ x="3087"
+ y="-862.63782"
+ inkscape:tile-cx="381.5"
+ inkscape:tile-cy="972.49998"
+ inkscape:tile-w="1"
+ inkscape:tile-h="1"
+ inkscape:tile-x0="381"
+ inkscape:tile-y0="971.99998" />
+ <rect
+ inkscape:tile-y0="971.99998"
+ inkscape:tile-x0="381"
+ inkscape:tile-h="1"
+ inkscape:tile-w="1"
+ inkscape:tile-cy="972.49998"
+ inkscape:tile-cx="381.5"
+ y="-862.63782"
+ x="3082"
+ height="1"
+ width="4"
+ id="rect11396"
+ style="color:#000000;fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ style="color:#000000;fill:#808080;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect11388"
+ width="1"
+ height="1"
+ x="3087"
+ y="-859.63782"
+ inkscape:tile-cx="381.5"
+ inkscape:tile-cy="972.49998"
+ inkscape:tile-w="1"
+ inkscape:tile-h="1"
+ inkscape:tile-x0="381"
+ inkscape:tile-y0="971.99998" />
+ <rect
+ inkscape:tile-y0="971.99998"
+ inkscape:tile-x0="381"
+ inkscape:tile-h="1"
+ inkscape:tile-w="1"
+ inkscape:tile-cy="972.49998"
+ inkscape:tile-cx="381.5"
+ y="-859.63782"
+ x="3082"
+ height="1"
+ width="4"
+ id="rect11390"
+ style="color:#000000;fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ style="color:#000000;fill:#808080;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect11382"
+ width="1"
+ height="1"
+ x="3087"
+ y="-856.63782"
+ inkscape:tile-cx="381.5"
+ inkscape:tile-cy="972.49998"
+ inkscape:tile-w="1"
+ inkscape:tile-h="1"
+ inkscape:tile-x0="381"
+ inkscape:tile-y0="971.99998" />
+ <rect
+ inkscape:tile-y0="971.99998"
+ inkscape:tile-x0="381"
+ inkscape:tile-h="1"
+ inkscape:tile-w="1"
+ inkscape:tile-cy="972.49998"
+ inkscape:tile-cx="381.5"
+ y="-856.63782"
+ x="3082"
+ height="1"
+ width="4"
+ id="rect11384"
+ style="color:#000000;fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ style="color:#000000;fill:#808080;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect11376"
+ width="1"
+ height="1"
+ x="3087"
+ y="-853.63782"
+ inkscape:tile-cx="381.5"
+ inkscape:tile-cy="972.49998"
+ inkscape:tile-w="1"
+ inkscape:tile-h="1"
+ inkscape:tile-x0="381"
+ inkscape:tile-y0="971.99998" />
+ <rect
+ inkscape:tile-y0="971.99998"
+ inkscape:tile-x0="381"
+ inkscape:tile-h="1"
+ inkscape:tile-w="1"
+ inkscape:tile-cy="972.49998"
+ inkscape:tile-cx="381.5"
+ y="-853.63782"
+ x="3082"
+ height="1"
+ width="4"
+ id="rect11378"
+ style="color:#000000;fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ inkscape:tile-y0="1071"
+ inkscape:tile-x0="381"
+ inkscape:tile-h="1"
+ inkscape:tile-w="3"
+ inkscape:tile-cy="1071.5"
+ inkscape:tile-cx="382.5"
+ y="-682.63782"
+ x="3079"
+ height="1"
+ width="3"
+ id="rect10966"
+ style="color:#000000;fill:#cccccc;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <g
+ transform="translate(2826,1.6925e-6)"
+ inkscape:tile-y0="1009"
+ inkscape:tile-x0="377"
+ inkscape:tile-h="2"
+ inkscape:tile-w="5"
+ inkscape:tile-cy="1010"
+ inkscape:tile-cx="379.5"
+ id="g10968">
+ <rect
+ inkscape:tile-y0="971.99998"
+ inkscape:tile-x0="381"
+ inkscape:tile-h="1"
+ inkscape:tile-w="1"
+ inkscape:tile-cy="972.49998"
+ inkscape:tile-cx="381.5"
+ y="-744.63782"
+ x="255"
+ height="2"
+ width="4"
+ id="rect10970"
+ style="color:#000000;fill:#cccccc;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ </g>
+ <use
+ height="1085"
+ width="5033"
+ id="use10972"
+ transform="translate(1305,4)"
+ xlink:href="#g25851"
+ inkscape:tiled-clone-of="#g25851"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ id="use10974"
+ transform="translate(1305,8)"
+ xlink:href="#g25851"
+ inkscape:tiled-clone-of="#g25851"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ id="use10976"
+ transform="translate(1305,12)"
+ xlink:href="#g25851"
+ inkscape:tiled-clone-of="#g25851"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ id="use10978"
+ transform="translate(1305,16)"
+ xlink:href="#g25851"
+ inkscape:tiled-clone-of="#g25851"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ id="use10980"
+ transform="translate(1305,20)"
+ xlink:href="#g25851"
+ inkscape:tiled-clone-of="#g25851"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ id="use10982"
+ transform="translate(1305,24)"
+ xlink:href="#g25851"
+ inkscape:tiled-clone-of="#g25851"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ id="use10984"
+ transform="translate(1305,2)"
+ xlink:href="#rect25331"
+ inkscape:tiled-clone-of="#rect25331"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ id="use10986"
+ transform="translate(1305,4)"
+ xlink:href="#rect25331"
+ inkscape:tiled-clone-of="#rect25331"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ id="use10988"
+ transform="translate(1305,6)"
+ xlink:href="#rect25331"
+ inkscape:tiled-clone-of="#rect25331"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ id="use10990"
+ transform="translate(1305,8)"
+ xlink:href="#rect25331"
+ inkscape:tiled-clone-of="#rect25331"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ id="use10992"
+ transform="translate(1305,10)"
+ xlink:href="#rect25331"
+ inkscape:tiled-clone-of="#rect25331"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(3142,0)"
+ id="use10994-0"
+ xlink:href="#g26069-2"
+ y="0"
+ x="0" />
+ <g
+ id="g10996-4"
+ inkscape:tile-cx="391.5"
+ inkscape:tile-cy="917"
+ inkscape:tile-w="7"
+ inkscape:tile-h="2"
+ inkscape:tile-x0="388"
+ inkscape:tile-y0="916"
+ transform="matrix(1.5,0,0,1,2699.5,-93)">
+ <rect
+ style="color:#000000;fill:#cccccc;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect10998-7"
+ width="4"
+ height="2"
+ x="255"
+ y="-744.63782"
+ inkscape:tile-cx="381.5"
+ inkscape:tile-cy="972.49998"
+ inkscape:tile-w="1"
+ inkscape:tile-h="1"
+ inkscape:tile-x0="381"
+ inkscape:tile-y0="971.99998" />
+ </g>
+ <use
+ height="1085"
+ width="5033"
+ id="use11000-8"
+ transform="translate(1305,4)"
+ xlink:href="#g26421-2"
+ inkscape:tiled-clone-of="#g26421-2"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ id="use11002-7"
+ transform="translate(1305,8)"
+ xlink:href="#g26421-2"
+ inkscape:tiled-clone-of="#g26421-2"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ id="use11004-8"
+ transform="translate(1305,12)"
+ xlink:href="#g26421-2"
+ inkscape:tiled-clone-of="#g26421-2"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ id="use11006-2"
+ transform="translate(1305,16)"
+ xlink:href="#g26421-2"
+ inkscape:tiled-clone-of="#g26421-2"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ id="use11008-7"
+ transform="translate(1305,20)"
+ xlink:href="#g26421-2"
+ inkscape:tiled-clone-of="#g26421-2"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ id="use11010-0"
+ transform="translate(1305,24)"
+ xlink:href="#g26421-2"
+ inkscape:tiled-clone-of="#g26421-2"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ id="use11012-6"
+ transform="translate(1305,28)"
+ xlink:href="#g26421-2"
+ inkscape:tiled-clone-of="#g26421-2"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ id="use11014-8"
+ transform="translate(1305,32)"
+ xlink:href="#g26421-2"
+ inkscape:tiled-clone-of="#g26421-2"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ id="use11016-2"
+ transform="translate(1305,36)"
+ xlink:href="#g26421-2"
+ inkscape:tiled-clone-of="#g26421-2"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ id="use11018"
+ transform="translate(1305,2)"
+ xlink:href="#rect16212"
+ inkscape:tiled-clone-of="#rect16212"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ id="use11020"
+ transform="translate(1305,4)"
+ xlink:href="#rect16212"
+ inkscape:tiled-clone-of="#rect16212"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ id="use11022"
+ transform="translate(1305,6)"
+ xlink:href="#rect16212"
+ inkscape:tiled-clone-of="#rect16212"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ id="use11024"
+ transform="translate(1305,8)"
+ xlink:href="#rect16212"
+ inkscape:tiled-clone-of="#rect16212"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ id="use11026"
+ transform="translate(1305,10)"
+ xlink:href="#rect16212"
+ inkscape:tiled-clone-of="#rect16212"
+ y="0"
+ x="0" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#g55134"
+ id="use55140"
+ transform="translate(266,0)"
+ width="5033"
+ height="1085" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(527,0)"
+ id="use55142"
+ xlink:href="#g55134"
+ y="0"
+ x="0" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#g55134"
+ id="use55144"
+ transform="translate(788.002,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#g55134"
+ id="use55146"
+ transform="translate(1049,0)"
+ width="5033"
+ height="1085" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(1310,0)"
+ id="use55148"
+ xlink:href="#g55134"
+ y="0"
+ x="0" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#g55134"
+ id="use55150"
+ transform="translate(1571,0)"
+ width="5033"
+ height="1085" />
+ <g
+ id="g55422">
+ <use
+ x="0"
+ y="0"
+ xlink:href="#g55134"
+ id="use55152"
+ transform="translate(1837,0)"
+ width="5033"
+ height="1085" />
+ <path
+ inkscape:tile-y0="731"
+ inkscape:tile-x0="479"
+ inkscape:tile-h="3"
+ inkscape:tile-w="3"
+ inkscape:tile-cy="732.5"
+ inkscape:tile-cx="480.5"
+ transform="matrix(0.603774,0,0,1.33333,1501.95,-1961.04)"
+ d="m 489.5,704.625 a 3.3125,1.5 0 1 1 -6.625,0 3.3125,1.5 0 1 1 6.625,0 z"
+ sodipodi:ry="1.5"
+ sodipodi:rx="3.3125"
+ sodipodi:cy="704.625"
+ sodipodi:cx="486.1875"
+ id="path55258"
+ style="opacity:0.25;color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ sodipodi:type="arc" />
+ <path
+ sodipodi:type="arc"
+ style="opacity:0.25;color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="path55262"
+ sodipodi:cx="486.1875"
+ sodipodi:cy="704.625"
+ sodipodi:rx="3.3125"
+ sodipodi:ry="1.5"
+ d="m 489.5,704.625 a 3.3125,1.5 0 1 1 -6.625,0 3.3125,1.5 0 1 1 6.625,0 z"
+ transform="matrix(0.45283,0,0,1,1575.34,-1726.16)"
+ inkscape:tile-cx="480.5"
+ inkscape:tile-cy="732.5"
+ inkscape:tile-w="3"
+ inkscape:tile-h="3"
+ inkscape:tile-x0="479"
+ inkscape:tile-y0="731" />
+ <path
+ style="color:#000000;fill:#999999;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ d="m 1799,-1023.6378 0,3 2,0 0,-3 -2,0 z m 0,5 0,3 2,0 0,-3 -2,0 z m 0,5 0,3 2,0 0,-3 -2,0 z m 0,5 0,3 2,0 0,-3 -2,0 z m 0,5 0,3 2,0 0,-3 -2,0 z m 0,5 0,3 2,0 0,-3 -2,0 z m 0,5 0,3 2,0 0,-3 -2,0 z m 0,5 0,3 2,0 0,-3 -2,0 z m 0,5 0,3 2,0 0,-3 -2,0 z m 0,5 0,3 2,0 0,-3 -2,0 z m 0,5 0,3 2,0 0,-3 -2,0 z m 0,5 0,3 2,0 0,-3 -2,0 z m 0,5 0,3 2,0 0,-3 -2,0 z m 0,5 0,3 2,0 0,-3 -2,0 z m 0,5 0,3 2,0 0,-3 -2,0 z m 0,5 0,3 2,0 0,-3 -2,0 z m 0,5 0,3 2,0 0,-3 -2,0 z m 0,5 0,3 2,0 0,-3 -2,0 z m 0,5 0,3 2,0 0,-3 -2,0 z m 0,5 0,3 2,0 0,-3 -2,0 z m 0,5 0,3 2,0 0,-3 -2,0 z m 0,5 0,3 2,0 0,-3 -2,0 z"
+ id="path55266"
+ inkscape:connector-curvature="0" />
+ <g
+ transform="translate(0,-1.89997)"
+ id="g55334">
+ <path
+ style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ d="m 1785.2427,-1021.8545 c 0.6839,-0.2199 2.1127,-0.7833 5.1284,-0.7833 3.0865,0 4.5633,0.6412 5.2911,0.8771 0.7328,0.2375 1.5584,0.586 1.2838,1.4767 -0.1991,0.6455 -0.7264,0.6347 -1.3812,0.3971 -0.6265,-0.2271 -2.1072,-0.7514 -5.1937,-0.7509 -3.0857,5e-4 -3.8664,0.3904 -4.7666,0.6631 -0.9162,0.2775 -1.3752,0.1938 -1.5663,-0.4873 -0.2147,-0.7655 0.5152,-1.1709 1.2045,-1.3925 z"
+ id="path55264"
+ sodipodi:nodetypes="zzzszszsz"
+ inkscape:connector-curvature="0" />
+ <path
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="zzzszszsz"
+ id="path55316"
+ d="m 1785.2427,-1019.8545 c 0.6839,-0.2199 2.1127,-0.7833 5.1284,-0.7833 3.0865,0 4.5633,0.6412 5.2911,0.8771 0.7328,0.2375 1.5584,0.586 1.2838,1.4767 -0.1991,0.6455 -0.7264,0.6347 -1.3812,0.3971 -0.6265,-0.2271 -2.1072,-0.7514 -5.1937,-0.7509 -3.0857,5e-4 -3.8664,0.3904 -4.7666,0.6631 -0.9162,0.2775 -1.3752,0.1938 -1.5663,-0.4873 -0.2147,-0.7655 0.5152,-1.1709 1.2045,-1.3925 z"
+ style="color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ </g>
+ <use
+ transform="translate(0,7)"
+ height="1085"
+ width="5033"
+ id="use55344"
+ xlink:href="#g55334"
+ y="0"
+ x="0" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#g55334"
+ id="use55346"
+ width="5033"
+ height="1085"
+ transform="translate(0,14)" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#g55334"
+ id="use55348"
+ width="5033"
+ height="1085"
+ transform="translate(0,21)" />
+ <use
+ transform="translate(0,28)"
+ height="1085"
+ width="5033"
+ id="use55350"
+ xlink:href="#g55334"
+ y="0"
+ x="0" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#g55334"
+ id="use55352"
+ width="5033"
+ height="1085"
+ transform="translate(0,35)" />
+ <use
+ transform="translate(0,42)"
+ height="1085"
+ width="5033"
+ id="use55354"
+ xlink:href="#g55334"
+ y="0"
+ x="0" />
+ <use
+ transform="translate(0,49)"
+ height="1085"
+ width="5033"
+ id="use55356"
+ xlink:href="#g55334"
+ y="0"
+ x="0" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#g55334"
+ id="use55358"
+ width="5033"
+ height="1085"
+ transform="translate(0,56)" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#g55334"
+ id="use55360"
+ width="5033"
+ height="1085"
+ transform="translate(0,63)" />
+ <use
+ transform="translate(0,70)"
+ height="1085"
+ width="5033"
+ id="use55362"
+ xlink:href="#g55334"
+ y="0"
+ x="0" />
+ <use
+ transform="translate(0,77)"
+ height="1085"
+ width="5033"
+ id="use55364"
+ xlink:href="#g55334"
+ y="0"
+ x="0" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#g55334"
+ id="use55366"
+ width="5033"
+ height="1085"
+ transform="translate(0,84)" />
+ <use
+ transform="translate(0,91)"
+ height="1085"
+ width="5033"
+ id="use55368"
+ xlink:href="#g55334"
+ y="0"
+ x="0" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#g55334"
+ id="use55370"
+ width="5033"
+ height="1085"
+ transform="translate(0,98)" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#g55334"
+ id="use55372"
+ width="5033"
+ height="1085"
+ transform="translate(0,105)" />
+ </g>
+ <use
+ x="0"
+ y="0"
+ xlink:href="#g55422"
+ id="use55446"
+ transform="translate(261,0)"
+ width="5033"
+ height="1085" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(522,0)"
+ id="use55448"
+ xlink:href="#g55422"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(782,0)"
+ id="use55450"
+ xlink:href="#g55422"
+ y="0"
+ x="0" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#g55422"
+ id="use55452"
+ transform="translate(1305,0)"
+ width="5033"
+ height="1085" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(3408,0)"
+ id="use55454"
+ xlink:href="#g55134"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(3669,0)"
+ id="use55456"
+ xlink:href="#g55134"
+ y="0"
+ x="0" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#g55134"
+ id="use55458"
+ transform="translate(3930,0)"
+ width="5033"
+ height="1085" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(4191,0)"
+ id="use55460"
+ xlink:href="#g55134"
+ y="0"
+ x="0" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#g55134"
+ id="use55462"
+ transform="translate(4458,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect15897"
+ id="use62739"
+ transform="translate(522,0)"
+ width="5033"
+ height="1085" />
+ </g>
+ <g
+ inkscape:groupmode="layer"
+ id="layer2"
+ inkscape:label="Size Placeholder Application Symbols"
+ style="display:none">
+ <rect
+ y="1075"
+ x="64"
+ height="7.0000172"
+ width="8"
+ id="rect26329"
+ style="opacity:0.85;color:#000000;fill:#d40000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect26329"
+ id="use22704"
+ transform="translate(0,-21)"
+ width="5033"
+ height="1085" />
+ <use
+ height="1085"
+ width="5033"
+ transform="matrix(2,0,0,2,-60,-1132)"
+ id="use22724"
+ xlink:href="#rect26329"
+ y="0"
+ x="0" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect26329"
+ id="use23536"
+ transform="matrix(2,0,0,2,-60,-1169)"
+ width="5033"
+ height="1085" />
+ <use
+ height="1085"
+ width="5033"
+ transform="matrix(3,0,0,3.14285,-120,-2449.56)"
+ id="use23574"
+ xlink:href="#rect26329"
+ y="0"
+ x="0" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect26329"
+ id="use23600"
+ transform="matrix(3,0,0,3.14285,-120,-2502.56)"
+ width="5033"
+ height="1085" />
+ <use
+ height="1085"
+ width="5033"
+ transform="matrix(8,0,0,7.99998,-421,-7834.98)"
+ id="use23622"
+ xlink:href="#rect26329"
+ y="0"
+ x="0" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect26329"
+ id="use23624"
+ transform="matrix(8,0,0,7.99998,-421,-7964.98)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect26329"
+ id="use23638"
+ transform="matrix(16,0,0,16,-902,-16788)"
+ width="5033"
+ height="1085" />
+ <use
+ height="1085"
+ width="5033"
+ transform="matrix(16,0,0,16,-902,-17049)"
+ id="use23640"
+ xlink:href="#rect26329"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(266,-21)"
+ id="use23648"
+ xlink:href="#rect26329"
+ y="0"
+ x="0" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect26329"
+ id="use23650"
+ transform="matrix(2,0,0,2,206,-1132)"
+ width="5033"
+ height="1085" />
+ <use
+ height="1085"
+ width="5033"
+ transform="matrix(2,0,0,2,206,-1169)"
+ id="use23652"
+ xlink:href="#rect26329"
+ y="0"
+ x="0" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect26329"
+ id="use23654"
+ transform="matrix(3,0,0,3.14285,146,-2449.56)"
+ width="5033"
+ height="1085" />
+ <use
+ height="1085"
+ width="5033"
+ transform="matrix(3,0,0,3.14285,146,-2502.56)"
+ id="use23656"
+ xlink:href="#rect26329"
+ y="0"
+ x="0" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect26329"
+ id="use23658"
+ transform="matrix(8,0,0,7.99998,-155,-7834.98)"
+ width="5033"
+ height="1085" />
+ <use
+ height="1085"
+ width="5033"
+ transform="matrix(8,0,0,7.99998,-155,-7964.98)"
+ id="use23660"
+ xlink:href="#rect26329"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="matrix(16,0,0,16,-636,-16788)"
+ id="use23662"
+ xlink:href="#rect26329"
+ y="0"
+ x="0" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect26329"
+ id="use23664"
+ transform="matrix(16,0,0,16,-636,-17049)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect26329"
+ id="use23690"
+ transform="translate(266,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect26329"
+ id="use23694"
+ transform="translate(527,-21)"
+ width="5033"
+ height="1085" />
+ <use
+ height="1085"
+ width="5033"
+ transform="matrix(2,0,0,2,467,-1132)"
+ id="use23696"
+ xlink:href="#rect26329"
+ y="0"
+ x="0" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect26329"
+ id="use23698"
+ transform="matrix(2,0,0,2,467,-1169)"
+ width="5033"
+ height="1085" />
+ <use
+ height="1085"
+ width="5033"
+ transform="matrix(3,0,0,3.14285,407,-2449.56)"
+ id="use23700"
+ xlink:href="#rect26329"
+ y="0"
+ x="0" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect26329"
+ id="use23702"
+ transform="matrix(3,0,0,3.14285,407,-2502.56)"
+ width="5033"
+ height="1085" />
+ <use
+ height="1085"
+ width="5033"
+ transform="matrix(8,0,0,7.99998,106,-7834.98)"
+ id="use23704"
+ xlink:href="#rect26329"
+ y="0"
+ x="0" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect26329"
+ id="use23706"
+ transform="matrix(8,0,0,7.99998,106,-7964.98)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect26329"
+ id="use23708"
+ transform="matrix(16,0,0,16,-375,-16788)"
+ width="5033"
+ height="1085" />
+ <use
+ height="1085"
+ width="5033"
+ transform="matrix(16,0,0,16,-375,-17049)"
+ id="use23710"
+ xlink:href="#rect26329"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(527,0)"
+ id="use23712"
+ xlink:href="#rect26329"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(788,-21)"
+ id="use23716"
+ xlink:href="#rect26329"
+ y="0"
+ x="0" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect26329"
+ id="use23718"
+ transform="matrix(2,0,0,2,728,-1132)"
+ width="5033"
+ height="1085" />
+ <use
+ height="1085"
+ width="5033"
+ transform="matrix(2,0,0,2,728,-1169)"
+ id="use23720"
+ xlink:href="#rect26329"
+ y="0"
+ x="0" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect26329"
+ id="use23722"
+ transform="matrix(3,0,0,3.14285,668,-2449.56)"
+ width="5033"
+ height="1085" />
+ <use
+ height="1085"
+ width="5033"
+ transform="matrix(3,0,0,3.14285,668,-2502.56)"
+ id="use23724"
+ xlink:href="#rect26329"
+ y="0"
+ x="0" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect26329"
+ id="use23726"
+ transform="matrix(8,0,0,7.99998,367,-7834.98)"
+ width="5033"
+ height="1085" />
+ <use
+ height="1085"
+ width="5033"
+ transform="matrix(8,0,0,7.99998,367,-7964.98)"
+ id="use23728"
+ xlink:href="#rect26329"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="matrix(16,0,0,16,-114,-16788)"
+ id="use23730"
+ xlink:href="#rect26329"
+ y="0"
+ x="0" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect26329"
+ id="use23732"
+ transform="matrix(16,0,0,16,-114,-17049)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect26329"
+ id="use23734"
+ transform="translate(788,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect26329"
+ id="use23738"
+ transform="translate(1049,-21)"
+ width="5033"
+ height="1085" />
+ <use
+ height="1085"
+ width="5033"
+ transform="matrix(2,0,0,2,989,-1132)"
+ id="use23740"
+ xlink:href="#rect26329"
+ y="0"
+ x="0" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect26329"
+ id="use23742"
+ transform="matrix(2,0,0,2,989,-1169)"
+ width="5033"
+ height="1085" />
+ <use
+ height="1085"
+ width="5033"
+ transform="matrix(3,0,0,3.14285,929,-2449.56)"
+ id="use23744"
+ xlink:href="#rect26329"
+ y="0"
+ x="0" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect26329"
+ id="use23746"
+ transform="matrix(3,0,0,3.14285,929,-2502.56)"
+ width="5033"
+ height="1085" />
+ <use
+ height="1085"
+ width="5033"
+ transform="matrix(8,0,0,7.99998,628,-7834.98)"
+ id="use23748"
+ xlink:href="#rect26329"
+ y="0"
+ x="0" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect26329"
+ id="use23750"
+ transform="matrix(8,0,0,7.99998,628,-7964.98)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect26329"
+ id="use23752"
+ transform="matrix(16,0,0,16,147,-16788)"
+ width="5033"
+ height="1085" />
+ <use
+ height="1085"
+ width="5033"
+ transform="matrix(16,0,0,16,147,-17049)"
+ id="use23754"
+ xlink:href="#rect26329"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(1049,0)"
+ id="use23756"
+ xlink:href="#rect26329"
+ y="0"
+ x="0" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect26329"
+ id="use23760"
+ transform="translate(1310,-21)"
+ width="5033"
+ height="1085" />
+ <use
+ height="1085"
+ width="5033"
+ transform="matrix(2,0,0,2,1250,-1132)"
+ id="use23762"
+ xlink:href="#rect26329"
+ y="0"
+ x="0" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect26329"
+ id="use23764"
+ transform="matrix(2,0,0,2,1250,-1169)"
+ width="5033"
+ height="1085" />
+ <use
+ height="1085"
+ width="5033"
+ transform="matrix(3,0,0,3.14285,1190,-2449.56)"
+ id="use23766"
+ xlink:href="#rect26329"
+ y="0"
+ x="0" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect26329"
+ id="use23768"
+ transform="matrix(3,0,0,3.14285,1190,-2502.56)"
+ width="5033"
+ height="1085" />
+ <use
+ height="1085"
+ width="5033"
+ transform="matrix(8,0,0,7.99998,889,-7834.98)"
+ id="use23770"
+ xlink:href="#rect26329"
+ y="0"
+ x="0" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect26329"
+ id="use23772"
+ transform="matrix(8,0,0,7.99998,889,-7964.98)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect26329"
+ id="use23774"
+ transform="matrix(16,0,0,16,408,-16788)"
+ width="5033"
+ height="1085" />
+ <use
+ height="1085"
+ width="5033"
+ transform="matrix(16,0,0,16,408,-17049)"
+ id="use23776"
+ xlink:href="#rect26329"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(1310,0)"
+ id="use23778"
+ xlink:href="#rect26329"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(1571,-21)"
+ id="use23780"
+ xlink:href="#rect26329"
+ y="0"
+ x="0" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect26329"
+ id="use23782"
+ transform="matrix(2,0,0,2,1511,-1132)"
+ width="5033"
+ height="1085" />
+ <use
+ height="1085"
+ width="5033"
+ transform="matrix(2,0,0,2,1511,-1169)"
+ id="use23784"
+ xlink:href="#rect26329"
+ y="0"
+ x="0" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect26329"
+ id="use23786"
+ transform="matrix(3,0,0,3.14285,1451,-2449.56)"
+ width="5033"
+ height="1085" />
+ <use
+ height="1085"
+ width="5033"
+ transform="matrix(3,0,0,3.14285,1451,-2502.56)"
+ id="use23788"
+ xlink:href="#rect26329"
+ y="0"
+ x="0" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect26329"
+ id="use23790"
+ transform="matrix(8,0,0,7.99998,1150,-7834.98)"
+ width="5033"
+ height="1085" />
+ <use
+ height="1085"
+ width="5033"
+ transform="matrix(8,0,0,7.99998,1150,-7964.98)"
+ id="use23792"
+ xlink:href="#rect26329"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="matrix(16,0,0,16,669,-16788)"
+ id="use23794"
+ xlink:href="#rect26329"
+ y="0"
+ x="0" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect26329"
+ id="use23796"
+ transform="matrix(16,0,0,16,669,-17049)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect26329"
+ id="use23798"
+ transform="translate(1571,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect26329"
+ id="use23810"
+ transform="translate(1837,-21)"
+ width="5033"
+ height="1085" />
+ <use
+ height="1085"
+ width="5033"
+ transform="matrix(2,0,0,2,1777,-1132)"
+ id="use23812"
+ xlink:href="#rect26329"
+ y="0"
+ x="0" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect26329"
+ id="use23814"
+ transform="matrix(2,0,0,2,1777,-1169)"
+ width="5033"
+ height="1085" />
+ <use
+ height="1085"
+ width="5033"
+ transform="matrix(3,0,0,3.14285,1717,-2449.56)"
+ id="use23816"
+ xlink:href="#rect26329"
+ y="0"
+ x="0" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect26329"
+ id="use23818"
+ transform="matrix(3,0,0,3.14285,1717,-2502.56)"
+ width="5033"
+ height="1085" />
+ <use
+ height="1085"
+ width="5033"
+ transform="matrix(8,0,0,7.99998,1416,-7834.98)"
+ id="use23820"
+ xlink:href="#rect26329"
+ y="0"
+ x="0" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect26329"
+ id="use23822"
+ transform="matrix(8,0,0,7.99998,1416,-7964.98)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect26329"
+ id="use23824"
+ transform="matrix(16,0,0,16,935,-16788)"
+ width="5033"
+ height="1085" />
+ <use
+ height="1085"
+ width="5033"
+ transform="matrix(16,0,0,16,935,-17049)"
+ id="use23826"
+ xlink:href="#rect26329"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(1837,0)"
+ id="use23828"
+ xlink:href="#rect26329"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(2098,-21)"
+ id="use23830"
+ xlink:href="#rect26329"
+ y="0"
+ x="0" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect26329"
+ id="use23832"
+ transform="matrix(2,0,0,2,2038,-1132)"
+ width="5033"
+ height="1085" />
+ <use
+ height="1085"
+ width="5033"
+ transform="matrix(2,0,0,2,2038,-1169)"
+ id="use23834"
+ xlink:href="#rect26329"
+ y="0"
+ x="0" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect26329"
+ id="use23836"
+ transform="matrix(3,0,0,3.14285,1978,-2449.56)"
+ width="5033"
+ height="1085" />
+ <use
+ height="1085"
+ width="5033"
+ transform="matrix(3,0,0,3.14285,1978,-2502.56)"
+ id="use23838"
+ xlink:href="#rect26329"
+ y="0"
+ x="0" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect26329"
+ id="use23840"
+ transform="matrix(8,0,0,7.99998,1677,-7834.98)"
+ width="5033"
+ height="1085" />
+ <use
+ height="1085"
+ width="5033"
+ transform="matrix(8,0,0,7.99998,1677,-7964.98)"
+ id="use23842"
+ xlink:href="#rect26329"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="matrix(16,0,0,16,1196,-16788)"
+ id="use23844"
+ xlink:href="#rect26329"
+ y="0"
+ x="0" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect26329"
+ id="use23846"
+ transform="matrix(16,0,0,16,1196,-17049)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect26329"
+ id="use23848"
+ transform="translate(2098,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect26329"
+ id="use23850"
+ transform="translate(2359,-21)"
+ width="5033"
+ height="1085" />
+ <use
+ height="1085"
+ width="5033"
+ transform="matrix(2,0,0,2,2299,-1132)"
+ id="use23852"
+ xlink:href="#rect26329"
+ y="0"
+ x="0" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect26329"
+ id="use23854"
+ transform="matrix(2,0,0,2,2299,-1169)"
+ width="5033"
+ height="1085" />
+ <use
+ height="1085"
+ width="5033"
+ transform="matrix(3,0,0,3.14285,2239,-2449.56)"
+ id="use23856"
+ xlink:href="#rect26329"
+ y="0"
+ x="0" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect26329"
+ id="use23858"
+ transform="matrix(3,0,0,3.14285,2239,-2502.56)"
+ width="5033"
+ height="1085" />
+ <use
+ height="1085"
+ width="5033"
+ transform="matrix(8,0,0,7.99998,1938,-7834.98)"
+ id="use23860"
+ xlink:href="#rect26329"
+ y="0"
+ x="0" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect26329"
+ id="use23862"
+ transform="matrix(8,0,0,7.99998,1938,-7964.98)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect26329"
+ id="use23864"
+ transform="matrix(16,0,0,16,1457,-16788)"
+ width="5033"
+ height="1085" />
+ <use
+ height="1085"
+ width="5033"
+ transform="matrix(16,0,0,16,1457,-17049)"
+ id="use23866"
+ xlink:href="#rect26329"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(2359,0)"
+ id="use23868"
+ xlink:href="#rect26329"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(2620,-21)"
+ id="use23870"
+ xlink:href="#rect26329"
+ y="0"
+ x="0" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect26329"
+ id="use23872"
+ transform="matrix(2,0,0,2,2560,-1132)"
+ width="5033"
+ height="1085" />
+ <use
+ height="1085"
+ width="5033"
+ transform="matrix(2,0,0,2,2560,-1169)"
+ id="use23874"
+ xlink:href="#rect26329"
+ y="0"
+ x="0" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect26329"
+ id="use23876"
+ transform="matrix(3,0,0,3.14285,2500,-2449.56)"
+ width="5033"
+ height="1085" />
+ <use
+ height="1085"
+ width="5033"
+ transform="matrix(3,0,0,3.14285,2500,-2502.56)"
+ id="use23878"
+ xlink:href="#rect26329"
+ y="0"
+ x="0" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect26329"
+ id="use23880"
+ transform="matrix(8,0,0,7.99998,2199,-7834.98)"
+ width="5033"
+ height="1085" />
+ <use
+ height="1085"
+ width="5033"
+ transform="matrix(8,0,0,7.99998,2199,-7964.98)"
+ id="use23882"
+ xlink:href="#rect26329"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="matrix(16,0,0,16,1718,-16788)"
+ id="use23884"
+ xlink:href="#rect26329"
+ y="0"
+ x="0" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect26329"
+ id="use23886"
+ transform="matrix(16,0,0,16,1718,-17049)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect26329"
+ id="use23888"
+ transform="translate(2620,0)"
+ width="5033"
+ height="1085" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(2881,-21)"
+ id="use23890"
+ xlink:href="#rect26329"
+ y="0"
+ x="0"
+ style="opacity:0.2" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect26329"
+ id="use23892"
+ transform="matrix(2,0,0,2,2821,-1132)"
+ width="5033"
+ height="1085"
+ style="opacity:0.2" />
+ <use
+ height="1085"
+ width="5033"
+ transform="matrix(2,0,0,2,2821,-1169)"
+ id="use23894"
+ xlink:href="#rect26329"
+ y="0"
+ x="0"
+ style="opacity:0.2" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect26329"
+ id="use23896"
+ transform="matrix(3,0,0,3.14285,2761,-2449.56)"
+ width="5033"
+ height="1085"
+ style="opacity:0.2" />
+ <use
+ height="1085"
+ width="5033"
+ transform="matrix(3,0,0,3.14285,2761,-2502.56)"
+ id="use23898"
+ xlink:href="#rect26329"
+ y="0"
+ x="0"
+ style="opacity:0.2" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect26329"
+ id="use23900"
+ transform="matrix(8,0,0,7.99998,2460,-7834.98)"
+ width="5033"
+ height="1085"
+ style="opacity:0.2" />
+ <use
+ height="1085"
+ width="5033"
+ transform="matrix(8,0,0,7.99998,2460,-7964.98)"
+ id="use23902"
+ xlink:href="#rect26329"
+ y="0"
+ x="0"
+ style="opacity:0.2" />
+ <use
+ height="1085"
+ width="5033"
+ transform="matrix(16,0,0,16,1979,-16788)"
+ id="use23904"
+ xlink:href="#rect26329"
+ y="0"
+ x="0"
+ style="opacity:0.2" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect26329"
+ id="use23906"
+ transform="matrix(16,0,0,16,1979,-17049)"
+ width="5033"
+ height="1085"
+ style="opacity:0.2" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect26329"
+ id="use23908"
+ transform="translate(2881,0)"
+ width="5033"
+ height="1085"
+ style="opacity:0.2" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect26329"
+ id="use23910"
+ transform="translate(3142,-21)"
+ width="5033"
+ height="1085" />
+ <use
+ height="1085"
+ width="5033"
+ transform="matrix(2,0,0,2,3082,-1132)"
+ id="use23912"
+ xlink:href="#rect26329"
+ y="0"
+ x="0" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect26329"
+ id="use23914"
+ transform="matrix(2,0,0,2,3082,-1169)"
+ width="5033"
+ height="1085" />
+ <use
+ height="1085"
+ width="5033"
+ transform="matrix(3,0,0,3.14285,3022,-2449.56)"
+ id="use23916"
+ xlink:href="#rect26329"
+ y="0"
+ x="0" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect26329"
+ id="use23918"
+ transform="matrix(3,0,0,3.14285,3022,-2502.56)"
+ width="5033"
+ height="1085" />
+ <use
+ height="1085"
+ width="5033"
+ transform="matrix(8,0,0,7.99998,2721,-7834.98)"
+ id="use23920"
+ xlink:href="#rect26329"
+ y="0"
+ x="0" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect26329"
+ id="use23922"
+ transform="matrix(8,0,0,7.99998,2721,-7964.98)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect26329"
+ id="use23924"
+ transform="matrix(16,0,0,16,2240,-16788)"
+ width="5033"
+ height="1085" />
+ <use
+ height="1085"
+ width="5033"
+ transform="matrix(16,0,0,16,2240,-17049)"
+ id="use23926"
+ xlink:href="#rect26329"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(3142,0)"
+ id="use23928"
+ xlink:href="#rect26329"
+ y="0"
+ x="0" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect26329"
+ id="use23932"
+ transform="translate(3408,-21)"
+ width="5033"
+ height="1085" />
+ <use
+ height="1085"
+ width="5033"
+ transform="matrix(2,0,0,2,3348,-1132)"
+ id="use23934"
+ xlink:href="#rect26329"
+ y="0"
+ x="0" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect26329"
+ id="use23936"
+ transform="matrix(2,0,0,2,3348,-1169)"
+ width="5033"
+ height="1085" />
+ <use
+ height="1085"
+ width="5033"
+ transform="matrix(3,0,0,3.14285,3288,-2449.56)"
+ id="use23938"
+ xlink:href="#rect26329"
+ y="0"
+ x="0" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect26329"
+ id="use23940"
+ transform="matrix(3,0,0,3.14285,3288,-2502.56)"
+ width="5033"
+ height="1085" />
+ <use
+ height="1085"
+ width="5033"
+ transform="matrix(8,0,0,7.99998,2987,-7834.98)"
+ id="use23942"
+ xlink:href="#rect26329"
+ y="0"
+ x="0" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect26329"
+ id="use23944"
+ transform="matrix(8,0,0,7.99998,2987,-7964.98)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect26329"
+ id="use23946"
+ transform="matrix(16,0,0,16,2506,-16788)"
+ width="5033"
+ height="1085" />
+ <use
+ height="1085"
+ width="5033"
+ transform="matrix(16,0,0,16,2506,-17049)"
+ id="use23948"
+ xlink:href="#rect26329"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(3408,0)"
+ id="use23950"
+ xlink:href="#rect26329"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(3669,-21)"
+ id="use23952"
+ xlink:href="#rect26329"
+ y="0"
+ x="0" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect26329"
+ id="use23954"
+ transform="matrix(2,0,0,2,3609,-1132)"
+ width="5033"
+ height="1085" />
+ <use
+ height="1085"
+ width="5033"
+ transform="matrix(2,0,0,2,3609,-1169)"
+ id="use23956"
+ xlink:href="#rect26329"
+ y="0"
+ x="0" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect26329"
+ id="use23958"
+ transform="matrix(3,0,0,3.14285,3549,-2449.56)"
+ width="5033"
+ height="1085" />
+ <use
+ height="1085"
+ width="5033"
+ transform="matrix(3,0,0,3.14285,3549,-2502.56)"
+ id="use23960"
+ xlink:href="#rect26329"
+ y="0"
+ x="0" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect26329"
+ id="use23962"
+ transform="matrix(8,0,0,7.99998,3248,-7834.98)"
+ width="5033"
+ height="1085" />
+ <use
+ height="1085"
+ width="5033"
+ transform="matrix(8,0,0,7.99998,3248,-7964.98)"
+ id="use23964"
+ xlink:href="#rect26329"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="matrix(16,0,0,16,2767,-16788)"
+ id="use23966"
+ xlink:href="#rect26329"
+ y="0"
+ x="0" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect26329"
+ id="use23968"
+ transform="matrix(16,0,0,16,2767,-17049)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect26329"
+ id="use23970"
+ transform="translate(3669,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect26329"
+ id="use23972"
+ transform="translate(3930,-21)"
+ width="5033"
+ height="1085" />
+ <use
+ height="1085"
+ width="5033"
+ transform="matrix(2,0,0,2,3870,-1132)"
+ id="use23974"
+ xlink:href="#rect26329"
+ y="0"
+ x="0" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect26329"
+ id="use23976"
+ transform="matrix(2,0,0,2,3870,-1169)"
+ width="5033"
+ height="1085" />
+ <use
+ height="1085"
+ width="5033"
+ transform="matrix(3,0,0,3.14285,3810,-2449.56)"
+ id="use23978"
+ xlink:href="#rect26329"
+ y="0"
+ x="0" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect26329"
+ id="use23980"
+ transform="matrix(3,0,0,3.14285,3810,-2502.56)"
+ width="5033"
+ height="1085" />
+ <use
+ height="1085"
+ width="5033"
+ transform="matrix(8,0,0,7.99998,3509,-7834.98)"
+ id="use23982"
+ xlink:href="#rect26329"
+ y="0"
+ x="0" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect26329"
+ id="use23984"
+ transform="matrix(8,0,0,7.99998,3509,-7964.98)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect26329"
+ id="use23986"
+ transform="matrix(16,0,0,16,3028,-16788)"
+ width="5033"
+ height="1085" />
+ <use
+ height="1085"
+ width="5033"
+ transform="matrix(16,0,0,16,3028,-17049)"
+ id="use23988"
+ xlink:href="#rect26329"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(3930,0)"
+ id="use23990"
+ xlink:href="#rect26329"
+ y="0"
+ x="0" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect26329"
+ id="use23992"
+ transform="translate(4191,-21)"
+ width="5033"
+ height="1085" />
+ <use
+ height="1085"
+ width="5033"
+ transform="matrix(2,0,0,2,4131,-1132)"
+ id="use23994"
+ xlink:href="#rect26329"
+ y="0"
+ x="0" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect26329"
+ id="use23996"
+ transform="matrix(2,0,0,2,4131,-1169)"
+ width="5033"
+ height="1085" />
+ <use
+ height="1085"
+ width="5033"
+ transform="matrix(3,0,0,3.14285,4071,-2449.56)"
+ id="use23998"
+ xlink:href="#rect26329"
+ y="0"
+ x="0" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect26329"
+ id="use24000"
+ transform="matrix(3,0,0,3.14285,4071,-2502.56)"
+ width="5033"
+ height="1085" />
+ <use
+ height="1085"
+ width="5033"
+ transform="matrix(8,0,0,7.99998,3770,-7834.98)"
+ id="use24002"
+ xlink:href="#rect26329"
+ y="0"
+ x="0" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect26329"
+ id="use24004"
+ transform="matrix(8,0,0,7.99998,3770,-7964.98)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect26329"
+ id="use24006"
+ transform="matrix(16,0,0,16,3289,-16788)"
+ width="5033"
+ height="1085" />
+ <use
+ height="1085"
+ width="5033"
+ transform="matrix(16,0,0,16,3289,-17049)"
+ id="use24008"
+ xlink:href="#rect26329"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(4191,0)"
+ id="use24010"
+ xlink:href="#rect26329"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(4457,-21)"
+ id="use24012"
+ xlink:href="#rect26329"
+ y="0"
+ x="0" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect26329"
+ id="use24014"
+ transform="matrix(2,0,0,2,4397,-1132)"
+ width="5033"
+ height="1085" />
+ <use
+ height="1085"
+ width="5033"
+ transform="matrix(2,0,0,2,4397,-1169)"
+ id="use24016"
+ xlink:href="#rect26329"
+ y="0"
+ x="0" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect26329"
+ id="use24018"
+ transform="matrix(3,0,0,3.14285,4337,-2449.56)"
+ width="5033"
+ height="1085" />
+ <use
+ height="1085"
+ width="5033"
+ transform="matrix(3,0,0,3.14285,4337,-2502.56)"
+ id="use24020"
+ xlink:href="#rect26329"
+ y="0"
+ x="0" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect26329"
+ id="use24022"
+ transform="matrix(8,0,0,7.99998,4036,-7834.98)"
+ width="5033"
+ height="1085" />
+ <use
+ height="1085"
+ width="5033"
+ transform="matrix(8,0,0,7.99998,4036,-7964.98)"
+ id="use24024"
+ xlink:href="#rect26329"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="matrix(16,0,0,16,3555,-16788)"
+ id="use24026"
+ xlink:href="#rect26329"
+ y="0"
+ x="0" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect26329"
+ id="use24028"
+ transform="matrix(16,0,0,16,3555,-17049)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect26329"
+ id="use24030"
+ transform="translate(4457,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect26329"
+ id="use24034"
+ transform="translate(4717,-21)"
+ width="5033"
+ height="1085" />
+ <use
+ height="1085"
+ width="5033"
+ transform="matrix(2,0,0,2,4657,-1132)"
+ id="use24036"
+ xlink:href="#rect26329"
+ y="0"
+ x="0" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect26329"
+ id="use24038"
+ transform="matrix(2,0,0,2,4657,-1169)"
+ width="5033"
+ height="1085" />
+ <use
+ height="1085"
+ width="5033"
+ transform="matrix(3,0,0,3.14285,4597,-2449.56)"
+ id="use24040"
+ xlink:href="#rect26329"
+ y="0"
+ x="0" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect26329"
+ id="use24042"
+ transform="matrix(3,0,0,3.14285,4597,-2502.56)"
+ width="5033"
+ height="1085" />
+ <use
+ height="1085"
+ width="5033"
+ transform="matrix(8,0,0,7.99998,4296,-7834.98)"
+ id="use24044"
+ xlink:href="#rect26329"
+ y="0"
+ x="0"
+ style="opacity:0.2" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect26329"
+ id="use24046"
+ transform="matrix(8,0,0,7.99998,4296,-7964.98)"
+ width="5033"
+ height="1085"
+ style="opacity:0.2" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect26329"
+ id="use24048"
+ transform="matrix(16,0,0,16,3815,-16788)"
+ width="5033"
+ height="1085"
+ style="opacity:0.2" />
+ <use
+ height="1085"
+ width="5033"
+ transform="matrix(16,0,0,16,3815,-17049)"
+ id="use24050"
+ xlink:href="#rect26329"
+ y="0"
+ x="0"
+ style="opacity:0.2" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(4717,0)"
+ id="use24052"
+ xlink:href="#rect26329"
+ y="0"
+ x="0" />
+ </g>
+ <g
+ style="display:inline"
+ id="layer1"
+ inkscape:groupmode="layer"
+ inkscape:label="Foreground Application Symbols"
+ transform="translate(123,1753.64)">
+ <rect
+ transform="scale(-1,-1)"
+ y="1063.6378"
+ x="-4488"
+ height="3"
+ width="43"
+ id="rect19951"
+ style="opacity:0.1;color:#000000;fill:url(#linearGradient19953) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ <use
+ style="opacity:0.5"
+ height="1085"
+ width="5033"
+ id="use19842"
+ xlink:href="#rect19832"
+ y="0"
+ x="0"
+ transform="matrix(0.976828,0,0,1,103.896,-1.00857)" />
+ <rect
+ transform="scale(-1,-1)"
+ y="1063.6464"
+ x="-4484"
+ height="1.0085688"
+ width="59"
+ id="rect19832"
+ style="opacity:0.5;color:#000000;fill:url(#linearGradient20089) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect19832"
+ id="use19836"
+ width="5033"
+ height="1085"
+ transform="matrix(0.976828,0,0,1,103.896,1.00857)"
+ style="opacity:0.5" />
+ <path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:url(#linearGradient20069) #000000;fill-opacity:1;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono"
+ d="m 4450.25,-1118.6378 c -1.5569,0 -2.2569,1.3075 -2.25,2.25 l 0,43.5 c 2e-4,1.5705 0.6793,2.2498 2.25,2.25 l 34.5,0 c 1.5707,-2e-4 2.2499,-0.6795 2.25,-2.25 l 0,-26.9375 c 0.018,-0.792 -0.2926,-1.5871 -0.8438,-2.1563 l -15.8124,-15.8125 c -0.5694,-0.551 -1.3641,-0.862 -2.1563,-0.8437 z m 26.2969,0.031 c -0.9985,0.3198 -1.3322,1.8163 -0.5625,2.5312 l 8.4844,8.4532 c 0.8347,0.7957 2.4871,0.1244 2.5312,-1.0313 l 0,-8.4531 c -2e-4,-0.7927 -0.7114,-1.4999 -1.5,-1.5 l -8.4844,0 c -0.1557,-0.024 -0.3131,-0.024 -0.4687,0 z"
+ id="path19584"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="scccccccccscccccccc" />
+ <path
+ inkscape:connector-curvature="0"
+ id="path20018"
+ d="m 4451,-1096.6378 -3,0 0,-11 3,0 0,11 z"
+ style="opacity:0.25;color:#000000;fill:url(#linearGradient20022) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <path
+ style="opacity:0.35;color:#000000;fill:url(#linearGradient20008) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible"
+ d="m 4460.0525,-1073.6378 0,3 11.6763,0 0,-3 -11.6763,0 z"
+ id="rect19989"
+ inkscape:connector-curvature="0" />
+ <path
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cccccccccccccccc"
+ id="path19892"
+ d="m 4451,-1115.6378 0,0.7241 0,40.5518 0,0.7241 0.7174,0 31.5652,0 0.7174,0 0,-0.7241 0,-25.3449 0,-0.3169 -0.2242,-0.2262 -14.9755,-15.2069 -0.1794,-0.181 -0.3138,0 -16.5897,0 -0.7174,0 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono" />
+ <rect
+ y="-1109.6355"
+ x="4187"
+ height="2"
+ width="12"
+ id="rect19162"
+ style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ y="-1117.6355"
+ x="4159"
+ height="2"
+ width="6"
+ id="rect19164"
+ style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ y="-1117.6355"
+ x="4167"
+ height="2"
+ width="22"
+ id="rect19166"
+ style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ y="-1117.6355"
+ x="4191"
+ height="2"
+ width="6"
+ id="rect19168"
+ style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ y="-1113.6355"
+ x="4159"
+ height="2"
+ width="6"
+ id="rect19170"
+ style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ y="-1113.6355"
+ x="4167"
+ height="2"
+ width="4"
+ id="rect19172"
+ style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ y="-1113.6355"
+ x="4173"
+ height="2"
+ width="4"
+ id="rect19174"
+ style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ y="-1113.6355"
+ x="4179"
+ height="2"
+ width="12"
+ id="rect19176"
+ style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ y="-1109.6355"
+ x="4159"
+ height="2"
+ width="6"
+ id="rect19178"
+ style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ y="-1109.6355"
+ x="4167"
+ height="2"
+ width="12"
+ id="rect19180"
+ style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ y="-1109.6355"
+ x="4181"
+ height="2"
+ width="4"
+ id="rect19182"
+ style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ y="-1105.6355"
+ x="4167"
+ height="2"
+ width="12"
+ id="rect19184"
+ style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ y="-1093.6355"
+ x="4175"
+ height="2"
+ width="8"
+ id="rect19186"
+ style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ y="-1097.6355"
+ x="4179"
+ height="2"
+ width="2"
+ id="rect19188"
+ style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ y="-1105.6355"
+ x="4185"
+ height="2"
+ width="4"
+ id="rect19190"
+ style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ y="-1101.6355"
+ x="4167"
+ height="2"
+ width="4"
+ id="rect19192"
+ style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ y="-1101.6355"
+ x="4173"
+ height="2"
+ width="8"
+ id="rect19194"
+ style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ y="-1101.6355"
+ x="4183"
+ height="2"
+ width="8"
+ id="rect19196"
+ style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ y="-1101.6355"
+ x="4203"
+ height="2"
+ width="5.8000002"
+ id="rect19198"
+ style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ y="-1097.6355"
+ x="4167"
+ height="2"
+ width="6"
+ id="rect19200"
+ style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ y="-1097.6355"
+ x="4175"
+ height="2"
+ width="2"
+ id="rect19202"
+ style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ y="-1097.6355"
+ x="4189"
+ height="2"
+ width="2"
+ id="rect19204"
+ style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ y="-1097.6355"
+ x="4183"
+ height="2"
+ width="4"
+ id="rect19206"
+ style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ y="-1105.6355"
+ x="4181"
+ height="2"
+ width="2"
+ id="rect19208"
+ style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ y="-1093.6377"
+ x="4185"
+ height="2"
+ width="2"
+ id="rect19210"
+ style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ y="-1089.6355"
+ x="4175"
+ height="2"
+ width="8"
+ id="rect19212"
+ style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ y="-1093.6355"
+ x="4215"
+ height="2"
+ width="8"
+ id="rect19214"
+ style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ y="-1089.6355"
+ x="4221"
+ height="2"
+ width="2"
+ id="rect19216"
+ style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ y="-1089.6355"
+ x="4219"
+ height="2"
+ width="2"
+ id="rect19218"
+ style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ y="-1089.6355"
+ x="4213"
+ height="2"
+ width="4"
+ id="rect19220"
+ style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ y="-1085.6355"
+ x="4167"
+ height="2"
+ width="8"
+ id="rect19222"
+ style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ y="-1085.6355"
+ x="4177"
+ height="2"
+ width="2"
+ id="rect19224"
+ style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ y="-1081.6355"
+ x="4167"
+ height="2"
+ width="2"
+ id="rect19226"
+ style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ y="-1081.6355"
+ x="4175"
+ height="2"
+ width="2"
+ id="rect19228"
+ style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ y="-1081.6355"
+ x="4171"
+ height="2"
+ width="2"
+ id="rect19230"
+ style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ y="-1081.6355"
+ x="4179"
+ height="2"
+ width="4"
+ id="rect19232"
+ style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ y="-1077.6355"
+ x="4175"
+ height="2"
+ width="8"
+ id="rect19234"
+ style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ y="-1077.6355"
+ x="4185"
+ height="2"
+ width="2"
+ id="rect19236"
+ style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ y="-1073.6355"
+ x="4175"
+ height="2"
+ width="8"
+ id="rect19238"
+ style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ y="-1073.6355"
+ x="4185"
+ height="2"
+ width="2"
+ id="rect19240"
+ style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ y="-1069.6355"
+ x="4167"
+ height="2"
+ width="4"
+ id="rect19242"
+ style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ y="-1069.6355"
+ x="4173"
+ height="2"
+ width="2"
+ id="rect19244"
+ style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ y="-1065.6355"
+ x="4159"
+ height="2"
+ width="4"
+ id="rect19246"
+ style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ y="-1065.6355"
+ x="4165"
+ height="2"
+ width="4"
+ id="rect19248"
+ style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect19250"
+ width="6"
+ height="2"
+ x="4183"
+ y="-1069.6355" />
+ <rect
+ style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect19252"
+ width="4"
+ height="2"
+ x="4177"
+ y="-1069.6355" />
+ <rect
+ y="-1069.6355"
+ x="4213"
+ height="2"
+ width="6"
+ id="rect19254"
+ style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ y="-1069.6355"
+ x="4207"
+ height="2"
+ width="4"
+ id="rect19256"
+ style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <g
+ style="display:inline"
+ id="g12124-2"
+ transform="translate(593.459,-184.885)" />
+ <text
+ xml:space="preserve"
+ style="font-size:8px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+ x="-54.7188"
+ y="-465.655"
+ id="text5056"><tspan
+ sodipodi:role="line"
+ id="tspan5058"
+ x="-54.7188"
+ y="-465.655">Dokument-Symbol:</tspan><tspan
+ sodipodi:role="line"
+ x="-54.7188"
+ y="-455.655"
+ id="tspan5066">- Hauptprogramm</tspan><tspan
+ sodipodi:role="line"
+ x="-54.7188"
+ y="-445.655"
+ id="tspan5072">- Dokument (farbig)</tspan><tspan
+ sodipodi:role="line"
+ x="-54.7188"
+ y="-435.655"
+ id="tspan5070">- Template (teilweise farbig, Ringlochung)</tspan><tspan
+ sodipodi:role="line"
+ x="-54.7188"
+ y="-425.655"
+ id="tspan5074" /><tspan
+ sodipodi:role="line"
+ x="-54.7188"
+ y="-415.655"
+ id="tspan5076">Applikations-Symbol:</tspan><tspan
+ sodipodi:role="line"
+ x="-54.7188"
+ y="-405.655"
+ id="tspan5078">- Abhängig von Applikation bzw. Dokument-Typ</tspan><tspan
+ sodipodi:role="line"
+ x="-54.7188"
+ y="-395.655"
+ id="tspan5062" /><tspan
+ sodipodi:role="line"
+ x="-54.7188"
+ y="-385.655"
+ id="tspan5060">Zusatz-Informationen: keine</tspan><tspan
+ sodipodi:role="line"
+ x="-54.7188"
+ y="-375.655"
+ id="tspan6484" /><tspan
+ sodipodi:role="line"
+ x="-54.7188"
+ y="-365.655"
+ id="tspan6486" /><tspan
+ sodipodi:role="line"
+ x="-54.7188"
+ y="-355.655"
+ id="tspan6488">Besonderheit:</tspan><tspan
+ sodipodi:role="line"
+ x="-54.7188"
+ y="-345.655"
+ id="tspan6490">16px kleine Symbole haben A150 Hintergrund, damit blauer Hintergrund besser durchscheint ---&gt; Feedback von Ivan 2011-01-06</tspan></text>
+ <g
+ id="g7586"
+ style="fill:url(#linearGradient7824) #000000" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#g7586"
+ id="use8172"
+ transform="translate(1571,0)"
+ width="5033"
+ height="1085"
+ style="opacity:0.75" />
+ <text
+ id="text6433"
+ y="-1109.14"
+ x="382.125"
+ style="font-size:8px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+ xml:space="preserve"><tspan
+ y="-1109.14"
+ x="382.125"
+ id="tspan6435"
+ sodipodi:role="line" /></text>
+ <g
+ id="g8881">
+ <path
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ id="rect10980"
+ d="m 1278,-1118.6378 0,3 14,0 0,-3 -14,0 z m 16,0 0,3 15,0 0,-3 -15,0 z m 17,0 0,3 15,0 0,-3 -15,0 z m 17,0 0,3 14,0 0,-3 -14,0 z m -50,5 0,4 14,0 0,-4 -14,0 z m 16,0 0,4 15,0 0,-4 -15,0 z m 17,0 0,4 15,0 0,-4 -15,0 z m 17,0 0,4 14,0 0,-4 -14,0 z m -50,6 0,4 14,0 0,-4 -14,0 z m 16,0 0,4 15,0 0,-4 -15,0 z m 17,0 0,4 15,0 0,-4 -15,0 z m 17,0 0,4 14,0 0,-4 -14,0 z m -50,6 0,4 14,0 0,-4 -14,0 z m 16,0 0,4 15,0 0,-4 -15,0 z m 17,0 0,4 15,0 0,-4 -15,0 z m 17,0 0,4 14,0 0,-4 -14,0 z m -50,6 0,4 14,0 0,-4 -14,0 z m 16,0 0,4 15,0 0,-4 -15,0 z m 17,0 0,4 15,0 0,-4 -15,0 z m 17,0 0,4 14,0 0,-4 -14,0 z m -50,6 0,4 14,0 0,-4 -14,0 z m 16,0 0,4 15,0 0,-4 -15,0 z m 17,0 0,4 15,0 0,-4 -15,0 z m 17,0 0,4 14,0 0,-4 -14,0 z m -50,6 0,4 14,0 0,-4 -14,0 z m 16,0 0,4 15,0 0,-4 -15,0 z m 17,0 0,4 15,0 0,-4 -15,0 z m 17,0 0,4 14,0 0,-4 -14,0 z m -50,6 0,4 14,0 0,-4 -14,0 z m 16,0 0,4 15,0 0,-4 -15,0 z m 17,0 0,4 15,0 0,-4 -15,0 z m 17,0 0,4 14,0 0,-4 -14,0 z m -50,6 0,4 14,0 0,-4 -14,0 z m 16,0 0,4 15,0 0,-4 -15,0 z m 17,0 0,4 15,0 0,-4 -15,0 z m 17,0 0,4 14,0 0,-4 -14,0 z m -50,6 0,3 14,0 0,-3 -14,0 z m 16,0 0,3 15,0 0,-3 -15,0 z m 17,0 0,3 15,0 0,-3 -15,0 z m 17,0 0,3 14,0 0,-3 -14,0 z"
+ style="color:#000000;fill:url(#linearGradient16102) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible"
+ inkscape:connector-curvature="0" />
+ <path
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ inkscape:connector-curvature="0"
+ id="path16158"
+ transform="translate(-123,-1753.64)"
+ d="m 1401,635 0,1 14,0 0,-1 -14,0 z m 16,0 0,1 15,0 0,-1 -15,0 z m 17,0 0,1 15,0 0,-1 -15,0 z m 17,0 0,1 14,0 0,-1 -14,0 z m -50,5 0,1 14,0 0,-1 -14,0 z m 16,0 0,1 15,0 0,-1 -15,0 z m 17,0 0,1 15,0 0,-1 -15,0 z m 17,0 0,1 14,0 0,-1 -14,0 z m -50,6 0,1 14,0 0,-1 -14,0 z m 16,0 0,1 15,0 0,-1 -15,0 z m 17,0 0,1 15,0 0,-1 -15,0 z m 17,0 0,1 14,0 0,-1 -14,0 z m -50,6 0,1 14,0 0,-1 -14,0 z m 16,0 0,1 15,0 0,-1 -15,0 z m 17,0 0,1 15,0 0,-1 -15,0 z m 17,0 0,1 14,0 0,-1 -14,0 z m -50,6 0,1 14,0 0,-1 -14,0 z m 16,0 0,1 15,0 0,-1 -15,0 z m 17,0 0,1 15,0 0,-1 -15,0 z m 17,0 0,1 14,0 0,-1 -14,0 z m -50,6 0,1 14,0 0,-1 -14,0 z m 16,0 0,1 15,0 0,-1 -15,0 z m 17,0 0,1 15,0 0,-1 -15,0 z m 17,0 0,1 14,0 0,-1 -14,0 z m -50,6 0,1 14,0 0,-1 -14,0 z m 16,0 0,1 15,0 0,-1 -15,0 z m 17,0 0,1 15,0 0,-1 -15,0 z m 17,0 0,1 14,0 0,-1 -14,0 z m -50,6 0,1 14,0 0,-1 -14,0 z m 16,0 0,1 15,0 0,-1 -15,0 z m 17,0 0,1 15,0 0,-1 -15,0 z m 17,0 0,1 14,0 0,-1 -14,0 z m -50,6 0,1 14,0 0,-1 -14,0 z m 16,0 0,1 15,0 0,-1 -15,0 z m 17,0 0,1 15,0 0,-1 -15,0 z m 17,0 0,1 14,0 0,-1 -14,0 z m -50,6 0,1 14,0 0,-1 -14,0 z m 16,0 0,1 15,0 0,-1 -15,0 z m 17,0 0,1 15,0 0,-1 -15,0 z m 17,0 0,1 14,0 0,-1 -14,0 z"
+ style="opacity:0.25;color:#000000;fill:#800080;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <path
+ sodipodi:nodetypes="sscccsccsscccccssccsccscccccscccsccccsscscsscccccsscccsscscsscccccsscccsscscssccc"
+ inkscape:connector-curvature="0"
+ id="path14199"
+ d="m 1310,-1111.6691 c -6.6937,0 -12.762,0.7304 -17.2188,1.9375 -2.2282,0.6036 -4.0271,1.2932 -5.375,2.1563 -1.3477,0.863 -2.4062,1.9891 -2.4062,3.4375 -0.062,8.7636 2e-4,17.6812 2e-4,26.5 l 0,0.5 c 0,1.3963 0.9899,2.5081 2.3438,3.375 1.3536,0.8669 3.2039,1.5826 5.4374,2.1875 4.4672,1.2098 10.5182,1.9375 17.2188,1.9375 6.7006,0 12.7517,-0.7277 17.2188,-1.9375 2.2335,-0.6049 4.0837,-1.3206 5.4374,-2.1875 1.3539,-0.8669 2.3438,-1.9787 2.3438,-3.375 l 0,-27 c 0,-1.3529 -1.3173,-2.7252 -2.406,-3.4375 -1.3478,-0.8631 -3.1466,-1.5527 -5.375,-2.1563 -4.4568,-1.2071 -10.5251,-1.9375 -17.2188,-1.9375 z m 0,2.0625 c 6.5612,0 12.5205,0.7295 16.75,1.875 2.1148,0.5728 3.7938,1.2452 4.875,1.9375 1.0811,0.6924 1.4062,1.3098 1.4062,1.6563 0,0.3465 -0.3251,0.9639 -1.4062,1.6562 -1.0812,0.6924 -2.7602,1.3648 -4.875,1.9375 -4.2295,1.1456 -10.1888,1.875 -16.75,1.875 -6.5611,0 -12.5205,-0.7294 -16.75,-1.875 -2.1148,-0.5727 -3.7939,-1.2451 -4.875,-1.9375 -1.0812,-0.6923 -1.4063,-1.3097 -1.4062,-1.6562 0,-0.3465 0.325,-0.9639 1.4062,-1.6563 1.0811,-0.6923 2.7602,-1.3647 4.875,-1.9375 4.2295,-1.1455 10.1889,-1.875 16.75,-1.875 z m -23,8.5938 c 0.1377,0.1 0.2601,0.2189 0.4062,0.3125 1.3479,0.863 3.1467,1.5527 5.375,2.1562 4.4568,1.207 10.5251,1.9375 17.2188,1.9375 6.6937,0 12.762,-0.7305 17.2188,-1.9375 2.2283,-0.6035 4.0272,-1.2932 5.375,-2.1562 0.1461,-0.094 0.2685,-0.2128 0.4062,-0.3125 l 0,5.375 0,0.5 c 0,0.3986 -0.3624,0.9991 -1.4375,1.6875 -1.0751,0.6884 -2.7341,1.3661 -4.8437,1.9375 -4.2193,1.1427 -10.1646,1.875 -16.7188,1.875 -6.5542,0 -12.4994,-0.7323 -16.7188,-1.875 -2.1096,-0.5714 -3.7686,-1.2491 -4.8437,-1.9375 -1.0751,-0.6884 -1.4375,-1.2889 -1.4375,-1.6875 l 0,-0.5 z m 0,9 c 0.1172,0.083 0.22,0.1708 0.3438,0.25 1.3536,0.8669 3.2039,1.5826 5.4374,2.1875 4.4672,1.2098 10.5182,1.9375 17.2188,1.9375 6.7006,0 12.7517,-0.7277 17.2188,-1.9375 2.2335,-0.6049 4.0837,-1.3206 5.4374,-2.1875 0.1238,-0.079 0.2266,-0.1666 0.3438,-0.25 l 0,5.375 0,0.5 c 0,0.3986 -0.3624,0.9991 -1.4375,1.6875 -1.0751,0.6884 -2.7341,1.3661 -4.8437,1.9375 -4.2193,1.1427 -10.1646,1.875 -16.7188,1.875 -6.5542,0 -12.4994,-0.7323 -16.7188,-1.875 -2.1096,-0.5714 -3.7686,-1.2491 -4.8437,-1.9375 -1.0751,-0.6884 -1.4375,-1.2889 -1.4375,-1.6875 l 0,-0.5 z m 0,9 c 0.1172,0.083 0.22,0.1708 0.3438,0.25 1.3536,0.8669 3.2039,1.5826 5.4374,2.1875 4.4672,1.2098 10.5182,1.9375 17.2188,1.9375 6.7006,0 12.7517,-0.7277 17.2188,-1.9375 2.2335,-0.6049 4.0837,-1.3206 5.4374,-2.1875 0.1238,-0.079 0.2266,-0.1666 0.3438,-0.25 l 0,5.375 0,0.5 c 0,0.3986 -0.3624,0.9991 -1.4375,1.6875 -1.0751,0.6884 -2.7341,1.3661 -4.8437,1.9375 -4.2193,1.1427 -10.1646,1.875 -16.7188,1.875 -6.5542,0 -12.4994,-0.7323 -16.7188,-1.875 -2.1096,-0.5714 -3.7686,-1.2491 -4.8437,-1.9375 -1.0751,-0.6884 -1.4375,-1.2889 -1.4375,-1.6875 l 0,-0.5 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;opacity:0.5;color:#000000;fill:none;stroke:#ffffff;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Sans"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ y="-1082.6378"
+ x="1278"
+ height="15"
+ width="64"
+ id="rect17918"
+ style="opacity:0.5;color:#000000;fill:url(#radialGradient17920) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <path
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cccscccc"
+ id="path10909"
+ d="m 1286,-1085.6378 0,8 c 0,0 0,0.3688 0,0.5 0,3.5898 10.7452,6.5 24,6.5 13.2548,0 24,-2.9102 24,-6.5 l 0,-0.5 0,-8 -48,0 z"
+ style="color:#000000;fill:url(#linearGradient16324-4) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <path
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ inkscape:connector-curvature="0"
+ style="color:#000000;fill:url(#linearGradient16324-9) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible"
+ d="m 1286,-1094.6378 0,8 c 0,0 0,0.3688 0,0.5 0,3.5898 10.7452,6.5 24,6.5 13.2548,0 24,-2.9102 24,-6.5 l 0,-0.5 0,-8 -48,0 z"
+ id="path10913"
+ sodipodi:nodetypes="cccscccc" />
+ <path
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ inkscape:connector-curvature="0"
+ style="color:#000000;fill:url(#linearGradient16324) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible"
+ d="m 1334,-1103.1378 0,7.5 c 0,0 0,0.3688 0,0.5 0,3.5898 -10.7452,6.5 -24,6.5 -13.2548,0 -24,-2.9102 -24,-6.5 l 0,-0.5 0,-7.5 48,0 z"
+ id="path10921"
+ sodipodi:nodetypes="cccscccc" />
+ <path
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ sodipodi:type="arc"
+ style="color:#000000;fill:url(#radialGradient16441) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.90445203;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="path16437"
+ sodipodi:cx="519.6875"
+ sodipodi:cy="730.3125"
+ sodipodi:rx="22.4375"
+ sodipodi:ry="5.6875"
+ d="m 542.125,730.3125 a 22.4375,5.6875 0 1 1 -44.875,0 22.4375,5.6875 0 1 1 44.875,0 z"
+ transform="matrix(1.04735,0,0,1.05495,765.703,-1874.58)" />
+ <path
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ sodipodi:nodetypes="ssccccsccssccccccssccsccscccccscccsccccsscscsscccccsscccsscscsscccccsscccsscscsscc"
+ inkscape:connector-curvature="0"
+ id="path16203"
+ d="m 1310,-1111.6691 c -6.6937,0 -12.762,0.7304 -17.2188,1.9375 -2.2282,0.6036 -4.0271,1.2932 -5.375,2.1563 -1.3477,0.863 -2.375,1.9891 -2.375,3.4375 l -0.031,0 0,26.5 0,0.5 c 0,1.3963 0.9899,2.5081 2.3438,3.375 1.3536,0.8669 3.2039,1.5826 5.4374,2.1875 4.4672,1.2098 10.5182,1.9375 17.2188,1.9375 6.7006,0 12.7517,-0.7277 17.2188,-1.9375 2.2335,-0.6049 4.0837,-1.3206 5.4374,-2.1875 1.3539,-0.8669 2.3438,-1.9787 2.3438,-3.375 l 0,-27 -0.031,0 c 0,-1.4484 -1.0273,-2.5745 -2.375,-3.4375 -1.3478,-0.8631 -3.1466,-1.5527 -5.375,-2.1563 -4.4568,-1.2071 -10.5251,-1.9375 -17.2188,-1.9375 z m 0,2.0625 c 6.5612,0 12.5205,0.7295 16.75,1.875 2.1148,0.5728 3.7938,1.2452 4.875,1.9375 1.0811,0.6924 1.4062,1.3098 1.4062,1.6563 0,0.3465 -0.3251,0.9639 -1.4062,1.6562 -1.0812,0.6924 -2.7602,1.3648 -4.875,1.9375 -4.2295,1.1456 -10.1888,1.875 -16.75,1.875 -6.5611,0 -12.5205,-0.7294 -16.75,-1.875 -2.1148,-0.5727 -3.7939,-1.2451 -4.875,-1.9375 -1.0812,-0.6923 -1.4063,-1.3097 -1.4062,-1.6562 0,-0.3465 0.325,-0.9639 1.4062,-1.6563 1.0811,-0.6923 2.7602,-1.3647 4.875,-1.9375 4.2295,-1.1455 10.1889,-1.875 16.75,-1.875 z m -23,8.5938 c 0.1377,0.1 0.2601,0.2189 0.4062,0.3125 1.3479,0.863 3.1467,1.5527 5.375,2.1562 4.4568,1.207 10.5251,1.9375 17.2188,1.9375 6.6937,0 12.762,-0.7305 17.2188,-1.9375 2.2283,-0.6035 4.0272,-1.2932 5.375,-2.1562 0.1461,-0.094 0.2685,-0.2128 0.4062,-0.3125 l 0,5.375 0,0.5 c 0,0.3986 -0.3624,0.9991 -1.4375,1.6875 -1.0751,0.6884 -2.7341,1.3661 -4.8437,1.9375 -4.2193,1.1427 -10.1646,1.875 -16.7188,1.875 -6.5542,0 -12.4994,-0.7323 -16.7188,-1.875 -2.1096,-0.5714 -3.7686,-1.2491 -4.8437,-1.9375 -1.0751,-0.6884 -1.4375,-1.2889 -1.4375,-1.6875 l 0,-0.5 z m 0,9 c 0.1172,0.083 0.22,0.1708 0.3438,0.25 1.3536,0.8669 3.2039,1.5826 5.4374,2.1875 4.4672,1.2098 10.5182,1.9375 17.2188,1.9375 6.7006,0 12.7517,-0.7277 17.2188,-1.9375 2.2335,-0.6049 4.0837,-1.3206 5.4374,-2.1875 0.1238,-0.079 0.2266,-0.1666 0.3438,-0.25 l 0,5.375 0,0.5 c 0,0.3986 -0.3624,0.9991 -1.4375,1.6875 -1.0751,0.6884 -2.7341,1.3661 -4.8437,1.9375 -4.2193,1.1427 -10.1646,1.875 -16.7188,1.875 -6.5542,0 -12.4994,-0.7323 -16.7188,-1.875 -2.1096,-0.5714 -3.7686,-1.2491 -4.8437,-1.9375 -1.0751,-0.6884 -1.4375,-1.2889 -1.4375,-1.6875 l 0,-0.5 z m 0,9 c 0.1172,0.083 0.22,0.1708 0.3438,0.25 1.3536,0.8669 3.2039,1.5826 5.4374,2.1875 4.4672,1.2098 10.5182,1.9375 17.2188,1.9375 6.7006,0 12.7517,-0.7277 17.2188,-1.9375 2.2335,-0.6049 4.0837,-1.3206 5.4374,-2.1875 0.1238,-0.079 0.2266,-0.1666 0.3438,-0.25 l 0,5.375 0,0.5 c 0,0.3986 -0.3624,0.9991 -1.4375,1.6875 -1.0751,0.6884 -2.7341,1.3661 -4.8437,1.9375 -4.2193,1.1427 -10.1646,1.875 -16.7188,1.875 -6.5542,0 -12.4994,-0.7323 -16.7188,-1.875 -2.1096,-0.5714 -3.7686,-1.2491 -4.8437,-1.9375 -1.0751,-0.6884 -1.4375,-1.2889 -1.4375,-1.6875 l 0,-0.5 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:url(#linearGradient16320) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Sans" />
+ <path
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ sodipodi:nodetypes="ccccc"
+ inkscape:connector-curvature="0"
+ id="path16439"
+ d="m 1292.8748,-1108.0574 35.6875,7.5371 -9.7217,1.945 -15.7518,-11.0625 z"
+ style="opacity:0.35;fill:url(#linearGradient16443) #000000;fill-opacity:1;stroke:none" />
+ <path
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:url(#linearGradient16320) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Sans"
+ d="m 1310,-1111.6691 c -6.6937,0 -12.762,0.7304 -17.2188,1.9375 -2.2282,0.6036 -4.0271,1.2932 -5.375,2.1563 -1.3477,0.863 -2.4062,1.9891 -2.4062,3.4375 -0.062,8.7636 2e-4,17.6812 2e-4,26.5 l 0,0.5 c 0,1.3963 0.9899,2.5081 2.3438,3.375 1.3536,0.8669 3.2039,1.5826 5.4374,2.1875 4.4672,1.2098 10.5182,1.9375 17.2188,1.9375 6.7006,0 12.7517,-0.7277 17.2188,-1.9375 2.2335,-0.6049 4.0837,-1.3206 5.4374,-2.1875 1.3539,-0.8669 2.3438,-1.9787 2.3438,-3.375 l 0,-27 c 0,-1.3529 -1.3173,-2.7252 -2.406,-3.4375 -1.3478,-0.8631 -3.1466,-1.5527 -5.375,-2.1563 -4.4568,-1.2071 -10.5251,-1.9375 -17.2188,-1.9375 z m 0,2.0625 c 6.5612,0 12.5205,0.7295 16.75,1.875 2.1148,0.5728 3.7938,1.2452 4.875,1.9375 1.0811,0.6924 1.4062,1.3098 1.4062,1.6563 0,0.3465 -0.3251,0.9639 -1.4062,1.6562 -1.0812,0.6924 -2.7602,1.3648 -4.875,1.9375 -4.2295,1.1456 -10.1888,1.875 -16.75,1.875 -6.5611,0 -12.5205,-0.7294 -16.75,-1.875 -2.1148,-0.5727 -3.7939,-1.2451 -4.875,-1.9375 -1.0812,-0.6923 -1.4063,-1.3097 -1.4062,-1.6562 0,-0.3465 0.325,-0.9639 1.4062,-1.6563 1.0811,-0.6923 2.7602,-1.3647 4.875,-1.9375 4.2295,-1.1455 10.1889,-1.875 16.75,-1.875 z m -23,8.5938 c 0.1377,0.1 0.2601,0.2189 0.4062,0.3125 1.3479,0.863 3.1467,1.5527 5.375,2.1562 4.4568,1.207 10.5251,1.9375 17.2188,1.9375 6.6937,0 12.762,-0.7305 17.2188,-1.9375 2.2283,-0.6035 4.0272,-1.2932 5.375,-2.1562 0.1461,-0.094 0.2685,-0.2128 0.4062,-0.3125 l 0,5.375 0,0.5 c 0,0.3986 -0.3624,0.9991 -1.4375,1.6875 -1.0751,0.6884 -2.7341,1.3661 -4.8437,1.9375 -4.2193,1.1427 -10.1646,1.875 -16.7188,1.875 -6.5542,0 -12.4994,-0.7323 -16.7188,-1.875 -2.1096,-0.5714 -3.7686,-1.2491 -4.8437,-1.9375 -1.0751,-0.6884 -1.4375,-1.2889 -1.4375,-1.6875 l 0,-0.5 z m 0,9 c 0.1172,0.083 0.22,0.1708 0.3438,0.25 1.3536,0.8669 3.2039,1.5826 5.4374,2.1875 4.4672,1.2098 10.5182,1.9375 17.2188,1.9375 6.7006,0 12.7517,-0.7277 17.2188,-1.9375 2.2335,-0.6049 4.0837,-1.3206 5.4374,-2.1875 0.1238,-0.079 0.2266,-0.1666 0.3438,-0.25 l 0,5.375 0,0.5 c 0,0.3986 -0.3624,0.9991 -1.4375,1.6875 -1.0751,0.6884 -2.7341,1.3661 -4.8437,1.9375 -4.2193,1.1427 -10.1646,1.875 -16.7188,1.875 -6.5542,0 -12.4994,-0.7323 -16.7188,-1.875 -2.1096,-0.5714 -3.7686,-1.2491 -4.8437,-1.9375 -1.0751,-0.6884 -1.4375,-1.2889 -1.4375,-1.6875 l 0,-0.5 z m 0,9 c 0.1172,0.083 0.22,0.1708 0.3438,0.25 1.3536,0.8669 3.2039,1.5826 5.4374,2.1875 4.4672,1.2098 10.5182,1.9375 17.2188,1.9375 6.7006,0 12.7517,-0.7277 17.2188,-1.9375 2.2335,-0.6049 4.0837,-1.3206 5.4374,-2.1875 0.1238,-0.079 0.2266,-0.1666 0.3438,-0.25 l 0,5.375 0,0.5 c 0,0.3986 -0.3624,0.9991 -1.4375,1.6875 -1.0751,0.6884 -2.7341,1.3661 -4.8437,1.9375 -4.2193,1.1427 -10.1646,1.875 -16.7188,1.875 -6.5542,0 -12.4994,-0.7323 -16.7188,-1.875 -2.1096,-0.5714 -3.7686,-1.2491 -4.8437,-1.9375 -1.0751,-0.6884 -1.4375,-1.2889 -1.4375,-1.6875 l 0,-0.5 z"
+ id="path16445"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="sscccsccsscccccssccsccscccccscccsccccsscscsscccccsscccsscscsscccccsscccsscscssccc" />
+ <path
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ sodipodi:nodetypes="cccsccczc"
+ id="path16423"
+ d="m 1286.9825,-1103.1378 0,4.5315 c 0,0 0,0.3408 0,0.4621 0,3.3173 10.3052,6.0064 23.0175,6.0064 12.7122,0 23.0175,-2.6891 23.0175,-6.0064 l 0,-0.4621 0,-4.5015 c -2.058,1.8392 -9.7163,4.5523 -22.9453,4.5523 -13.2289,0 -21.1644,-2.743 -23.0897,-4.5823 z"
+ style="opacity:0.25;color:#000000;fill:url(#linearGradient16427) #000000;fill-opacity:1;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ inkscape:connector-curvature="0" />
+ <path
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ sodipodi:nodetypes="cccsccczc"
+ id="path16425"
+ d="m 1287.5,-1100.1378 0,4.0657 c 0,0 0,0.3127 0,0.4239 0,3.0433 9.8483,5.5104 21.9969,5.5104 12.1486,0 23.0031,-2.4671 23.0031,-5.5104 l 0,-0.4239 0,-4.0381 c -1.9668,1.6873 -10.2916,4.1764 -22.9341,4.1764 -12.6424,0 -20.226,-2.5166 -22.0659,-4.204 z"
+ style="opacity:0.35;color:#000000;fill:none;stroke:#ffffff;stroke-width:1;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible"
+ inkscape:connector-curvature="0" />
+ <path
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ inkscape:connector-curvature="0"
+ id="path16449"
+ transform="translate(-123,-1753.64)"
+ d="m 1433,644.03125 c -6.5611,0 -12.5205,0.7295 -16.75,1.875 -2.1148,0.5728 -3.7939,1.2452 -4.875,1.9375 -1.0812,0.6924 -1.4062,1.30975 -1.4062,1.65625 -1e-4,0.3465 0.325,0.96395 1.4062,1.65625 1.0811,0.6924 2.7602,1.3648 4.875,1.9375 4.2295,1.1456 10.1889,1.875 16.75,1.875 6.5612,0 12.5205,-0.7294 16.75,-1.875 2.1148,-0.5727 3.7938,-1.2451 4.875,-1.9375 1.0811,-0.6923 1.4062,-1.30975 1.4062,-1.65625 0,-0.3465 -0.3251,-0.96385 -1.4062,-1.65625 -1.0812,-0.6923 -2.7602,-1.3647 -4.875,-1.9375 -4.2295,-1.1455 -10.1888,-1.875 -16.75,-1.875 z M 1433,645 c 6.1251,0 11.6766,0.58855 15.625,1.53125 1.9741,0.4712 3.5533,1.02435 4.5625,1.59375 1.0094,0.57 1.3125,1.0898 1.3125,1.375 0,0.2852 -0.3031,0.8051 -1.3125,1.375 -1.0092,0.5695 -2.5884,1.12265 -4.5625,1.59375 -3.9484,0.9427 -9.4999,1.53125 -15.625,1.53125 -6.125,0 -11.6766,-0.58855 -15.625,-1.53125 -1.9742,-0.4711 -3.5534,-1.02425 -4.5625,-1.59375 -1.0095,-0.5699 -1.3126,-1.0898 -1.3125,-1.375 0,-0.2852 0.303,-0.805 1.3125,-1.375 1.0091,-0.5694 2.5883,-1.12255 4.5625,-1.59375 3.9484,-0.9427 9.5,-1.53125 15.625,-1.53125 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;opacity:0.25;color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Sans" />
+ <path
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ inkscape:connector-curvature="0"
+ style="opacity:0.35;color:#000000;fill:url(#linearGradient16497) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ d="m 1285.5,-1118.6378 0,3 -7.5,0 0,-3 7.5,0 z m 0,5 0,4 -7.5,0 0,-4 7.5,0 z m 0,6 0,4 -7.5,0 0,-4 7.5,0 z m 0,6 0,4 -7.5,0 0,-4 7.5,0 z m 0,6 0,4 -7.5,0 0,-4 7.5,0 z m 0,6 0,4 -7.5,0 0,-4 7.5,0 z m 0,6 0,4 -7.5,0 0,-4 7.5,0 z m 0,6 0,4 -7.5,0 0,-4 7.5,0 z m 0,6 0,4 -7.5,0 0,-4 7.5,0 z m 0,6 0,3 -7.5,0 0,-3 7.5,0 z"
+ id="path16493" />
+ <path
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ inkscape:connector-curvature="0"
+ id="path16495"
+ d="m 1334.5,-1118.6378 0,3 7.5,0 0,-3 -7.5,0 z m 0,5 0,4 7.5,0 0,-4 -7.5,0 z m 0,6 0,4 7.5,0 0,-4 -7.5,0 z m 0,6 0,4 7.5,0 0,-4 -7.5,0 z m 0,6 0,4 7.5,0 0,-4 -7.5,0 z m 0,6 0,4 7.5,0 0,-4 -7.5,0 z m 0,6 0,4 7.5,0 0,-4 -7.5,0 z m 0,6 0,4 7.5,0 0,-4 -7.5,0 z m 0,6 0,4 7.5,0 0,-4 -7.5,0 z m 0,6 0,3 7.5,0 0,-3 -7.5,0 z"
+ style="opacity:0.35;color:#000000;fill:url(#linearGradient16499) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#path16423"
+ id="use14191"
+ transform="translate(0,9)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#path16425"
+ id="use14193"
+ transform="translate(0,9)"
+ width="5033"
+ height="1085" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(0,18)"
+ id="use14195"
+ xlink:href="#path16423"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(0,18)"
+ id="use14197"
+ xlink:href="#path16425"
+ y="0"
+ x="0" />
+ <path
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ inkscape:connector-curvature="0"
+ id="path16927"
+ d="m 1290.7128,-1098.441 c 0,0 0.596,10.057 4.3857,16.9965 3.7897,6.9392 7.0935,8.9024 7.0935,8.9024 l 7.8328,-0.6744 c 0,0 -7.9334,-5.3265 -11.6634,-12.8723 -3.7301,-7.5457 -4.6568,-11.3505 -4.6568,-11.3505 z"
+ style="opacity:0.35;fill:url(#linearGradient16929) #000000;fill-opacity:1;stroke:none;display:inline" />
+ </g>
+ <g
+ id="g8794">
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ y="-1065.087"
+ x="770.7674"
+ height="2.4492078"
+ width="12.276342"
+ id="rect16931"
+ style="opacity:0.5;color:#000000;fill:url(#radialGradient8951) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ style="opacity:0.5;color:#000000;fill:url(#radialGradient8953) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect16933"
+ width="12.276342"
+ height="2.4492078"
+ x="792.86481"
+ y="-1065.087" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ y="-1067.0464"
+ x="758"
+ height="3.9187338"
+ width="59.90855"
+ id="rect16935"
+ style="opacity:0.4;color:#000000;fill:url(#radialGradient8955) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <path
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ inkscape:connector-curvature="0"
+ style="fill:#4d4d4d;fill-opacity:1;stroke:none"
+ d="m 786.12122,-1071.6377 -12.12121,7.9999 4.8844,0 2.69908,-0.5569 9.4165,-7.443 z"
+ id="path16937"
+ sodipodi:nodetypes="cccccc" />
+ <path
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cccccc"
+ id="path16939"
+ d="m 789.99999,-1071.6377 12,7.9999 -5.00561,0 -2.5431,-0.4389 -9.45128,-7.561 z"
+ style="fill:#4d4d4d;fill-opacity:1;stroke:none" />
+ <path
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ sodipodi:nodetypes="ccccc"
+ id="path16941"
+ d="m 785.12121,-1071.6377 -12.12121,7.9999 5.87879,0 10.12122,-7.9999 -3.8788,0 z"
+ style="fill:url(#linearGradient8957) #000000;fill-opacity:1;stroke:none"
+ inkscape:connector-curvature="0" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ style="color:#000000;fill:url(#linearGradient8959) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.29999995;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect16943"
+ width="5.9999995"
+ height="3.0000196"
+ x="784.99994"
+ y="-1073.6378" />
+ <path
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ style="fill:url(#linearGradient8961) #000000;fill-opacity:1;stroke:none"
+ d="m 791,-1071.6377 12,7.9999 -6,0 -10.00001,-7.9999 4.00001,0 z"
+ id="path16945"
+ sodipodi:nodetypes="ccccc"
+ inkscape:connector-curvature="0" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ style="color:#000000;fill:#a33e03;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect6001"
+ width="64"
+ height="45.999985"
+ x="756"
+ y="-1118.6378" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ y="-1116.6378"
+ x="758"
+ height="42.000023"
+ width="60"
+ id="rect6005"
+ style="color:#000000;fill:url(#linearGradient8963) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ rx="1"
+ ry="1" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ ry="1"
+ rx="1"
+ style="color:#000000;fill:url(#linearGradient8967) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect6007"
+ width="60"
+ height="42.000023"
+ x="758"
+ y="-1116.6378" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ transform="matrix(0,1,-1,0,0,0)"
+ style="color:#000000;fill:url(#radialGradient8965) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:15.99660015;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect16959"
+ width="15.674944"
+ height="31.427435"
+ x="-1090.3127"
+ y="-803.42743"
+ ry="2"
+ rx="1.9999998" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ style="opacity:0.75;color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect17477"
+ width="15"
+ height="4"
+ x="769"
+ y="-1096.6378" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ rx="1"
+ ry="1"
+ y="-1115.6378"
+ x="759"
+ height="40"
+ width="10"
+ id="rect17133"
+ style="opacity:0.35;color:#000000;fill:url(#linearGradient8969) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:15.99660015;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ transform="scale(-1,1)"
+ style="opacity:0.35;color:#000000;fill:url(#linearGradient8971) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:15.99660015;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect16955"
+ width="10"
+ height="40"
+ x="-817"
+ y="-1115.6378"
+ ry="1"
+ rx="1" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ y="-1096.6378"
+ x="788"
+ height="18.000017"
+ width="26"
+ id="rect17489"
+ style="opacity:0.75;color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ y="-1089.6378"
+ x="769"
+ height="4"
+ width="15"
+ id="rect17479"
+ style="opacity:0.75;color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ y="-1097.6378"
+ x="769"
+ height="4"
+ width="15"
+ id="rect6009"
+ style="color:#000000;fill:url(#linearGradient8973) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ style="opacity:0.75;color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect17481"
+ width="15"
+ height="4"
+ x="769"
+ y="-1082.6378" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ style="color:#000000;fill:url(#linearGradient8975) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect6013"
+ width="15"
+ height="4"
+ x="769"
+ y="-1090.6378" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ y="-1083.6378"
+ x="769"
+ height="4"
+ width="15"
+ id="rect6015"
+ style="color:#000000;fill:url(#linearGradient8977) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <path
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ transform="matrix(0.363636,0,0,0.380952,438.364,-1342.92)"
+ d="m 901,651.75 a 5.4999981,5.250001 0 1 1 -11,0 5.4999981,5.250001 0 1 1 11,0 z"
+ sodipodi:ry="5.250001"
+ sodipodi:rx="5.4999981"
+ sodipodi:cy="651.75"
+ sodipodi:cx="895.5"
+ id="path17471"
+ style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ sodipodi:type="arc" />
+ <path
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ sodipodi:type="arc"
+ style="color:#000000;fill:#d36118;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="path6019"
+ sodipodi:cx="895.5"
+ sodipodi:cy="651.75"
+ sodipodi:rx="5.4999981"
+ sodipodi:ry="5.250001"
+ d="m 901,651.75 a 5.4999981,5.250001 0 1 1 -11,0 5.4999981,5.250001 0 1 1 11,0 z"
+ transform="matrix(0.363636,0,0,0.380952,438.364,-1343.92)" />
+ <path
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ transform="matrix(0.363636,0,0,0.380952,438.364,-1335.92)"
+ d="m 901,651.75 a 5.4999981,5.250001 0 1 1 -11,0 5.4999981,5.250001 0 1 1 11,0 z"
+ sodipodi:ry="5.250001"
+ sodipodi:rx="5.4999981"
+ sodipodi:cy="651.75"
+ sodipodi:cx="895.5"
+ id="path17473"
+ style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ sodipodi:type="arc" />
+ <path
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ sodipodi:type="arc"
+ style="color:#000000;fill:#d36118;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="path6021"
+ sodipodi:cx="895.5"
+ sodipodi:cy="651.75"
+ sodipodi:rx="5.4999981"
+ sodipodi:ry="5.250001"
+ d="m 901,651.75 a 5.4999981,5.250001 0 1 1 -11,0 5.4999981,5.250001 0 1 1 11,0 z"
+ transform="matrix(0.363636,0,0,0.380952,438.364,-1336.92)" />
+ <path
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ sodipodi:type="arc"
+ style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="path17475"
+ sodipodi:cx="895.5"
+ sodipodi:cy="651.75"
+ sodipodi:rx="5.4999981"
+ sodipodi:ry="5.250001"
+ d="m 901,651.75 a 5.4999981,5.250001 0 1 1 -11,0 5.4999981,5.250001 0 1 1 11,0 z"
+ transform="matrix(0.363636,0,0,0.380952,438.364,-1328.92)" />
+ <path
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ transform="matrix(0.363636,0,0,0.380952,438.364,-1329.92)"
+ d="m 901,651.75 a 5.4999981,5.250001 0 1 1 -11,0 5.4999981,5.250001 0 1 1 11,0 z"
+ sodipodi:ry="5.250001"
+ sodipodi:rx="5.4999981"
+ sodipodi:cy="651.75"
+ sodipodi:cx="895.5"
+ id="path6023"
+ style="color:#000000;fill:#d36118;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ sodipodi:type="arc" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ y="-1111.6378"
+ x="762"
+ height="4"
+ width="51.999973"
+ id="rect17854"
+ style="opacity:0.75;color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ style="color:#000000;fill:url(#linearGradient8979) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect6025"
+ width="51.999973"
+ height="4"
+ x="762"
+ y="-1112.6378" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ style="color:#000000;fill:url(#linearGradient8981) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect7235"
+ width="26"
+ height="18.000017"
+ x="788"
+ y="-1097.6378" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ y="-1095.6378"
+ x="790"
+ height="14.000017"
+ width="22"
+ id="rect7237"
+ style="color:#000000;fill:#e6e6e6;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ style="color:#000000;fill:url(#linearGradient8983) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect7239"
+ width="22"
+ height="14.000054"
+ x="790"
+ y="-1095.6378" />
+ <g
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ style="opacity:0.05;fill:#000000;display:inline"
+ transform="matrix(0.984128,0,0,1,277.412,-8.99993)"
+ id="g7243">
+ <rect
+ y="-1081.6378"
+ x="521.87097"
+ height="1"
+ width="20.322569"
+ id="rect7245"
+ style="color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ style="color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect7247"
+ width="20.322569"
+ height="1"
+ x="521.87097"
+ y="-1084.6378" />
+ <rect
+ style="color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect7249"
+ width="20.322569"
+ height="1"
+ x="521.87097"
+ y="-1078.6378" />
+ <rect
+ y="-1075.6378"
+ x="521.87097"
+ height="1"
+ width="20.322569"
+ id="rect7251"
+ style="color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ </g>
+ <path
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ inkscape:connector-curvature="0"
+ style="fill:none;stroke:url(#linearGradient8985) #000000;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1;display:inline"
+ d="m 792.5,-1084.1378 5.5,-5.5 4,4 7.5,-7.5"
+ id="path7255"
+ sodipodi:nodetypes="cccc" />
+ <path
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cccc"
+ id="path7257"
+ d="m 792.5,-1084.1378 5.5,-5.5 4,4 7.5,-7.5"
+ style="color:#000000;fill:none;stroke:url(#linearGradient8988) #000000;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ style="opacity:0.75;color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect17856"
+ width="32"
+ height="4"
+ x="772"
+ y="-1104.6378" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ y="-1105.6378"
+ x="772"
+ height="4"
+ width="32"
+ id="rect7305"
+ style="color:#000000;fill:url(#linearGradient8991) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ y="-817"
+ x="-1116.3738"
+ height="1"
+ width="40"
+ id="rect17049"
+ style="opacity:0.15;color:#000000;fill:url(#linearGradient8993) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ transform="matrix(0,1,-1,0,0,0)" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ transform="matrix(0,1,-1,0,0,0)"
+ style="opacity:0.15;color:#000000;fill:url(#linearGradient8995) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect17137"
+ width="40"
+ height="1"
+ x="-1116.3738"
+ y="-760" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ style="opacity:0.5;color:#000000;fill:url(#linearGradient8997) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect17301"
+ width="32"
+ height="1"
+ x="772"
+ y="-1105.6378" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ y="-1112.6378"
+ x="762"
+ height="1"
+ width="52"
+ id="rect17341"
+ style="opacity:0.25;color:#000000;fill:url(#linearGradient8999) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ y="-1097.6378"
+ x="769"
+ height="1.0000159"
+ width="15.000031"
+ id="rect17365"
+ style="opacity:0.5;color:#000000;fill:url(#linearGradient9001) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ style="opacity:0.5;color:#000000;fill:url(#linearGradient9003) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect17369"
+ width="15.000031"
+ height="1.0000159"
+ x="769"
+ y="-1090.6378" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ y="-1083.6378"
+ x="769"
+ height="1.0000159"
+ width="15.000031"
+ id="rect17373"
+ style="opacity:0.5;color:#000000;fill:url(#linearGradient9005) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ style="opacity:0.5;color:#000000;fill:url(#linearGradient9007) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect17491"
+ width="22"
+ height="1.0000159"
+ x="790"
+ y="-1081.6378" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ y="-1096.6378"
+ x="790"
+ height="1.0000159"
+ width="22"
+ id="rect17495"
+ style="opacity:0.25;color:#000000;fill:url(#linearGradient9009) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ y="-1082.6378"
+ x="789.69031"
+ height="1"
+ width="22.619402"
+ id="rect17499"
+ style="color:#000000;fill:url(#linearGradient9011) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ transform="scale(1,-1)"
+ style="opacity:0.5;color:#000000;fill:url(#linearGradient9013) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect17850"
+ width="60"
+ height="0.99995422"
+ x="758"
+ y="1073.6378" />
+ </g>
+ <g
+ id="g8683">
+ <path
+ style="color:#000000;fill:url(#linearGradient9017) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ d="m 495,-1118.6378 0,2 0,8 0,2 0,8 0,2 0,8 0,2 0,8 0,2 0,8 0,2 60,0 0,-2 0,-50 -58,0 -2,0 z"
+ id="path14259"
+ inkscape:connector-curvature="0" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ y="-1066.6378"
+ x="495"
+ height="1"
+ width="61"
+ id="rect18908"
+ style="opacity:0.25;color:#000000;fill:url(#linearGradient9015) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <g
+ id="g14478">
+ <rect
+ style="color:#000000;fill:#92e285;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect7043"
+ width="17"
+ height="8"
+ x="497"
+ y="-1116.6378"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ <rect
+ y="-1115.6378"
+ x="498"
+ height="5.999999"
+ width="8"
+ id="rect18448"
+ style="opacity:0.75;color:#000000;fill:url(#linearGradient14441) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:15.99660015;marker:none;visibility:visible;display:inline;overflow:visible"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ <rect
+ style="opacity:0.5;color:#000000;fill:url(#linearGradient14438) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect18460"
+ width="17"
+ height="1"
+ x="497"
+ y="-1108.6378"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ </g>
+ <use
+ x="0"
+ y="0"
+ xlink:href="#g14478"
+ id="use14483"
+ transform="matrix(1.05882,0,0,1,-10.2353,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#g14478"
+ id="use14485"
+ transform="translate(39,0)"
+ width="5033"
+ height="1085" />
+ <g
+ id="g14489"
+ transform="translate(0,10)">
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ y="-1116.6378"
+ x="497"
+ height="8"
+ width="17"
+ id="rect14491"
+ style="color:#000000;fill:#d4f1cf;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ style="opacity:0.35;color:#000000;fill:url(#linearGradient14576) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:15.99660015;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect14493"
+ width="8"
+ height="5.999999"
+ x="498"
+ y="-1115.6378" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ y="-1108.6378"
+ x="497"
+ height="1"
+ width="17"
+ id="rect14495"
+ style="opacity:0.5;color:#000000;fill:url(#linearGradient14578) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ </g>
+ <use
+ x="0"
+ y="0"
+ xlink:href="#g14489"
+ id="use14560"
+ transform="translate(39,0)"
+ width="5033"
+ height="1085" />
+ <use
+ height="1085"
+ width="5033"
+ transform="matrix(1.05882,0,0,1,-10.2353,10)"
+ id="use14562"
+ xlink:href="#g14489"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(39,10)"
+ id="use14564"
+ xlink:href="#g14489"
+ y="0"
+ x="0" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#g14489"
+ id="use14566"
+ transform="translate(0,10)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#g14489"
+ id="use14568"
+ transform="matrix(1.05882,0,0,1,-10.2353,20)"
+ width="5033"
+ height="1085" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(0,20)"
+ id="use14570"
+ xlink:href="#g14489"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="matrix(1.05882,0,0,1,-10.2353,30)"
+ id="use14572"
+ xlink:href="#g14489"
+ y="0"
+ x="0" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#g14489"
+ id="use14574"
+ transform="translate(0,30)"
+ width="5033"
+ height="1085" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ style="color:#000000;fill:url(#linearGradient9079) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect7127"
+ width="39"
+ height="27.999968"
+ x="520"
+ y="-1090.6378" />
+ <rect
+ y="-1088.6378"
+ x="522"
+ height="23.999983"
+ width="35"
+ id="rect8668"
+ style="color:#000000;fill:url(#linearGradient9081) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ style="opacity:0.25;color:#000000;fill:url(#linearGradient9083) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect18884"
+ width="22"
+ height="22"
+ x="534"
+ y="-1087.6378" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ y="-1076.6378"
+ x="524"
+ height="1"
+ width="31"
+ id="rect18862"
+ style="opacity:0.15;color:#000000;fill:url(#linearGradient9086) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <path
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ inkscape:connector-curvature="0"
+ id="rect7466"
+ d="m 523,-1067.5951 33,0 c 0.554,0 1,0.446 1,1 l 0,0.9572 c 0,0.554 -0.446,1 -1,1 l -33,0 c -0.554,0 -1,-0.446 -1,-1 l 0,-0.9572 c 0,-0.554 0.446,-1 1,-1 z"
+ style="opacity:0.5;color:#000000;fill:url(#radialGradient9088) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ y="-1071.6378"
+ x="524"
+ height="1"
+ width="31"
+ id="rect18870"
+ style="opacity:0.15;color:#000000;fill:url(#linearGradient9091) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ style="opacity:0.15;color:#000000;fill:url(#linearGradient9093) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect18866"
+ width="31"
+ height="1"
+ x="524"
+ y="-1081.6378" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ style="color:#000000;fill:#0369a3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect7069"
+ width="7"
+ height="15.999921"
+ x="524"
+ y="-1081.6378" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ y="1066.6378"
+ x="525"
+ height="13.999983"
+ width="5"
+ id="rect7071"
+ style="color:#000000;fill:url(#linearGradient9095) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ transform="scale(1,-1)" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ style="opacity:0.15;color:#000000;fill:url(#linearGradient9097) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect18858"
+ width="31"
+ height="1"
+ x="524"
+ y="-1086.6378" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ y="-1086.6378"
+ x="532"
+ height="20.999865"
+ width="7"
+ id="rect7073"
+ style="color:#000000;fill:url(#linearGradient9099) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ transform="scale(1,-1)"
+ style="color:#000000;fill:url(#linearGradient9101) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect7075"
+ width="5"
+ height="18.999983"
+ x="533"
+ y="1066.6378" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ style="color:#000000;fill:#c99c00;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect7077"
+ width="7"
+ height="9.9999142"
+ x="540"
+ y="-1075.6378" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ y="1066.6378"
+ x="541"
+ height="7.9999585"
+ width="5"
+ id="rect7079"
+ style="color:#000000;fill:url(#linearGradient9104) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ transform="scale(1,-1)" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ y="-1079.6378"
+ x="548"
+ height="13.999983"
+ width="7"
+ id="rect7244"
+ style="color:#000000;fill:#43c330;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ transform="scale(1,-1)"
+ style="color:#000000;fill:url(#linearGradient9106) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect7246"
+ width="5"
+ height="11.999964"
+ x="549"
+ y="1066.6378" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ y="-1065.6378"
+ x="522"
+ height="1"
+ width="35"
+ id="rect18696"
+ style="opacity:0.75;color:#000000;fill:url(#linearGradient9108) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ style="opacity:0.35;color:#000000;fill:url(#linearGradient9110) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:15.99660015;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect18826"
+ width="3"
+ height="17"
+ x="534"
+ y="-1084.6378" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ style="opacity:0.75;color:#000000;fill:url(#linearGradient9112) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect18830"
+ width="5"
+ height="1"
+ x="533"
+ y="-1085.6378" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ y="-1080.6378"
+ x="525"
+ height="1"
+ width="5"
+ id="rect18834"
+ style="opacity:0.75;color:#000000;fill:url(#linearGradient9114) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ style="opacity:0.75;color:#000000;fill:url(#linearGradient9116) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect18838"
+ width="5"
+ height="1"
+ x="541"
+ y="-1074.6378" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ y="-1078.6378"
+ x="549"
+ height="1"
+ width="5"
+ id="rect18842"
+ style="opacity:0.75;color:#000000;fill:url(#linearGradient9118) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ y="-1079.6378"
+ x="526"
+ height="12"
+ width="3"
+ id="rect18846"
+ style="opacity:0.35;color:#000000;fill:url(#linearGradient9120) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:15.99660015;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ style="opacity:0.35;color:#000000;fill:url(#linearGradient9122) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:15.99660015;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect18848"
+ width="3"
+ height="10"
+ x="550"
+ y="-1077.6378" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ y="-1073.6378"
+ x="542"
+ height="6"
+ width="3"
+ id="rect18850"
+ style="opacity:0.35;color:#000000;fill:url(#linearGradient9124) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:15.99660015;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ y="-1064.6378"
+ x="524"
+ height="1"
+ width="31"
+ id="rect18888"
+ style="opacity:0.5;color:#000000;fill:url(#linearGradient9126) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ style="opacity:0.5;color:#000000;fill:url(#linearGradient9128) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect18892"
+ width="31"
+ height="1"
+ x="524"
+ y="-1089.6378" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ transform="matrix(0,1,-1,0,0,0)"
+ y="-522"
+ x="-1088.6378"
+ height="1"
+ width="24"
+ id="rect18896"
+ style="opacity:0.5;color:#000000;fill:url(#linearGradient9130) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ style="opacity:0.5;color:#000000;fill:url(#linearGradient9132) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect18900"
+ width="24"
+ height="1"
+ x="-1088.6378"
+ y="-558"
+ transform="matrix(0,1,-1,0,0,0)" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ transform="scale(-1,1)"
+ y="-1096.6378"
+ x="-525"
+ height="30"
+ width="30"
+ id="rect18528"
+ style="opacity:0.5;color:#000000;fill:url(#linearGradient14602) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ rx="2"
+ ry="2"
+ y="-548"
+ x="1100.6378"
+ height="46"
+ width="15.999998"
+ id="rect18508"
+ style="opacity:0.6;color:#000000;fill:url(#radialGradient14610) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:15.99660015;marker:none;visibility:visible;display:inline;overflow:visible"
+ transform="matrix(0,-1,-1,0,0,0)" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#g14489"
+ id="use14558"
+ transform="matrix(1.05882,0,0,1,-10.2353,0)"
+ width="5033"
+ height="1085" />
+ </g>
+ <g
+ id="g8745">
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ y="-1117.6379"
+ x="255.99948"
+ height="28"
+ width="41.999218"
+ id="rect19693"
+ style="opacity:0.75;color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <g
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ transform="translate(-136,-132)"
+ style="opacity:0.75;color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2.50560999;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="g19661">
+ <rect
+ y="-977.63782"
+ x="370.00003"
+ height="4"
+ width="18"
+ id="rect19663"
+ style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2.50560999;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ y="-985.63782"
+ x="370.00003"
+ height="4"
+ width="18"
+ id="rect19665"
+ style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2.50560999;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ y="-953.63788"
+ x="370.00003"
+ height="4.0000749"
+ width="63.999969"
+ id="rect19667"
+ style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2.50560999;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2.50560999;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect19669"
+ width="18"
+ height="4"
+ x="370.00003"
+ y="-969.63782" />
+ <rect
+ style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2.50560999;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect19671"
+ width="63.999969"
+ height="4.0000749"
+ x="370.00003"
+ y="-945.63788" />
+ <rect
+ style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2.50560999;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect19673"
+ width="41.999969"
+ height="4.0000749"
+ x="370.00003"
+ y="-937.63788" />
+ <rect
+ y="-961.63782"
+ x="370.00003"
+ height="4"
+ width="18"
+ id="rect19675"
+ style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2.50560999;marker:none;visibility:visible;display:inline;overflow:visible" />
+ </g>
+ <path
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ inkscape:connector-curvature="0"
+ id="path20627"
+ transform="translate(-123,-1753.64)"
+ d="m 357,635 0,4 18,0 0,-4 -18,0 z m 0,8 0,4 18,0 0,-4 -18,0 z m 0,8 0,4 18,0 0,-4 -18,0 z m 0,8 0,4 18,0 0,-4 -18,0 z m 0,8 0,4 64,0 0,-4 -64,0 z m 0,8 0,4 64,0 0,-4 -64,0 z m 0,8 0,4 42,0 0,-4 -42,0 z"
+ style="color:#000000;fill:url(#linearGradient9182) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ style="color:#000000;fill:url(#linearGradient9184) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect5673"
+ width="41.999218"
+ height="28"
+ x="255.99948"
+ y="-1118.6379" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ y="-1115.6377"
+ x="259.0007"
+ height="21.999897"
+ width="35.999233"
+ id="rect5675"
+ style="color:#000000;fill:url(#linearGradient9186) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <path
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ inkscape:connector-curvature="0"
+ style="opacity:0.5;color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible"
+ d="m 277.6003,-1105.0267 c -3.59197,-3.0353 -5.39988,-5.5 -7.79983,-9.1666 -0.70179,0.2159 -0.67498,0.1338 -1.19998,0 0,0 -3.21063,4.8582 -4.7999,7.3333 -1.58925,2.4752 -4.80059,6.1111 -4.80059,6.1111 l 0,2.4444 27.59878,0 c 0,0 -6.59344,-4.8509 -8.99848,-6.7221 z"
+ id="path19709"
+ sodipodi:nodetypes="ccczcccc" />
+ <path
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="ccccc"
+ id="path19713"
+ d="m 285.40014,-1110.5267 c 2.39995,1.2223 6.5708,5.4785 9.59846,8.5556 l 0,3.6666 -27.59877,0 c 4.80059,-6.111 12.00044,-9.7777 18.00031,-12.2222 z"
+ style="opacity:0.5;color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <path
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ style="color:#000000;fill:url(#linearGradient9188) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible"
+ d="m 285.40014,-1109.5267 c 2.39995,1.2223 6.5708,5.4785 9.59846,8.5556 l 0,3.6666 -27.59877,0 c 4.80059,-6.111 12.00044,-9.7777 18.00031,-12.2222 z"
+ id="path5677"
+ sodipodi:nodetypes="ccccc"
+ inkscape:connector-curvature="0" />
+ <path
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ style="fill:#333333;stroke:none"
+ d="m 276.58782,-1102.4225 c 0,0 0.20971,-1.7259 0.20971,-1.7259 0,0 3.15139,-1.3732 3.15139,-1.3732 0,0 1.77234,-1.6867 1.77234,-1.6867 0,0 3.11639,-1.287 3.11639,-1.287 0,0 -0.81326,2.0851 -0.81326,2.0851 0,0 -1.21491,2.1676 -1.21491,2.1676 0,0 -0.72316,2.3557 -0.72316,2.3557 0,0 -0.50012,1.3573 -0.50012,1.3573 0,0 -4.99838,-1.8929 -4.99838,-1.8929 z"
+ id="path5679"
+ sodipodi:nodetypes="cccccccccc"
+ inkscape:connector-curvature="0" />
+ <path
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ sodipodi:nodetypes="ccczcccc"
+ id="path5681"
+ d="m 277.6003,-1104.0267 c -3.59197,-3.0353 -5.39988,-5.5 -7.79983,-9.1666 -0.70179,0.2159 -0.67498,0.1338 -1.19998,0 0,0 -3.21063,4.8582 -4.7999,7.3333 -1.58925,2.4752 -4.80059,6.1111 -4.80059,6.1111 l 0,2.4444 27.59878,0 c 0,0 -6.59344,-4.8509 -8.99848,-6.7221 z"
+ style="color:#000000;fill:url(#linearGradient9190) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible"
+ inkscape:connector-curvature="0" />
+ <path
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ style="color:#000000;fill:url(#linearGradient9192) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible"
+ d="m 294.99994,-1099.7489 c 0,0 -1.54688,0 -1.54688,0 0,0 -6.85294,1.2222 -6.85294,1.2222 0,0 -6.77196,-1.8333 -7.79068,-1.8333 -1.00092,0 -4.20908,0.6111 -4.80941,0.6111 -0.42074,0 -2.99959,-1.2222 -3.60943,-1.2222 -1.00619,0 -2.16569,1.2986 -5.16562,1.8333 0,0 -0.8619,-1.9478 -1.42439,-1.8333 -3.59992,1.4132 -4.80059,1.2222 -4.80059,1.2222 l 0,6.1111 35.9986,0 c 0,0 10e-4,-6.1111 10e-4,-6.1111 l 1.4e-4,0 z"
+ id="path5683"
+ sodipodi:nodetypes="ccczzzccccccc"
+ inkscape:connector-curvature="0" />
+ <path
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ style="color:#000000;fill:url(#linearGradient9194) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible"
+ d="m 259.0007,-1098.5267 -7e-4,4.8889 31.20004,0 c 0,0 1.19998,-1.2223 1.19998,-1.2223 0,0 -1.19998,-1.2221 -1.19998,-1.2221 0,0 -2.39995,-1.2223 -2.39995,-1.2223 0,0 -5.99988,-1.2221 -5.99988,-1.2221 0,0 -5.99987,-0.6112 -5.99987,-0.6112 0,0 -5.39988,0.6112 -5.39988,0.6112 0,0 -7.19985,0 -7.19985,0 0,0 -4.19991,0 -4.19991,0 z"
+ id="path5685"
+ sodipodi:nodetypes="ccccccccccc"
+ inkscape:connector-curvature="0" />
+ <path
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ sodipodi:nodetypes="cccccccccccc"
+ id="path5687"
+ d="m 261.40065,-1100.9711 c 0,0 1.70967,-2.7954 1.70967,-2.7954 0,0 2.02641,-2.4427 2.02641,-2.4427 0,0 1.54734,-2.8707 1.54734,-2.8707 0,0 1.91642,-2.8912 1.91642,-2.8912 0,0 -1.30074,3.6512 -1.30074,3.6512 0,0 -0.95243,3.0079 -0.95243,3.0079 0,0 -0.46065,1.8973 -0.46065,1.8973 0,0 -0.85958,2.0216 -0.85958,2.0216 -0.34603,-0.2571 -0.78349,-0.2666 -1.17801,-0.397 0,0 -1.12659,0.4498 -1.12659,0.4498 0,0 -1.32184,0.3692 -1.32184,0.3692 z"
+ style="fill:#333333;stroke:none"
+ inkscape:connector-curvature="0" />
+ <path
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ sodipodi:nodetypes="ccccccccccccc"
+ style="fill:#808080;stroke:none"
+ d="m 278.20029,-1100.9711 c 0,0 -1.74718,-2.6968 -1.74718,-2.6968 0,0 -3.09839,-3.4415 -3.09839,-3.4415 0,0 -2.56346,-3.4328 -2.56346,-3.4328 0,0 -0.99079,-1.4289 -0.99079,-1.4289 0,0 1.07384,3.7096 1.07384,3.7096 0,0 1.17772,2.2247 1.17772,2.2247 0,0 1.04471,3.3983 1.04471,3.3983 0,0 0.30366,1.6674 0.30366,1.6674 0,0 1.07862,0.3681 1.07862,0.3681 0,0 1.64879,-0.389 1.64879,-0.389 0.69217,-0.07 1.38438,0.013 2.07248,0.021 l 0,0 z"
+ id="path5689"
+ inkscape:connector-curvature="0" />
+ <path
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ style="fill:#666666;stroke:none"
+ d="m 265.8028,-1100.917 c 0,0 1.29015,-3.3187 1.29015,-3.3187 0,0 0.62925,-3.4258 0.62925,-3.4258 0,0 0.91011,-2.115 0.91011,-2.115 0,0 0.56817,-2.1946 0.56817,-2.1946 0,0 0.7887,2.2581 0.7887,2.2581 0,0 0.22406,2.1565 0.22406,2.1565 0,0 0.95403,1.9211 0.95403,1.9211 0,0 0.94577,2.2071 0.94577,2.2071 0,0 0.1768,1.5591 0.1768,1.5591 0,0 -1.58862,0.4542 -1.58862,0.4542 0,0 -1.50905,-0.5992 -1.50905,-0.5992 0,0 -1.66818,1.1023 -1.66818,1.1023 0,0 -1.72119,0 -1.72119,0 z"
+ id="path5691"
+ sodipodi:nodetypes="cccccccccccccc"
+ inkscape:connector-curvature="0" />
+ <path
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ id="path5693"
+ d="m 281.26914,-1100.3578 c 0,0 -2.10187,-1.5431 -2.10187,-1.5431 0,0 -1.34246,-1.0907 -1.34246,-1.0907 0,0 1.30382,2.0694 1.30382,2.0694 0,0 2.14051,0.5644 2.14051,0.5644 z"
+ style="fill:#808080;stroke:none"
+ sodipodi:nodetypes="ccccc"
+ inkscape:connector-curvature="0" />
+ <path
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ sodipodi:type="arc"
+ style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="path5695"
+ sodipodi:cx="441.1875"
+ sodipodi:cy="1099.6875"
+ sodipodi:rx="7.5845342"
+ sodipodi:ry="4.6875"
+ d="m 448.77203,1099.6875 a 7.5845342,4.6875 0 0 1 -7.58453,4.6875 l 0,-4.6875 z"
+ transform="matrix(0,0.966876,-1.53597,0,1984.08,-1542.21)"
+ sodipodi:start="0"
+ sodipodi:end="1.5707963" />
+ <path
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ sodipodi:nodetypes="cccccccccccc"
+ id="path5699"
+ d="m 283.03012,-1101.8294 c 0,0 0.74175,-2.4329 0.74175,-2.4329 0,0 0.91009,-2.115 0.91009,-2.115 0,0 0.56818,-2.1944 0.56818,-2.1944 0,0 0.7887,2.2581 0.7887,2.2581 0,0 1.01154,1.9273 1.01154,1.9273 0,0 0.72905,1.9211 0.72905,1.9211 0,0 -0.10416,2.0544 -0.10416,2.0544 0,0 1.00178,1.0243 1.00178,1.0243 0,0 -2.0623,-0.1136 -2.0623,-0.1136 0,0 -4.16225,-0.8773 -4.16225,-0.8773 0,0 0.57766,-1.4523 0.57766,-1.4523 z"
+ style="fill:#666666;stroke:none"
+ inkscape:connector-curvature="0" />
+ <path
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ sodipodi:nodetypes="ccccccccccc"
+ style="fill:#808080;stroke:none"
+ d="m 294.51245,-1100.4746 c 0,0 -1.40969,-0.8635 -1.40969,-0.8635 0,0 -1.97342,-2.7541 -1.97342,-2.7541 0,0 -2.90095,-2.5543 -2.90095,-2.5543 0,0 -2.26576,-1.9252 -2.26576,-1.9252 0,0 0.43635,1.6088 0.43635,1.6088 0,0 2.0027,3.2177 2.0027,3.2177 0,0 0.21973,2.9019 0.21973,2.9019 0,0 1.20364,0.9416 1.20364,0.9416 0,0 2.69994,-0.5347 2.69994,-0.5347 l 1.98746,-0.038 z"
+ id="path5703"
+ inkscape:connector-curvature="0" />
+ <path
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ sodipodi:nodetypes="cccccccccc"
+ id="path5705"
+ d="m 260.20067,-1097.3045 -1.19997,3.6667 29.99936,0 c 0,0 0,-1.2223 0,-1.2223 0,0 -1.19997,-1.2221 -1.19997,-1.2221 0,0 -5.99988,-1.2223 -5.99988,-1.2223 0,0 -5.99987,-0.611 -5.99987,-0.611 0,0 -5.99987,0.611 -5.99987,0.611 0,0 -6.4938,0.1823 -6.4938,0.1823 0,0 -3.106,-0.1823 -3.106,-0.1823 z"
+ style="color:#000000;fill:#0369a3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible"
+ inkscape:connector-curvature="0" />
+ <path
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ sodipodi:nodetypes="ccccccc"
+ id="path5707"
+ d="m 272.20042,-1094.8601 c 0,0 1.19998,-1.2221 1.19998,-1.2221 0,0 4.79989,0 4.79989,0 0,0 3.59992,1.2221 3.59992,1.2221 0,0 1.19998,1.2223 1.19998,1.2223 0,0 -2.39995,0 -2.39995,0 0,0 -8.39982,-1.2223 -8.39982,-1.2223 z"
+ style="opacity:0.5;fill:#1c99e0;stroke:none"
+ inkscape:connector-curvature="0" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ style="opacity:0.35;color:#000000;fill:url(#linearGradient9196) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect18985"
+ width="36"
+ height="1.0000159"
+ x="259"
+ y="-1093.6378" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ y="-1116.6378"
+ x="259"
+ height="1.0000159"
+ width="36"
+ id="rect18989"
+ style="opacity:0.25;color:#000000;fill:url(#linearGradient9198) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <path
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ inkscape:connector-curvature="0"
+ id="rect19532"
+ transform="translate(-123,-1753.64)"
+ d="m 357,635 0,4 14.5,0 0,-4 -14.5,0 z m 0,8 0,4 14.5,0 0,-4 -14.5,0 z m 0,8 0,4 14.5,0 0,-4 -14.5,0 z m 0,8 0,4 14.5,0 0,-4 -14.5,0 z m 0,8 0,4 14.5,0 0,-4 -14.5,0 z m 0,8 0,4 14.5,0 0,-4 -14.5,0 z m 0,8 0,4 14.5,0 0,-4 -14.5,0 z"
+ style="opacity:0.5;color:#000000;fill:url(#linearGradient9200) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ transform="matrix(0,-1,-1,0,0,0)"
+ style="color:#000000;fill:url(#radialGradient9202) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:15.99660015;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect19697"
+ width="12.222235"
+ height="35.999878"
+ x="1103.4155"
+ y="-295.00058" />
+ <path
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ sodipodi:type="arc"
+ style="opacity:0.73999999;color:#000000;fill:url(#linearGradient9204) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="path19701"
+ sodipodi:cx="441.1875"
+ sodipodi:cy="1099.6875"
+ sodipodi:rx="7.5845342"
+ sodipodi:ry="4.6875"
+ d="m 448.77203,1099.6875 a 7.5845342,4.6875 0 0 1 -7.58453,4.6875 l 0,-4.6875 z"
+ transform="matrix(0,0.791084,-1.28,0,1702.6,-1464.65)"
+ sodipodi:start="0"
+ sodipodi:end="1.5707963" />
+ <path
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ sodipodi:nodetypes="cccccccccc"
+ inkscape:connector-curvature="0"
+ id="rect18976"
+ d="m 259.00059,-1115.6378 0,22 36,0 0,-22 z m 1,1 34,0 0,20 -34,0 z"
+ style="opacity:0.35;color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ style="opacity:0.35;color:#000000;fill:url(#linearGradient9206) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect20151"
+ width="18.000031"
+ height="1.0000159"
+ x="234"
+ y="-1118.6378" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ transform="matrix(0,1,-1,0,0,0)"
+ y="-259.00003"
+ x="-1115.6378"
+ height="1.0000159"
+ width="23"
+ id="rect20768"
+ style="opacity:0.25;color:#000000;fill:url(#linearGradient9220) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ style="opacity:0.25;color:#000000;fill:url(#linearGradient9222) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect20772"
+ width="23"
+ height="1.0000159"
+ x="-1115.6378"
+ y="-296.00003"
+ transform="matrix(0,1,-1,0,0,0)" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ style="opacity:0.25;color:#000000;fill:url(#linearGradient9224) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect20776"
+ width="28"
+ height="1.0000159"
+ x="-1118.6379"
+ y="-257.00003"
+ transform="matrix(0,1,-1,0,0,0)" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ transform="matrix(0,1,-1,0,0,0)"
+ y="-298.00003"
+ x="-1118.6379"
+ height="1.0000159"
+ width="28"
+ id="rect20780"
+ style="opacity:0.25;color:#000000;fill:url(#linearGradient9226) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ y="-1091.6378"
+ x="259"
+ height="1.0000159"
+ width="36"
+ id="rect20784"
+ style="opacity:0.35;color:#000000;fill:url(#linearGradient9228) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect20151"
+ id="use14612"
+ transform="translate(0,8)"
+ width="5033"
+ height="1085" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(0,16)"
+ id="use14616"
+ xlink:href="#rect20151"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(0,24)"
+ id="use14618"
+ xlink:href="#rect20151"
+ y="0"
+ x="0" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect20151"
+ id="use14620"
+ transform="matrix(3.55555,0,0,1,-597.999,32)"
+ width="5033"
+ height="1085" />
+ <use
+ height="1085"
+ width="5033"
+ transform="matrix(3.55555,0,0,1,-597.999,40)"
+ id="use14622"
+ xlink:href="#rect20151"
+ y="0"
+ x="0" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect20151"
+ id="use14624"
+ transform="matrix(2.33333,0,0,1,-311.999,48)"
+ width="5033"
+ height="1085" />
+ </g>
+ <g
+ id="g8848">
+ <path
+ sodipodi:type="arc"
+ style="opacity:0.15;color:#000000;fill:none;stroke:#000000;stroke-width:1.73684001;stroke-miterlimit:4;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="path16883"
+ sodipodi:cx="1184.5"
+ sodipodi:cy="675.5"
+ sodipodi:rx="16.5"
+ sodipodi:ry="16.5"
+ d="m 1201,675.5 a 16.5,16.5 0 1 1 -33,0 16.5,16.5 0 1 1 33,0 z"
+ transform="matrix(1.15152,0,0,1.15152,-326.97,-1875.49)"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ <path
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;opacity:0.15;color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Sans"
+ d="m 1048,-1071.6378 a 1.0001,1.0001 0 0 1 -1,-1 l 0,-32 a 1.0001,1.0001 0 0 1 1,-1 l 32,0 a 1.0001,1.0001 0 0 1 1,1 l 0,32 a 1.0001,1.0001 0 0 1 -1,1 l -32,0 z m 1,-2 30,0 0,-30 -30,0 0,30 z"
+ id="path16885"
+ inkscape:connector-curvature="0" />
+ <path
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;opacity:0.15;color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.42500001;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Sans"
+ d="m 1041.6003,-1097.5587 c -0.2217,0.079 -0.4124,0.2313 -0.5295,0.424 l -9.8301,16.0413 -10.0585,15.7153 c -0.4092,0.5886 -0.1611,1.7898 1.0709,1.7394 l 19.7251,0 19.3839,0 c 1.1879,0 1.4314,-1.2862 0.7975,-2.39 l -9.4439,-15.0647 -9.8301,-16.0413 c -0.2412,-0.4057 -0.825,-0.5983 -1.2853,-0.424 z m 0.3779,2.8974 8.9984,14.4866 8.9983,14.5573 -17.9967,0 -17.9966,0 8.9982,-14.5573 z"
+ id="path16887"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cccccccccccccccccc" />
+ <path
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ sodipodi:type="arc"
+ style="opacity:0.6;color:#000000;fill:#f09e6f;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.94117999;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="path10836"
+ sodipodi:cx="1184.5"
+ sodipodi:cy="675.5"
+ sodipodi:rx="16.5"
+ sodipodi:ry="16.5"
+ d="m 1201,675.5 a 16.5,16.5 0 1 1 -33,0 16.5,16.5 0 1 1 33,0 z"
+ transform="matrix(1.0303,0,0,1.0303,-183.394,-1794.61)" />
+ <path
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ transform="matrix(1.15152,0,0,1.15152,-326.97,-1876.49)"
+ d="m 1201,675.5 a 16.5,16.5 0 1 1 -33,0 16.5,16.5 0 1 1 33,0 z"
+ sodipodi:ry="16.5"
+ sodipodi:rx="16.5"
+ sodipodi:cy="675.5"
+ sodipodi:cx="1184.5"
+ id="path14848"
+ style="color:#000000;fill:url(#linearGradient8905) #000000;fill-opacity:1;fill-rule:nonzero;stroke:url(#linearGradient8907) #000000;stroke-width:1.73684001;stroke-miterlimit:4;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible"
+ sodipodi:type="arc" />
+ <path
+ transform="matrix(1.0303,0,0,1.0303,-183.394,-1794.61)"
+ d="m 1201,675.5 a 16.5,16.5 0 1 1 -33,0 16.5,16.5 0 1 1 33,0 z"
+ sodipodi:ry="16.5"
+ sodipodi:rx="16.5"
+ sodipodi:cy="675.5"
+ sodipodi:cx="1184.5"
+ id="path9670"
+ style="color:#000000;fill:url(#linearGradient8909) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.94117999;marker:none;visibility:visible;display:inline;overflow:visible"
+ sodipodi:type="arc"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ <path
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ sodipodi:type="arc"
+ style="opacity:0.25;color:#000000;fill:url(#radialGradient8911) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:15.99660015;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="path9674"
+ sodipodi:cx="1201"
+ sodipodi:cy="179.75"
+ sodipodi:rx="16"
+ sodipodi:ry="16"
+ d="m 1217,179.75 a 16,16 0 1 1 -32,0 16,16 0 1 1 32,0 z"
+ transform="matrix(0.649306,0,0,0.649306,262.851,-1222.91)"
+ inkscape:transform-center-x="-15.258694"
+ inkscape:transform-center-y="-8.7655354" />
+ <path
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ inkscape:connector-curvature="0"
+ id="rect10810"
+ d="m 1048,-1072.6378 a 1.0001,1.0001 0 0 1 -1,-1 l 0,-32 a 1.0001,1.0001 0 0 1 1,-1 l 32,0 a 1.0001,1.0001 0 0 1 1,1 l 0,32 a 1.0001,1.0001 0 0 1 -1,1 l -32,0 z m 1,-2 30,0 0,-30 -30,0 0,30 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;opacity:0.8;color:#000000;fill:url(#linearGradient8913) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Sans" />
+ <rect
+ id="rect5473"
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ transform="scale(1,-1)"
+ y="1074.6378"
+ x="1049"
+ height="30"
+ width="30"
+ style="color:#000000;fill:url(#linearGradient8915) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ style="opacity:0.6;color:#000000;fill:url(#linearGradient8917) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect10840"
+ width="28"
+ height="28"
+ x="1050"
+ y="-1103.6378" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ y="-1103.6249"
+ x="-1078.0001"
+ height="28"
+ width="13"
+ id="rect15216"
+ style="opacity:0.35;color:#000000;fill:url(#linearGradient8919) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:15.99660015;marker:none;visibility:visible;display:inline;overflow:visible"
+ transform="scale(-1,1)" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ style="opacity:0.5;color:#000000;fill:url(#linearGradient8921) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:15.99660015;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect15194"
+ width="13"
+ height="28"
+ x="1050.0001"
+ y="-1103.6249" />
+ <path
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ sodipodi:nodetypes="cccccccccccccccccc"
+ inkscape:connector-curvature="0"
+ id="path16774"
+ d="m 1041.6003,-1098.5587 c -0.2217,0.079 -0.4124,0.2313 -0.5295,0.424 l -9.8301,16.0413 -10.0585,15.7153 c -0.4092,0.5886 -0.1611,1.7898 1.0709,1.7394 l 19.7251,0 19.3839,0 c 1.1879,0 1.4314,-1.2862 0.7975,-2.39 l -9.4439,-15.0647 -9.8301,-16.0413 c -0.2412,-0.4057 -0.825,-0.5983 -1.2853,-0.424 z m 0.3779,2.8974 8.9984,14.4866 8.9983,14.5573 -17.9967,0 -17.9966,0 8.9982,-14.5573 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:url(#linearGradient8923) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.42500001;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Sans" />
+ <path
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ transform="matrix(2.20316,0,0,2.04933,-1518.08,-2912.5)"
+ d="m 1170.1701,900.71699 -8.1701,0 -8.1701,0 4.0851,-7.07549 4.085,-7.07548 4.085,7.07548 4.0851,7.07549 z"
+ inkscape:randomized="0"
+ inkscape:rounded="0"
+ inkscape:flatsided="false"
+ sodipodi:arg2="1.5707963"
+ sodipodi:arg1="0.52359878"
+ sodipodi:r2="4.7169905"
+ sodipodi:r1="9.4339809"
+ sodipodi:cy="896"
+ sodipodi:cx="1162"
+ sodipodi:sides="3"
+ style="color:#000000;fill:url(#linearGradient8925) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.425026;marker:none;visibility:visible;display:inline;overflow:visible"
+ sodipodi:type="star"
+ id="path15198" />
+ <path
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ sodipodi:type="star"
+ style="color:#000000;fill:url(#linearGradient8927) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.95880401;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="path15200"
+ sodipodi:sides="3"
+ sodipodi:cx="1162"
+ sodipodi:cy="896"
+ sodipodi:r1="9.4339809"
+ sodipodi:r2="4.7169905"
+ sodipodi:arg1="0.52359878"
+ sodipodi:arg2="1.5707963"
+ inkscape:flatsided="false"
+ inkscape:rounded="0"
+ inkscape:randomized="0"
+ d="m 1170.1701,900.71699 -8.1701,0 -8.1701,0 4.0851,-7.07549 4.085,-7.07548 4.085,7.07548 4.0851,7.07549 z"
+ transform="matrix(1.95837,0,0,1.83733,-1233.62,-2722.55)" />
+ <path
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ sodipodi:type="star"
+ style="opacity:0.35;color:#000000;fill:url(#linearGradient8929) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.85005301;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="path15204"
+ sodipodi:sides="3"
+ sodipodi:cx="1162"
+ sodipodi:cy="896"
+ sodipodi:r1="9.4339809"
+ sodipodi:r2="4.7169905"
+ sodipodi:arg1="0.52359878"
+ sodipodi:arg2="1.5707963"
+ inkscape:flatsided="false"
+ inkscape:rounded="0"
+ inkscape:randomized="0"
+ d="m 1170.1701,900.71699 -8.1701,0 -8.1701,0 4.0851,-7.07549 4.085,-7.07548 4.085,7.07548 4.0851,7.07549 z"
+ transform="matrix(-0.736406,0,0,0.674238,1907.69,-1674.94)" />
+ <path
+ transform="matrix(0.736406,0,0,0.674238,176.313,-1674.94)"
+ d="m 1170.1701,900.71699 -8.1701,0 -8.1701,0 4.0851,-7.07549 4.085,-7.07548 4.085,7.07548 4.0851,7.07549 z"
+ inkscape:randomized="0"
+ inkscape:rounded="0"
+ inkscape:flatsided="false"
+ sodipodi:arg2="1.5707963"
+ sodipodi:arg1="0.52359878"
+ sodipodi:r2="4.7169905"
+ sodipodi:r1="9.4339809"
+ sodipodi:cy="896"
+ sodipodi:cx="1162"
+ sodipodi:sides="3"
+ id="path15202"
+ style="opacity:0.35;color:#000000;fill:url(#linearGradient8931) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.85005301;marker:none;visibility:visible;display:inline;overflow:visible"
+ sodipodi:type="star"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ transform="matrix(0,1,-1,0,0,0)"
+ style="opacity:0.5;color:#000000;fill:url(#radialGradient8933) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:15.99660015;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect10050"
+ width="13.000032"
+ height="26"
+ x="-1079.6378"
+ y="-1055" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ y="-1068.1378"
+ x="1019.5"
+ height="5"
+ width="5"
+ id="rect15212"
+ style="opacity:0.75;color:#000000;fill:#9ef290;fill-opacity:1;fill-rule:nonzero;stroke:#18a303;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ style="opacity:0.75;color:#000000;fill:url(#linearGradient8935) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:15.99660015;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect15230"
+ width="3"
+ height="3"
+ x="1021"
+ y="-1067.6378" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ y="-1068.6378"
+ x="1026"
+ height="1"
+ width="31"
+ id="rect15238"
+ style="opacity:0.1;color:#000000;fill:url(#linearGradient8939) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <path
+ transform="matrix(0.550791,0,0,0.494666,401.981,-1532.19)"
+ d="m 1170.1701,900.71699 -8.1701,0 -8.1701,0 4.0851,-7.07549 4.085,-7.07548 4.085,7.07548 4.0851,7.07549 z"
+ inkscape:randomized="0"
+ inkscape:rounded="0"
+ inkscape:flatsided="false"
+ sodipodi:arg2="1.5707963"
+ sodipodi:arg1="0.52359878"
+ sodipodi:r2="4.7169905"
+ sodipodi:r1="9.4339809"
+ sodipodi:cy="896"
+ sodipodi:cx="1162"
+ sodipodi:sides="3"
+ id="path15206"
+ style="opacity:0.2;color:#000000;fill:url(#linearGradient8941) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.14125001;marker:none;visibility:visible;display:inline;overflow:visible"
+ sodipodi:type="star"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ style="opacity:0.15;color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect16758"
+ width="6"
+ height="1"
+ x="1039"
+ y="-1094.6378" />
+ <path
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;opacity:0.5;color:#000000;fill:url(#linearGradient8945) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Sans"
+ d="m 1049.6436,-1088.6919 -0.7487,0.4664 8.5814,13.6418 0.7487,-0.4664 -8.5814,-13.6418 z"
+ id="path15242"
+ inkscape:connector-curvature="0" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ style="opacity:0.25;color:#000000;fill:url(#linearGradient8947) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect15220"
+ width="14.000031"
+ height="0.50000793"
+ x="1057.0001"
+ y="-1075.1249" />
+ <path
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ sodipodi:nodetypes="cccccsc"
+ inkscape:connector-curvature="0"
+ id="path16881"
+ d="m 1029.5,-1081.7941 8,-13.093 0,-7.2508 8,2e-4 0,-4.4665 c 0,-0.963 0.7895,-1.5336 2,-1.5336 1.2505,0 5.8552,0 5.8552,0"
+ style="opacity:0.05;fill:none;stroke:#800000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ transform="matrix(0,-1,-1,0,0,0)"
+ style="opacity:0.5;color:#000000;fill:url(#radialGradient8949) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:15.99660015;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect9730"
+ width="14.999985"
+ height="29.999969"
+ x="1089.6378"
+ y="-1079" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect15212"
+ id="use14634"
+ transform="translate(40,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect15230"
+ id="use14636"
+ transform="translate(40,0)"
+ width="5033"
+ height="1085" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(20,-32)"
+ id="use14638"
+ xlink:href="#rect15212"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(20,-32)"
+ id="use14640"
+ xlink:href="#rect15230"
+ y="0"
+ x="0" />
+ </g>
+ <g
+ id="g22069"
+ transform="translate(2,0)">
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ style="opacity:0.15;color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect10395"
+ width="127.99977"
+ height="28.000038"
+ x="3666"
+ y="-1518.6379" />
+ <rect
+ y="-1520.6379"
+ x="3666"
+ height="28.000038"
+ width="127.99977"
+ id="use8350"
+ style="color:#000000;fill:url(#linearGradient22171) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ <rect
+ y="-1602.6378"
+ x="3666"
+ height="83.999855"
+ width="127.99978"
+ id="rect8352"
+ style="color:#000000;fill:url(#linearGradient22173) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ rx="1"
+ ry="1"
+ style="color:#000000;fill:url(#linearGradient22175) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect9908"
+ width="122"
+ height="78"
+ x="3669"
+ y="-1599.6379" />
+ <rect
+ rx="2"
+ ry="1.9999999"
+ y="-1598.6378"
+ x="3670"
+ height="76"
+ width="30"
+ id="rect10222"
+ style="opacity:0.25;color:#000000;fill:url(#linearGradient22213) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:15.99660015;marker:none;visibility:visible;display:inline;overflow:visible"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ <rect
+ y="-1517.6379"
+ x="3669"
+ height="22"
+ width="122"
+ id="rect8354"
+ style="color:#000000;fill:url(#linearGradient22179) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <g
+ transform="matrix(2.0003,0,0,2,-3609.1,631.134)"
+ id="g9965"
+ style="font-size:8.76535988px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;fill:#ffffff;fill-opacity:1;stroke:none">
+ <path
+ id="path9967"
+ style="fill:#ffffff;font-family:DejaVu Sans Mono"
+ d="m 3655.2528,-1071.3549 0,0.7704 c -0.2254,-0.1313 -0.4523,-0.2297 -0.6805,-0.2953 -0.2283,-0.066 -0.4608,-0.099 -0.6977,-0.099 -0.3566,0 -0.6234,0.059 -0.8003,0.1755 -0.1741,0.1141 -0.2611,0.2896 -0.2611,0.5264 0,0.214 0.066,0.3738 0.1969,0.4794 0.1312,0.1056 0.4579,0.2083 0.9801,0.3082 l 0.3167,0.06 c 0.3909,0.074 0.6862,0.2225 0.886,0.4451 0.2025,0.2225 0.3038,0.5122 0.3038,0.8688 0,0.4737 -0.1683,0.8446 -0.505,1.1128 -0.3367,0.2654 -0.8046,0.398 -1.4038,0.398 -0.2369,0 -0.4851,-0.026 -0.7447,-0.077 -0.2597,-0.049 -0.5407,-0.1227 -0.8432,-0.2225 l 0,-0.8132 c 0.2939,0.1512 0.575,0.2653 0.8432,0.3424 0.2682,0.074 0.5221,0.1112 0.7618,0.1112 0.3481,0 0.6177,-0.07 0.8089,-0.2097 0.1912,-0.1426 0.2868,-0.341 0.2868,-0.5949 0,-0.3652 -0.3496,-0.6177 -1.0486,-0.7576 l -0.034,-0.01 -0.2953,-0.06 c -0.4537,-0.089 -0.7846,-0.2369 -0.9929,-0.4451 -0.2083,-0.2112 -0.3125,-0.4979 -0.3125,-0.8603 0,-0.4594 0.1555,-0.8132 0.4665,-1.0614 0.3111,-0.2511 0.7547,-0.3767 1.3311,-0.3767 0.2568,0 0.5036,0.024 0.7404,0.073 0.2369,0.046 0.4694,0.1155 0.6977,0.2097"
+ inkscape:connector-curvature="0" />
+ <path
+ id="path9969"
+ style="fill:#ffffff;font-family:DejaVu Sans Mono"
+ d="m 3657.8135,-1069.1036 c 0,0.6106 0.096,1.0714 0.2867,1.3824 0.1941,0.311 0.4808,0.4665 0.8603,0.4665 0.3795,0 0.6663,-0.1555 0.8603,-0.4665 0.1969,-0.3139 0.2953,-0.7747 0.2953,-1.3824 0,-0.6078 -0.098,-1.0672 -0.2953,-1.3782 -0.194,-0.3139 -0.4808,-0.4708 -0.8603,-0.4708 -0.3795,0 -0.6662,0.1555 -0.8603,0.4665 -0.1911,0.311 -0.2867,0.7718 -0.2867,1.3825 m 2.3026,1.7804 c -0.1284,0.2368 -0.3024,0.4195 -0.5222,0.5478 -0.2168,0.1256 -0.4693,0.1884 -0.7575,0.1884 -0.5735,0 -1.0272,-0.2212 -1.361,-0.6634 -0.331,-0.4451 -0.4965,-1.0572 -0.4965,-1.8361 0,-0.7932 0.1655,-1.4138 0.4965,-1.8618 0.331,-0.448 0.7846,-0.672 1.361,-0.672 0.2853,0 0.5364,0.063 0.7533,0.1884 0.2197,0.1226 0.3951,0.3024 0.5264,0.5392 l 0,-0.612 0.7918,0 0,6.6168 -0.7918,0 0,-2.4353"
+ inkscape:connector-curvature="0" />
+ <path
+ id="path9971"
+ style="fill:#ffffff;font-family:DejaVu Sans Mono"
+ d="m 3666.5463,-1070.4394 c -0.1683,-0.1313 -0.3395,-0.2268 -0.5136,-0.2868 -0.174,-0.06 -0.3652,-0.09 -0.5735,-0.09 -0.4908,0 -0.866,0.154 -1.1256,0.4622 -0.2597,0.3082 -0.3895,0.7533 -0.3895,1.3353 l 0,2.384 -0.7918,0 0,-4.7936 0.7918,0 0,0.9373 c 0.1312,-0.3395 0.3324,-0.5992 0.6035,-0.7789 0.2739,-0.1826 0.5977,-0.2739 0.9715,-0.2739 0.194,0 0.3752,0.024 0.5436,0.073 0.1683,0.049 0.3295,0.1241 0.4836,0.2269 l 0,0.8046"
+ inkscape:connector-curvature="0" />
+ <path
+ id="path9973"
+ style="fill:#ffffff;font-family:DejaVu Sans Mono"
+ d="m 3669.8788,-1072.7579 0,1.3611 1.789,0 0,0.612 -1.789,0 0,2.6022 c 0,0.3538 0.067,0.6006 0.2011,0.7405 0.1341,0.1398 0.3681,0.2097 0.7019,0.2097 l 0.886,0 0,0.6291 -0.963,0 c -0.5906,0 -1.0072,-0.1184 -1.2498,-0.3552 -0.2425,-0.2368 -0.3638,-0.6449 -0.3638,-1.2241 l 0,-2.6022 -1.2797,0 0,-0.612 1.2797,0 0,-1.3611 0.7876,0"
+ inkscape:connector-curvature="0" />
+ <path
+ id="path9975"
+ style="fill:#ffffff;font-family:DejaVu Sans Mono"
+ d="m 3677.1676,-1066.1651 0,0.6163 -0.2739,0 c -0.7105,0 -1.187,-0.1055 -1.4295,-0.3167 -0.2397,-0.2111 -0.3596,-0.632 -0.3595,-1.2626 l 0,-1.0229 c -10e-5,-0.4308 -0.077,-0.729 -0.2312,-0.8945 -0.1512,-0.1655 -0.4265,-0.2482 -0.826,-0.2482 l -0.2654,0 0,-0.6121 0.2654,0 c 0.4023,0 0.6791,-0.081 0.8303,-0.2439 0.1512,-0.1627 0.2268,-0.458 0.2269,-0.886 l 0,-1.0272 c -10e-5,-0.6305 0.1198,-1.05 0.3595,-1.2583 0.2425,-0.2111 0.719,-0.3167 1.4295,-0.3167 l 0.2739,0 0,0.612 -0.2996,0 c -0.3995,1e-4 -0.6606,0.063 -0.7832,0.1884 -0.1199,0.1227 -0.1798,0.3866 -0.1798,0.7918 l 0,1.0614 c 0,0.448 -0.066,0.7732 -0.1969,0.9758 -0.1284,0.2026 -0.3495,0.3396 -0.6634,0.4109 0.3167,0.077 0.5393,0.2168 0.6677,0.4194 0.1284,0.2026 0.1926,0.5265 0.1926,0.9716 l 0,1.0614 c 0,0.408 0.06,0.6734 0.1798,0.7961 0.1226,0.1227 0.3837,0.184 0.7832,0.184 l 0.2996,0"
+ inkscape:connector-curvature="0" />
+ <path
+ id="path9977"
+ style="fill:#ffffff;font-family:DejaVu Sans Mono"
+ d="m 3682.5192,-1071.5218 -1.7163,2.294 1.8832,2.4995 -0.9116,0 -1.4039,-1.9217 -1.3995,1.9217 -0.9116,0 1.8831,-2.4995 -1.7162,-2.294 0.8731,0 1.2711,1.7334 1.2626,-1.7334 0.886,0"
+ inkscape:connector-curvature="0" />
+ <path
+ id="path9979"
+ style="fill:#ffffff;font-family:DejaVu Sans Mono"
+ d="m 3683.8592,-1066.1651 0.291,0 c 0.4024,0 0.6649,-0.063 0.7876,-0.1883 0.1227,-0.1255 0.184,-0.3895 0.184,-0.7918 l 0,-1.0614 c 0,-0.4451 0.064,-0.769 0.1926,-0.9716 0.1284,-0.2026 0.351,-0.3424 0.6677,-0.4194 -0.3139,-0.071 -0.5365,-0.2083 -0.6677,-0.4109 -0.1284,-0.2026 -0.1926,-0.5278 -0.1926,-0.9758 l 0,-1.0614 c 0,-0.4024 -0.061,-0.6663 -0.184,-0.7918 -0.1227,-0.1256 -0.3852,-0.1883 -0.7876,-0.1884 l -0.291,0 0,-0.612 0.2654,0 c 0.7104,0 1.1855,0.1056 1.4252,0.3167 0.2397,0.2083 0.3595,0.6278 0.3595,1.2583 l 0,1.0272 c 0,0.428 0.076,0.7233 0.2269,0.886 0.154,0.1626 0.4322,0.2439 0.8345,0.2439 l 0.274,0 0,0.6121 -0.274,0 c -0.4023,0 -0.6805,0.083 -0.8345,0.2482 -0.1513,0.1655 -0.2269,0.4637 -0.2269,0.8945 l 0,1.0229 c 0,0.6306 -0.1198,1.0515 -0.3595,1.2626 -0.2397,0.2112 -0.7148,0.3167 -1.4252,0.3167 l -0.2654,0 0,-0.6163"
+ inkscape:connector-curvature="0" />
+ </g>
+ <g
+ transform="matrix(2.0003,0,0,2,-3609.1,634.134)"
+ id="g9949"
+ style="font-size:8.76535988px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;opacity:0.15;fill:#000000;fill-opacity:1;stroke:none">
+ <path
+ id="path9951"
+ style="font-family:DejaVu Sans Mono"
+ d="m 3655.2528,-1071.3549 0,0.7704 c -0.2254,-0.1313 -0.4523,-0.2297 -0.6805,-0.2953 -0.2283,-0.066 -0.4608,-0.099 -0.6977,-0.099 -0.3566,0 -0.6234,0.059 -0.8003,0.1755 -0.1741,0.1141 -0.2611,0.2896 -0.2611,0.5264 0,0.214 0.066,0.3738 0.1969,0.4794 0.1312,0.1056 0.4579,0.2083 0.9801,0.3082 l 0.3167,0.06 c 0.3909,0.074 0.6862,0.2225 0.886,0.4451 0.2025,0.2225 0.3038,0.5122 0.3038,0.8688 0,0.4737 -0.1683,0.8446 -0.505,1.1128 -0.3367,0.2654 -0.8046,0.398 -1.4038,0.398 -0.2369,0 -0.4851,-0.026 -0.7447,-0.077 -0.2597,-0.049 -0.5407,-0.1227 -0.8432,-0.2225 l 0,-0.8132 c 0.2939,0.1512 0.575,0.2653 0.8432,0.3424 0.2682,0.074 0.5221,0.1112 0.7618,0.1112 0.3481,0 0.6177,-0.07 0.8089,-0.2097 0.1912,-0.1426 0.2868,-0.341 0.2868,-0.5949 0,-0.3652 -0.3496,-0.6177 -1.0486,-0.7576 l -0.034,-0.01 -0.2953,-0.06 c -0.4537,-0.089 -0.7846,-0.2369 -0.9929,-0.4451 -0.2083,-0.2112 -0.3125,-0.4979 -0.3125,-0.8603 0,-0.4594 0.1555,-0.8132 0.4665,-1.0614 0.3111,-0.2511 0.7547,-0.3767 1.3311,-0.3767 0.2568,0 0.5036,0.024 0.7404,0.073 0.2369,0.046 0.4694,0.1155 0.6977,0.2097"
+ inkscape:connector-curvature="0" />
+ <path
+ id="path9953"
+ style="font-family:DejaVu Sans Mono"
+ d="m 3657.8135,-1069.1036 c 0,0.6106 0.096,1.0714 0.2867,1.3824 0.1941,0.311 0.4808,0.4665 0.8603,0.4665 0.3795,0 0.6663,-0.1555 0.8603,-0.4665 0.1969,-0.3139 0.2953,-0.7747 0.2953,-1.3824 0,-0.6078 -0.098,-1.0672 -0.2953,-1.3782 -0.194,-0.3139 -0.4808,-0.4708 -0.8603,-0.4708 -0.3795,0 -0.6662,0.1555 -0.8603,0.4665 -0.1911,0.311 -0.2867,0.7718 -0.2867,1.3825 m 2.3026,1.7804 c -0.1284,0.2368 -0.3024,0.4195 -0.5222,0.5478 -0.2168,0.1256 -0.4693,0.1884 -0.7575,0.1884 -0.5735,0 -1.0272,-0.2212 -1.361,-0.6634 -0.331,-0.4451 -0.4965,-1.0572 -0.4965,-1.8361 0,-0.7932 0.1655,-1.4138 0.4965,-1.8618 0.331,-0.448 0.7846,-0.672 1.361,-0.672 0.2853,0 0.5364,0.063 0.7533,0.1884 0.2197,0.1226 0.3951,0.3024 0.5264,0.5392 l 0,-0.612 0.7918,0 0,6.6168 -0.7918,0 0,-2.4353"
+ inkscape:connector-curvature="0" />
+ <path
+ id="path9955"
+ style="font-family:DejaVu Sans Mono"
+ d="m 3666.5463,-1070.4394 c -0.1683,-0.1313 -0.3395,-0.2268 -0.5136,-0.2868 -0.174,-0.06 -0.3652,-0.09 -0.5735,-0.09 -0.4908,0 -0.866,0.154 -1.1256,0.4622 -0.2597,0.3082 -0.3895,0.7533 -0.3895,1.3353 l 0,2.384 -0.7918,0 0,-4.7936 0.7918,0 0,0.9373 c 0.1312,-0.3395 0.3324,-0.5992 0.6035,-0.7789 0.2739,-0.1826 0.5977,-0.2739 0.9715,-0.2739 0.194,0 0.3752,0.024 0.5436,0.073 0.1683,0.049 0.3295,0.1241 0.4836,0.2269 l 0,0.8046"
+ inkscape:connector-curvature="0" />
+ <path
+ id="path9957"
+ style="font-family:DejaVu Sans Mono"
+ d="m 3669.8788,-1072.7579 0,1.3611 1.789,0 0,0.612 -1.789,0 0,2.6022 c 0,0.3538 0.067,0.6006 0.2011,0.7405 0.1341,0.1398 0.3681,0.2097 0.7019,0.2097 l 0.886,0 0,0.6291 -0.963,0 c -0.5906,0 -1.0072,-0.1184 -1.2498,-0.3552 -0.2425,-0.2368 -0.3638,-0.6449 -0.3638,-1.2241 l 0,-2.6022 -1.2797,0 0,-0.612 1.2797,0 0,-1.3611 0.7876,0"
+ inkscape:connector-curvature="0" />
+ <path
+ id="path9959"
+ style="font-family:DejaVu Sans Mono"
+ d="m 3677.1676,-1066.1651 0,0.6163 -0.2739,0 c -0.7105,0 -1.187,-0.1055 -1.4295,-0.3167 -0.2397,-0.2111 -0.3596,-0.632 -0.3595,-1.2626 l 0,-1.0229 c -10e-5,-0.4308 -0.077,-0.729 -0.2312,-0.8945 -0.1512,-0.1655 -0.4265,-0.2482 -0.826,-0.2482 l -0.2654,0 0,-0.6121 0.2654,0 c 0.4023,0 0.6791,-0.081 0.8303,-0.2439 0.1512,-0.1627 0.2268,-0.458 0.2269,-0.886 l 0,-1.0272 c -10e-5,-0.6305 0.1198,-1.05 0.3595,-1.2583 0.2425,-0.2111 0.719,-0.3167 1.4295,-0.3167 l 0.2739,0 0,0.612 -0.2996,0 c -0.3995,1e-4 -0.6606,0.063 -0.7832,0.1884 -0.1199,0.1227 -0.1798,0.3866 -0.1798,0.7918 l 0,1.0614 c 0,0.448 -0.066,0.7732 -0.1969,0.9758 -0.1284,0.2026 -0.3495,0.3396 -0.6634,0.4109 0.3167,0.077 0.5393,0.2168 0.6677,0.4194 0.1284,0.2026 0.1926,0.5265 0.1926,0.9716 l 0,1.0614 c 0,0.408 0.06,0.6734 0.1798,0.7961 0.1226,0.1227 0.3837,0.184 0.7832,0.184 l 0.2996,0"
+ inkscape:connector-curvature="0" />
+ <path
+ id="path9961"
+ style="font-family:DejaVu Sans Mono"
+ d="m 3682.5192,-1071.5218 -1.7163,2.294 1.8832,2.4995 -0.9116,0 -1.4039,-1.9217 -1.3995,1.9217 -0.9116,0 1.8831,-2.4995 -1.7162,-2.294 0.8731,0 1.2711,1.7334 1.2626,-1.7334 0.886,0"
+ inkscape:connector-curvature="0" />
+ <path
+ id="path9963"
+ style="font-family:DejaVu Sans Mono"
+ d="m 3683.8592,-1066.1651 0.291,0 c 0.4024,0 0.6649,-0.063 0.7876,-0.1883 0.1227,-0.1255 0.184,-0.3895 0.184,-0.7918 l 0,-1.0614 c 0,-0.4451 0.064,-0.769 0.1926,-0.9716 0.1284,-0.2026 0.351,-0.3424 0.6677,-0.4194 -0.3139,-0.071 -0.5365,-0.2083 -0.6677,-0.4109 -0.1284,-0.2026 -0.1926,-0.5278 -0.1926,-0.9758 l 0,-1.0614 c 0,-0.4024 -0.061,-0.6663 -0.184,-0.7918 -0.1227,-0.1256 -0.3852,-0.1883 -0.7876,-0.1884 l -0.291,0 0,-0.612 0.2654,0 c 0.7104,0 1.1855,0.1056 1.4252,0.3167 0.2397,0.2083 0.3595,0.6278 0.3595,1.2583 l 0,1.0272 c 0,0.428 0.076,0.7233 0.2269,0.886 0.154,0.1626 0.4322,0.2439 0.8345,0.2439 l 0.274,0 0,0.6121 -0.274,0 c -0.4023,0 -0.6805,0.083 -0.8345,0.2482 -0.1513,0.1655 -0.2269,0.4637 -0.2269,0.8945 l 0,1.0229 c 0,0.6306 -0.1198,1.0515 -0.3595,1.2626 -0.2397,0.2112 -0.7148,0.3167 -1.4252,0.3167 l -0.2654,0 0,-0.6163"
+ inkscape:connector-curvature="0" />
+ </g>
+ <g
+ style="font-size:8.76535988px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;opacity:0.9;fill:url(#linearGradient22195) #000000;fill-opacity:1;stroke:none"
+ id="g8358"
+ transform="matrix(2.0003,0,0,2,-3609.1,632.134)">
+ <path
+ inkscape:connector-curvature="0"
+ d="m 3655.2528,-1071.3549 0,0.7704 c -0.2254,-0.1313 -0.4523,-0.2297 -0.6805,-0.2953 -0.2283,-0.066 -0.4608,-0.099 -0.6977,-0.099 -0.3566,0 -0.6234,0.059 -0.8003,0.1755 -0.1741,0.1141 -0.2611,0.2896 -0.2611,0.5264 0,0.214 0.066,0.3738 0.1969,0.4794 0.1312,0.1056 0.4579,0.2083 0.9801,0.3082 l 0.3167,0.06 c 0.3909,0.074 0.6862,0.2225 0.886,0.4451 0.2025,0.2225 0.3038,0.5122 0.3038,0.8688 0,0.4737 -0.1683,0.8446 -0.505,1.1128 -0.3367,0.2654 -0.8046,0.398 -1.4038,0.398 -0.2369,0 -0.4851,-0.026 -0.7447,-0.077 -0.2597,-0.049 -0.5407,-0.1227 -0.8432,-0.2225 l 0,-0.8132 c 0.2939,0.1512 0.575,0.2653 0.8432,0.3424 0.2682,0.074 0.5221,0.1112 0.7618,0.1112 0.3481,0 0.6177,-0.07 0.8089,-0.2097 0.1912,-0.1426 0.2868,-0.341 0.2868,-0.5949 0,-0.3652 -0.3496,-0.6177 -1.0486,-0.7576 l -0.034,-0.01 -0.2953,-0.06 c -0.4537,-0.089 -0.7846,-0.2369 -0.9929,-0.4451 -0.2083,-0.2112 -0.3125,-0.4979 -0.3125,-0.8603 0,-0.4594 0.1555,-0.8132 0.4665,-1.0614 0.3111,-0.2511 0.7547,-0.3767 1.3311,-0.3767 0.2568,0 0.5036,0.024 0.7404,0.073 0.2369,0.046 0.4694,0.1155 0.6977,0.2097"
+ style="fill:url(#linearGradient22181) #000000;fill-opacity:1;font-family:DejaVu Sans Mono"
+ id="path8361" />
+ <path
+ inkscape:connector-curvature="0"
+ d="m 3657.8135,-1069.1036 c 0,0.6106 0.096,1.0714 0.2867,1.3824 0.1941,0.311 0.4808,0.4665 0.8603,0.4665 0.3795,0 0.6663,-0.1555 0.8603,-0.4665 0.1969,-0.3139 0.2953,-0.7747 0.2953,-1.3824 0,-0.6078 -0.098,-1.0672 -0.2953,-1.3782 -0.194,-0.3139 -0.4808,-0.4708 -0.8603,-0.4708 -0.3795,0 -0.6662,0.1555 -0.8603,0.4665 -0.1911,0.311 -0.2867,0.7718 -0.2867,1.3825 m 2.3026,1.7804 c -0.1284,0.2368 -0.3024,0.4195 -0.5222,0.5478 -0.2168,0.1256 -0.4693,0.1884 -0.7575,0.1884 -0.5735,0 -1.0272,-0.2212 -1.361,-0.6634 -0.331,-0.4451 -0.4965,-1.0572 -0.4965,-1.8361 0,-0.7932 0.1655,-1.4138 0.4965,-1.8618 0.331,-0.448 0.7846,-0.672 1.361,-0.672 0.2853,0 0.5364,0.063 0.7533,0.1884 0.2197,0.1226 0.3951,0.3024 0.5264,0.5392 l 0,-0.612 0.7918,0 0,6.6168 -0.7918,0 0,-2.4353"
+ style="fill:url(#linearGradient22183) #000000;fill-opacity:1;font-family:DejaVu Sans Mono"
+ id="path8363" />
+ <path
+ inkscape:connector-curvature="0"
+ d="m 3666.5463,-1070.4394 c -0.1683,-0.1313 -0.3395,-0.2268 -0.5136,-0.2868 -0.174,-0.06 -0.3652,-0.09 -0.5735,-0.09 -0.4908,0 -0.866,0.154 -1.1256,0.4622 -0.2597,0.3082 -0.3895,0.7533 -0.3895,1.3353 l 0,2.384 -0.7918,0 0,-4.7936 0.7918,0 0,0.9373 c 0.1312,-0.3395 0.3324,-0.5992 0.6035,-0.7789 0.2739,-0.1826 0.5977,-0.2739 0.9715,-0.2739 0.194,0 0.3752,0.024 0.5436,0.073 0.1683,0.049 0.3295,0.1241 0.4836,0.2269 l 0,0.8046"
+ style="fill:url(#linearGradient22185) #000000;fill-opacity:1;font-family:DejaVu Sans Mono"
+ id="path8365" />
+ <path
+ inkscape:connector-curvature="0"
+ d="m 3669.8788,-1072.7579 0,1.3611 1.789,0 0,0.612 -1.789,0 0,2.6022 c 0,0.3538 0.067,0.6006 0.2011,0.7405 0.1341,0.1398 0.3681,0.2097 0.7019,0.2097 l 0.886,0 0,0.6291 -0.963,0 c -0.5906,0 -1.0072,-0.1184 -1.2498,-0.3552 -0.2425,-0.2368 -0.3638,-0.6449 -0.3638,-1.2241 l 0,-2.6022 -1.2797,0 0,-0.612 1.2797,0 0,-1.3611 0.7876,0"
+ style="fill:url(#linearGradient22187) #000000;fill-opacity:1;font-family:DejaVu Sans Mono"
+ id="path8367" />
+ <path
+ inkscape:connector-curvature="0"
+ d="m 3677.1676,-1066.1651 0,0.6163 -0.2739,0 c -0.7105,0 -1.187,-0.1055 -1.4295,-0.3167 -0.2397,-0.2111 -0.3596,-0.632 -0.3595,-1.2626 l 0,-1.0229 c -10e-5,-0.4308 -0.077,-0.729 -0.2312,-0.8945 -0.1512,-0.1655 -0.4265,-0.2482 -0.826,-0.2482 l -0.2654,0 0,-0.6121 0.2654,0 c 0.4023,0 0.6791,-0.081 0.8303,-0.2439 0.1512,-0.1627 0.2268,-0.458 0.2269,-0.886 l 0,-1.0272 c -10e-5,-0.6305 0.1198,-1.05 0.3595,-1.2583 0.2425,-0.2111 0.719,-0.3167 1.4295,-0.3167 l 0.2739,0 0,0.612 -0.2996,0 c -0.3995,1e-4 -0.6606,0.063 -0.7832,0.1884 -0.1199,0.1227 -0.1798,0.3866 -0.1798,0.7918 l 0,1.0614 c 0,0.448 -0.066,0.7732 -0.1969,0.9758 -0.1284,0.2026 -0.3495,0.3396 -0.6634,0.4109 0.3167,0.077 0.5393,0.2168 0.6677,0.4194 0.1284,0.2026 0.1926,0.5265 0.1926,0.9716 l 0,1.0614 c 0,0.408 0.06,0.6734 0.1798,0.7961 0.1226,0.1227 0.3837,0.184 0.7832,0.184 l 0.2996,0"
+ style="fill:url(#linearGradient22189) #000000;fill-opacity:1;font-family:DejaVu Sans Mono"
+ id="path8369" />
+ <path
+ inkscape:connector-curvature="0"
+ d="m 3682.5192,-1071.5218 -1.7163,2.294 1.8832,2.4995 -0.9116,0 -1.4039,-1.9217 -1.3995,1.9217 -0.9116,0 1.8831,-2.4995 -1.7162,-2.294 0.8731,0 1.2711,1.7334 1.2626,-1.7334 0.886,0"
+ style="fill:url(#linearGradient22191) #000000;fill-opacity:1;font-family:DejaVu Sans Mono"
+ id="path8371" />
+ <path
+ inkscape:connector-curvature="0"
+ d="m 3683.8592,-1066.1651 0.291,0 c 0.4024,0 0.6649,-0.063 0.7876,-0.1883 0.1227,-0.1255 0.184,-0.3895 0.184,-0.7918 l 0,-1.0614 c 0,-0.4451 0.064,-0.769 0.1926,-0.9716 0.1284,-0.2026 0.351,-0.3424 0.6677,-0.4194 -0.3139,-0.071 -0.5365,-0.2083 -0.6677,-0.4109 -0.1284,-0.2026 -0.1926,-0.5278 -0.1926,-0.9758 l 0,-1.0614 c 0,-0.4024 -0.061,-0.6663 -0.184,-0.7918 -0.1227,-0.1256 -0.3852,-0.1883 -0.7876,-0.1884 l -0.291,0 0,-0.612 0.2654,0 c 0.7104,0 1.1855,0.1056 1.4252,0.3167 0.2397,0.2083 0.3595,0.6278 0.3595,1.2583 l 0,1.0272 c 0,0.428 0.076,0.7233 0.2269,0.886 0.154,0.1626 0.4322,0.2439 0.8345,0.2439 l 0.274,0 0,0.6121 -0.274,0 c -0.4023,0 -0.6805,0.083 -0.8345,0.2482 -0.1513,0.1655 -0.2269,0.4637 -0.2269,0.8945 l 0,1.0229 c 0,0.6306 -0.1198,1.0515 -0.3595,1.2626 -0.2397,0.2112 -0.7148,0.3167 -1.4252,0.3167 l -0.2654,0 0,-0.6163"
+ style="fill:url(#linearGradient22193) #000000;fill-opacity:1;font-family:DejaVu Sans Mono"
+ id="path8373" />
+ </g>
+ <use
+ height="1085"
+ width="5033"
+ transform="matrix(-1,0,0,1,7460,0)"
+ id="use10356"
+ xlink:href="#rect10222"
+ y="0"
+ x="0" />
+ <path
+ id="path10495"
+ style="opacity:0.75;fill:none;stroke:#ffffff;stroke-width:1px;stroke-linecap:square;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 3672.4957,-1527.1378 115.0084,0 m -115.0084,-45 115.0084,0 m -115.0084,-20 115.0084,0"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cccccc" />
+ <path
+ sodipodi:nodetypes="cccccccccccc"
+ inkscape:connector-curvature="0"
+ d="m 3781.5,-1597.1369 0,72.9991 m -103,-72.9991 0,72.9991 m 51,-72.9991 0,72.9991 m -57.0043,-4 115.0084,0 m -115.0084,-45 115.0084,0 m -115.0084,-20 115.0084,0"
+ style="opacity:0.25;fill:none;stroke:#f87019;stroke-width:1;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:1, 1;stroke-dashoffset:0"
+ id="path9671" />
+ <path
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="ccccccccccccccc"
+ id="path10337"
+ style="font-size:8px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Symbol"
+ d="m 3721.9679,-1592.6378 60.0325,0 0,12.0001 -6.0033,0 0,-4 -48.2859,0 -24.3647,57.9999 -5.0992,0 -14.8145,-31.5448 -5.8739,3.2928 -2.1997,-7.5648 0.6725,-1.5554 12.0751,-3.6375 12.5939,24.5797 21.2624,-49.57" />
+ <path
+ id="path10497"
+ style="opacity:0.7;fill:none;stroke:#f87019;stroke-width:1;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:1, 3;stroke-dashoffset:0"
+ d="m 3781.5,-1597.1369 0,72.9991 m -103,-72.9991 0,72.9991 m 51,-72.9991 0,72.9991 m -57.0043,-4 115.0084,0 m -115.0084,-45 115.0084,0 m -115.0084,-20 115.0084,0"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cccccccccccc" />
+ <path
+ d="m 3721.9679,-1593.6378 60.0325,0 0,12.0001 -6.0033,0 0,-4 -49.0203,0 -24.4584,57.9999 -3.5523,0 -14.9799,-31.9656 -5.8335,3.0573 -2.1523,-7.4951 12.1064,-4.6063 12.5939,24.5797 21.2624,-49.57"
+ style="font-size:8px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;opacity:0.8;fill:url(#linearGradient22197) #000000;fill-opacity:1;stroke:none;font-family:Symbol"
+ id="path8416"
+ sodipodi:nodetypes="cccccccccccccc"
+ inkscape:connector-curvature="0" />
+ <path
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="ccccccccccccccccc"
+ id="path10339"
+ style="font-size:51.6529007px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Vegur"
+ d="m 3778.8992,-1572.6378 -10.4586,0 -12.1902,15.9972 -0.3098,0 -11.777,-15.9972 -11.275,0 16.8719,22.4298 0,0.285 -16.9604,23.2852 10.6244,0 12.3093,-16.7093 0.31,0 12.3979,16.7093 11.3625,0 -17.3636,-23.6652 0,-0.2852 16.4586,-22.0496" />
+ <path
+ d="m 3778.3578,-1573.6378 -9.9172,0 -12.1902,15.9972 -0.3098,0 -11.777,-15.9972 -10.7437,0 16.8719,22.4298 0,0.285 -17.4917,23.2852 9.9173,0 13.0164,-17.328 0.31,0 13.0166,17.328 10.7438,0 -17.905,-23.6652 0,-0.2852 16.4586,-22.0496"
+ style="font-size:51.6529007px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;opacity:0.8;color:#000000;fill:url(#linearGradient22199) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Vegur"
+ id="path8420"
+ sodipodi:nodetypes="ccccccccccccccccc"
+ inkscape:connector-curvature="0" />
+ <path
+ inkscape:connector-curvature="0"
+ id="path9853"
+ d="m 3721.9688,-1593.6378 -21.2813,49.5625 -12.5937,-24.5625 -12.0938,4.5937 0.3125,1.125 11.1875,-4.375 13.1875,25.875 22.0937,-51.2187 58.2188,0 0,11 1,0 0,-12 -60.0312,0 z m 54.0312,8 0,4 1.0938,0 0,-3.125 -1.0626,-0.875 -0.031,0 z"
+ style="font-size:8px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;opacity:0.25;fill:#000000;fill-opacity:1;stroke:none;font-family:Symbol" />
+ <path
+ inkscape:connector-curvature="0"
+ id="path9899"
+ d="m 3733.4062,-1573.6378 0.75,1 9.4688,0 11.7812,16 1.4063,0 12.1875,-16 8.5938,0 0.75,-1 -9.9063,0 -12.1875,16 -0.3125,0 -11.7813,-16 -10.75,0 z m 28.5,22.0625 -0.4687,1.2812 17.1563,22.6563 1.2187,0 -17.9063,-23.6563 0,-0.2812 z m -11.625,0.5 0,0.1562 -17.4687,23.2813 1.3125,0 16.7188,-22.2813 -0.5626,-1.1562 z"
+ style="font-size:51.6529007px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;opacity:0.25;color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Vegur" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ style="opacity:0.35;color:#000000;fill:url(#linearGradient22201) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect10288"
+ width="120"
+ height="1.0000159"
+ x="3670"
+ y="-1523.6378" />
+ <rect
+ transform="matrix(0,1,-1,0,0,0)"
+ y="-3671"
+ x="-1597.6378"
+ height="1.0000159"
+ width="74"
+ id="rect10312"
+ style="opacity:0.35;color:#000000;fill:url(#linearGradient22215) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(119,0)"
+ id="use10350"
+ xlink:href="#rect10312"
+ y="0"
+ x="0" />
+ <rect
+ transform="matrix(0,1,-1,0,0,0)"
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ y="-3669"
+ x="-1599.3878"
+ height="1.0000159"
+ width="77.75"
+ id="rect10352"
+ style="opacity:0.25;color:#000000;fill:url(#linearGradient22217) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(123,0)"
+ id="use10368"
+ xlink:href="#rect10352"
+ y="0"
+ x="0" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect10352"
+ id="use10386"
+ transform="matrix(0,1,-1.56913,0,1280.85,-5189.64)"
+ width="5033"
+ height="1085" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(0,26)"
+ id="use10408"
+ xlink:href="#use10386"
+ y="0"
+ x="0" />
+ <use
+ style="opacity:0.5"
+ height="1085"
+ width="5033"
+ transform="translate(0,-23)"
+ id="use10410"
+ xlink:href="#use10408"
+ y="0"
+ x="0" />
+ <rect
+ y="-1516.6378"
+ x="3770"
+ height="20"
+ width="20"
+ id="rect10420"
+ style="opacity:0.15;color:#000000;fill:url(#linearGradient22219) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ <use
+ height="1085"
+ width="5033"
+ transform="matrix(-1,0,0,1,7460,0)"
+ id="use10426"
+ xlink:href="#rect10420"
+ y="0"
+ x="0" />
+ <use
+ style="opacity:0.5"
+ height="1085"
+ width="5033"
+ transform="matrix(0,1,-1.56913,0,1280.85,-5188.64)"
+ id="use10430"
+ xlink:href="#rect10352"
+ y="0"
+ x="0" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect10352"
+ id="use10434"
+ transform="matrix(0,1,-1.56913,0,1280.85,-5268.64)"
+ width="5033"
+ height="1085"
+ style="opacity:0.5" />
+ <path
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ inkscape:connector-curvature="0"
+ style="opacity:0.5;color:#000000;fill:url(#linearGradient22221) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible"
+ d="m 3666,-1542.6378 0,49 0,1 1,0 49,0 0,-1 -49,0 0,-49 -1,0 z"
+ id="path8482-9" />
+ <use
+ height="1085"
+ width="5033"
+ transform="matrix(-1,0,0,1,7460,0)"
+ id="use10476"
+ xlink:href="#path8482-9"
+ y="0"
+ x="0" />
+ <use
+ style="opacity:0.25"
+ x="0"
+ y="0"
+ xlink:href="#path8482-9"
+ id="use10486"
+ transform="matrix(-1,0,0,-1,7460,-3095.28)"
+ width="5033"
+ height="1085" />
+ <use
+ height="1085"
+ width="5033"
+ transform="matrix(1,0,0,-1,0,-3095.28)"
+ id="use10488"
+ xlink:href="#path8482-9"
+ y="0"
+ x="0"
+ style="opacity:0.25" />
+ <rect
+ style="opacity:0.5;color:#000000;fill:url(#linearGradient22223) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect10501"
+ width="22"
+ height="1"
+ x="-1517.6378"
+ y="-3669"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90"
+ transform="matrix(0,1,-1,0,0,0)" />
+ <use
+ height="1085"
+ width="5033"
+ transform="matrix(1.04544,0,0,1.04544,-43.6665,67.9588)"
+ id="use10505"
+ xlink:href="#rect10501"
+ y="0"
+ x="0" />
+ </g>
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ style="opacity:0.15;color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect10513"
+ width="64"
+ height="14"
+ x="3637.002"
+ y="-1076.6378" />
+ <rect
+ y="-1077.6378"
+ x="3637.002"
+ height="14"
+ width="64"
+ id="rect10515"
+ style="color:#000000;fill:url(#linearGradient10634) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ <rect
+ y="-1118.6378"
+ x="3637.002"
+ height="41"
+ width="64"
+ id="rect10517"
+ style="color:#000000;fill:url(#linearGradient10638) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ rx="1"
+ ry="1"
+ style="color:#000000;fill:url(#linearGradient10642) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect10519"
+ width="60"
+ height="38"
+ x="3639"
+ y="-1116.6378" />
+ <rect
+ rx="1"
+ ry="1"
+ y="-1115.6377"
+ x="3640"
+ height="36"
+ width="20"
+ id="rect10521"
+ style="opacity:0.25;color:#000000;fill:url(#linearGradient9240) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:15.99660015;marker:none;visibility:visible;display:inline;overflow:visible"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ <rect
+ y="-1075.6378"
+ x="3639"
+ height="10"
+ width="60"
+ id="rect10523"
+ style="color:#000000;fill:url(#linearGradient10647) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <path
+ sodipodi:nodetypes="cccccc"
+ inkscape:connector-curvature="0"
+ d="m 3641.5,-1081.1379 55,0 m -55,-21 55,0 m -55,-10 55,0"
+ style="opacity:0.7;fill:none;stroke:#ffffff;stroke-width:1;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:2.3"
+ id="path10711" />
+ <path
+ id="path10581"
+ style="opacity:0.5;fill:none;stroke:#f87019;stroke-width:1;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:1, 3;stroke-dashoffset:6.1"
+ d="m 3694.5,-1116.1379 0,37 m -51,-37 0,37 m 25,-37 0,37 m -28,-3 57,0 m -57,-21 57,0 m -57,-10 57,0"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cccccccccccc" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ style="opacity:0.35;color:#000000;fill:url(#linearGradient10671) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect10594"
+ width="58"
+ height="1"
+ x="3640"
+ y="-1080.6378" />
+ <rect
+ transform="matrix(0,1,-1,0,0,0)"
+ y="-3641"
+ x="-1116.6378"
+ height="1"
+ width="38"
+ id="rect10596"
+ style="opacity:0.5;color:#000000;fill:url(#linearGradient11267) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ <rect
+ transform="matrix(0,1,-1,0,0,0)"
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ y="-3638"
+ x="-1118.1378"
+ height="1"
+ width="54"
+ id="rect10600"
+ style="opacity:0.5;color:#000000;fill:url(#linearGradient11263) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ transform="scale(-1,-1)"
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ y="1077.6377"
+ x="-3698.7617"
+ height="1"
+ width="60.519684"
+ id="use10604"
+ style="opacity:0.25;color:#000000;fill:url(#linearGradient10971) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ transform="scale(-1,-1)"
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ y="1064.6378"
+ x="-3699"
+ height="1"
+ width="60"
+ id="use10606"
+ style="opacity:0.5;color:#000000;fill:url(#linearGradient10975) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ y="-1074.6378"
+ x="3690"
+ height="8"
+ width="8"
+ id="rect10610"
+ style="opacity:0.25;color:#000000;fill:url(#linearGradient11259) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect10352"
+ id="use10617"
+ transform="matrix(0,0.999984,-0.771704,0,2463.75,-4786.58)"
+ width="5033"
+ height="1085"
+ style="opacity:0.5" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect10600"
+ id="use10691"
+ transform="translate(63,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect10521"
+ id="use10697"
+ transform="matrix(-1,0,0,1,7338,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect10596"
+ id="use10693"
+ transform="translate(57,0)"
+ width="5033"
+ height="1085" />
+ <g
+ transform="matrix(6.0189,0,0,5.83412,-18699.7,-5155.92)"
+ id="g10955"
+ style="font-size:8px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;opacity:0.9;color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:0.253131;stroke-miterlimit:4;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Vegur">
+ <path
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cccccccccccccc"
+ id="path10957"
+ style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:0.253131;stroke-miterlimit:4;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Symbol"
+ d="m 3715.7455,692.95371 4.987,0 0,1.02843 -0.4987,0 0,-0.34281 -4.0722,0 -2.0318,4.79935 -0.2951,0 -1.2444,-2.65652 -0.4846,0.25408 -0.1788,-0.62289 1.0057,-0.38281 1.0462,2.04271 1.7663,-4.11954" />
+ </g>
+ <g
+ style="font-size:8px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;opacity:0.8;color:#000000;fill:url(#linearGradient10908-8) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Vegur"
+ id="g10863"
+ transform="matrix(6.0189,0,0,5.83412,-18699.7,-5156.42)">
+ <path
+ d="m 3715.7455,692.95371 4.987,0 0,1.02843 -0.4987,0 0,-0.34281 -4.0722,0 -2.0318,4.79935 -0.2951,0 -1.2444,-2.65652 -0.4846,0.25408 -0.1788,-0.62289 1.0057,-0.38281 1.0462,2.04271 1.7663,-4.11954"
+ style="color:#000000;fill:url(#linearGradient11167) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Symbol"
+ id="path10865"
+ sodipodi:nodetypes="cccccccccccccc"
+ inkscape:connector-curvature="0" />
+ </g>
+ <path
+ d="m 3692.1773,-1103.1379 -4.9606,0 -6.0976,7.6508 -0.155,0 -5.8908,-7.6508 -5.3741,0 8.4394,10.7273 0,0.1363 -8.7495,11.1364 4.9608,0 6.5108,-8.2873 0.1551,0 6.5109,8.2873 5.3741,0 -8.9561,-11.3181 0,-0.1364 8.2326,-10.5455"
+ style="font-size:51.6529007px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;opacity:0.9;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:1.5;stroke-miterlimit:4;stroke-dasharray:none;font-family:Vegur"
+ id="path10959"
+ sodipodi:nodetypes="ccccccccccccccccc"
+ inkscape:connector-curvature="0" />
+ <path
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="ccccccccccccccccc"
+ id="path10869"
+ style="font-size:51.6529007px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;opacity:0.8;fill:url(#linearGradient10908) #000000;fill-opacity:1;stroke:none;font-family:Vegur"
+ d="m 3692.1773,-1103.6379 -4.9606,0 -6.0976,7.6508 -0.155,0 -5.8908,-7.6508 -5.3741,0 8.4394,10.7273 0,0.1363 -8.7495,11.1364 4.9608,0 6.5108,-8.2873 0.1551,0 6.5109,8.2873 5.3741,0 -8.9561,-11.3181 0,-0.1364 8.2326,-10.5455" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect10610"
+ id="use10967"
+ transform="matrix(-1,0,0,1,7338,0)"
+ width="5033"
+ height="1085" />
+ <path
+ style="opacity:0.25;fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 3642.1995,-1098.795 5.6348,-2.0771 6.5304,12.5108 11.0588,-24.7526 29.0798,0 0,4.8393"
+ id="path11025"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cccccc" />
+ <path
+ id="path11031"
+ style="opacity:0.25;fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 3683.6563,-1092.4817 8.4375,10.5938 m -13.5938,-10.5938 -8.2812,10.5938 m 21.0937,-21.2516 -3.8201,0 -6.4768,8.0641 -6.2343,-8.0953 -4.25,0"
+ inkscape:connector-curvature="0" />
+ <g
+ style="font-size:8.76535988px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;fill:#1a1a1a;fill-opacity:1;stroke:none"
+ id="g10557"
+ transform="matrix(1.00001,0,0,1,-0.0310591,-1.09989)">
+ <path
+ inkscape:connector-curvature="0"
+ d="m 3655.2528,-1071.3549 0,0.7704 c -0.2254,-0.1313 -0.4523,-0.2297 -0.6805,-0.2953 -0.2283,-0.066 -0.4608,-0.099 -0.6977,-0.099 -0.3566,0 -0.6234,0.059 -0.8003,0.1755 -0.1741,0.1141 -0.2611,0.2896 -0.2611,0.5264 0,0.214 0.066,0.3738 0.1969,0.4794 0.1312,0.1056 0.4579,0.2083 0.9801,0.3082 l 0.3167,0.06 c 0.3909,0.074 0.6862,0.2225 0.886,0.4451 0.2025,0.2225 0.3038,0.5122 0.3038,0.8688 0,0.4737 -0.1683,0.8446 -0.505,1.1128 -0.3367,0.2654 -0.8046,0.398 -1.4038,0.398 -0.2369,0 -0.4851,-0.026 -0.7447,-0.077 -0.2597,-0.049 -0.5407,-0.1227 -0.8432,-0.2225 l 0,-0.8132 c 0.2939,0.1512 0.575,0.2653 0.8432,0.3424 0.2682,0.074 0.5221,0.1112 0.7618,0.1112 0.3481,0 0.6177,-0.07 0.8089,-0.2097 0.1912,-0.1426 0.2868,-0.341 0.2868,-0.5949 0,-0.3652 -0.3496,-0.6177 -1.0486,-0.7576 l -0.034,-0.01 -0.2953,-0.06 c -0.4537,-0.089 -0.7846,-0.2369 -0.9929,-0.4451 -0.2083,-0.2112 -0.3125,-0.4979 -0.3125,-0.8603 0,-0.4594 0.1555,-0.8132 0.4665,-1.0614 0.3111,-0.2511 0.7547,-0.3767 1.3311,-0.3767 0.2568,0 0.5036,0.024 0.7404,0.073 0.2369,0.046 0.4694,0.1155 0.6977,0.2097"
+ style="fill:#1a1a1a;fill-opacity:1;font-family:DejaVu Sans Mono"
+ id="path10559" />
+ <path
+ inkscape:connector-curvature="0"
+ d="m 3657.8135,-1069.1036 c 0,0.6106 0.096,1.0714 0.2867,1.3824 0.1941,0.311 0.4808,0.4665 0.8603,0.4665 0.3795,0 0.6663,-0.1555 0.8603,-0.4665 0.1969,-0.3139 0.2953,-0.7747 0.2953,-1.3824 0,-0.6078 -0.098,-1.0672 -0.2953,-1.3782 -0.194,-0.3139 -0.4808,-0.4708 -0.8603,-0.4708 -0.3795,0 -0.6662,0.1555 -0.8603,0.4665 -0.1911,0.311 -0.2867,0.7718 -0.2867,1.3825 m 2.3026,1.7804 c -0.1284,0.2368 -0.3024,0.4195 -0.5222,0.5478 -0.2168,0.1256 -0.4693,0.1884 -0.7575,0.1884 -0.5735,0 -1.0272,-0.2212 -1.361,-0.6634 -0.331,-0.4451 -0.4965,-1.0572 -0.4965,-1.8361 0,-0.7932 0.1655,-1.4138 0.4965,-1.8618 0.331,-0.448 0.7846,-0.672 1.361,-0.672 0.2853,0 0.5364,0.063 0.7533,0.1884 0.2197,0.1226 0.3951,0.3024 0.5264,0.5392 l 0,-0.612 0.7918,0 0,6.6168 -0.7918,0 0,-2.4353"
+ style="fill:#1a1a1a;fill-opacity:1;font-family:DejaVu Sans Mono"
+ id="path10561" />
+ <path
+ inkscape:connector-curvature="0"
+ d="m 3666.5463,-1070.4394 c -0.1683,-0.1313 -0.3395,-0.2268 -0.5136,-0.2868 -0.174,-0.06 -0.3652,-0.09 -0.5735,-0.09 -0.4908,0 -0.866,0.154 -1.1256,0.4622 -0.2597,0.3082 -0.3895,0.7533 -0.3895,1.3353 l 0,2.384 -0.7918,0 0,-4.7936 0.7918,0 0,0.9373 c 0.1312,-0.3395 0.3324,-0.5992 0.6035,-0.7789 0.2739,-0.1826 0.5977,-0.2739 0.9715,-0.2739 0.194,0 0.3752,0.024 0.5436,0.073 0.1683,0.049 0.3295,0.1241 0.4836,0.2269 l 0,0.8046"
+ style="fill:#1a1a1a;fill-opacity:1;font-family:DejaVu Sans Mono"
+ id="path10563" />
+ <path
+ inkscape:connector-curvature="0"
+ d="m 3669.8788,-1072.7579 0,1.3611 1.789,0 0,0.612 -1.789,0 0,2.6022 c 0,0.3538 0.067,0.6006 0.2011,0.7405 0.1341,0.1398 0.3681,0.2097 0.7019,0.2097 l 0.886,0 0,0.6291 -0.963,0 c -0.5906,0 -1.0072,-0.1184 -1.2498,-0.3552 -0.2425,-0.2368 -0.3638,-0.6449 -0.3638,-1.2241 l 0,-2.6022 -1.2797,0 0,-0.612 1.2797,0 0,-1.3611 0.7876,0"
+ style="fill:#1a1a1a;fill-opacity:1;font-family:DejaVu Sans Mono"
+ id="path10565" />
+ <path
+ inkscape:connector-curvature="0"
+ d="m 3677.1676,-1066.1651 0,0.6163 -0.2739,0 c -0.7105,0 -1.187,-0.1055 -1.4295,-0.3167 -0.2397,-0.2111 -0.3596,-0.632 -0.3595,-1.2626 l 0,-1.0229 c -10e-5,-0.4308 -0.077,-0.729 -0.2312,-0.8945 -0.1512,-0.1655 -0.4265,-0.2482 -0.826,-0.2482 l -0.2654,0 0,-0.6121 0.2654,0 c 0.4023,0 0.6791,-0.081 0.8303,-0.2439 0.1512,-0.1627 0.2268,-0.458 0.2269,-0.886 l 0,-1.0272 c -10e-5,-0.6305 0.1198,-1.05 0.3595,-1.2583 0.2425,-0.2111 0.719,-0.3167 1.4295,-0.3167 l 0.2739,0 0,0.612 -0.2996,0 c -0.3995,1e-4 -0.6606,0.063 -0.7832,0.1884 -0.1199,0.1227 -0.1798,0.3866 -0.1798,0.7918 l 0,1.0614 c 0,0.448 -0.066,0.7732 -0.1969,0.9758 -0.1284,0.2026 -0.3495,0.3396 -0.6634,0.4109 0.3167,0.077 0.5393,0.2168 0.6677,0.4194 0.1284,0.2026 0.1926,0.5265 0.1926,0.9716 l 0,1.0614 c 0,0.408 0.06,0.6734 0.1798,0.7961 0.1226,0.1227 0.3837,0.184 0.7832,0.184 l 0.2996,0"
+ style="fill:#1a1a1a;fill-opacity:1;font-family:DejaVu Sans Mono"
+ id="path10567" />
+ <path
+ inkscape:connector-curvature="0"
+ d="m 3682.5192,-1071.5218 -1.7163,2.294 1.8832,2.4995 -0.9116,0 -1.4039,-1.9217 -1.3995,1.9217 -0.9116,0 1.8831,-2.4995 -1.7162,-2.294 0.8731,0 1.2711,1.7334 1.2626,-1.7334 0.886,0"
+ style="fill:#1a1a1a;fill-opacity:1;font-family:DejaVu Sans Mono"
+ id="path10569" />
+ <path
+ inkscape:connector-curvature="0"
+ d="m 3683.8592,-1066.1651 0.291,0 c 0.4024,0 0.6649,-0.063 0.7876,-0.1883 0.1227,-0.1255 0.184,-0.3895 0.184,-0.7918 l 0,-1.0614 c 0,-0.4451 0.064,-0.769 0.1926,-0.9716 0.1284,-0.2026 0.351,-0.3424 0.6677,-0.4194 -0.3139,-0.071 -0.5365,-0.2083 -0.6677,-0.4109 -0.1284,-0.2026 -0.1926,-0.5278 -0.1926,-0.9758 l 0,-1.0614 c 0,-0.4024 -0.061,-0.6663 -0.184,-0.7918 -0.1227,-0.1256 -0.3852,-0.1883 -0.7876,-0.1884 l -0.291,0 0,-0.612 0.2654,0 c 0.7104,0 1.1855,0.1056 1.4252,0.3167 0.2397,0.2083 0.3595,0.6278 0.3595,1.2583 l 0,1.0272 c 0,0.428 0.076,0.7233 0.2269,0.886 0.154,0.1626 0.4322,0.2439 0.8345,0.2439 l 0.274,0 0,0.6121 -0.274,0 c -0.4023,0 -0.6805,0.083 -0.8345,0.2482 -0.1513,0.1655 -0.2269,0.4637 -0.2269,0.8945 l 0,1.0229 c 0,0.6306 -0.1198,1.0515 -0.3595,1.2626 -0.2397,0.2112 -0.7148,0.3167 -1.4252,0.3167 l -0.2654,0 0,-0.6163"
+ style="fill:#1a1a1a;fill-opacity:1;font-family:DejaVu Sans Mono"
+ id="path10571" />
+ </g>
+ <g
+ id="g17009">
+ <path
+ sodipodi:type="arc"
+ style="opacity:0.15;color:#000000;fill:#0369a3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2.01706004;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="path8395"
+ sodipodi:cx="1184.5"
+ sodipodi:cy="675.5"
+ sodipodi:rx="16.5"
+ sodipodi:ry="16.5"
+ d="m 1201,675.5 a 16.5,16.5 0 1 1 -33,0 16.5,16.5 0 1 1 33,0 z"
+ transform="matrix(0.967424,0,0,0.242423,439.086,-1230.53)"
+ inkscape:export-filename="path12513.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90"
+ clip-path="url(#clipPath9665)" />
+ <path
+ clip-path="url(#clipPath9665)"
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="path12513.png"
+ transform="matrix(0.805008,0,0,0.222724,631.468,-1216.9)"
+ d="m 1201,675.5 a 16.5,16.5 0 1 1 -33,0 16.5,16.5 0 1 1 33,0 z"
+ sodipodi:ry="16.5"
+ sodipodi:rx="16.5"
+ sodipodi:cy="675.5"
+ sodipodi:cx="1184.5"
+ id="path8399"
+ style="opacity:0.25;color:#000000;fill:#0369a3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2.01706004;marker:none;visibility:visible;display:inline;overflow:visible"
+ sodipodi:type="arc" />
+ <path
+ id="rect7807"
+ d="m 1539,-1118.6378 0,4 64,0 0,-4 -64,0 z m 0,8 0,4 64,0 0,-4 -64,0 z m 0,8 0,4 37.3125,0 c 2.631,-1.2734 5.5685,-2 8.6875,-2 3.119,0 6.0565,0.7266 8.6875,2 l 9.3125,0 0,-4 -64,0 z m 0,8 0,4 28.6875,0 c 0.8437,-1.4566 1.8605,-2.8059 3.0313,-4 l -31.7188,0 z m 60.2812,0 c 1.1708,1.1941 2.1876,2.5434 3.0313,4 l 0.6875,0 0,-4 -3.7188,0 z m -60.2812,8 0,4 26.0938,0 c 0.1379,-1.3796 0.4398,-2.7175 0.8437,-4 l -26.9375,0 z m 0,8 0,4 26.9375,0 c -0.4039,-1.2825 -0.7058,-2.6204 -0.8437,-4 l -26.0938,0 z m 0,8 0,4 31.7188,0 c -1.1708,-1.1941 -2.1876,-2.5434 -3.0313,-4 l -28.6875,0 z"
+ style="color:#000000;fill:url(#linearGradient15166-1) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ inkscape:connector-curvature="0" />
+ <path
+ sodipodi:type="arc"
+ style="opacity:0.75;color:#000000;fill:#0369a3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2.01706004;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="path8401"
+ sodipodi:cx="1184.5"
+ sodipodi:cy="675.5"
+ sodipodi:rx="16.5"
+ sodipodi:ry="16.5"
+ d="m 1201,675.5 a 16.5,16.5 0 1 1 -33,0 16.5,16.5 0 1 1 33,0 z"
+ transform="matrix(0.642129,0,0,0.154946,824.398,-1169.99)"
+ inkscape:export-filename="path12513.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90"
+ clip-path="url(#clipPath9665)" />
+ <path
+ clip-path="url(#clipPath9665)"
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="path12513.png"
+ transform="matrix(1.05455,0,0,1.05455,335.891,-1792.98)"
+ d="m 1201,675.5 a 16.5,16.5 0 1 1 -33,0 16.5,16.5 0 1 1 33,0 z"
+ sodipodi:ry="16.5"
+ sodipodi:rx="16.5"
+ sodipodi:cy="675.5"
+ sodipodi:cx="1184.5"
+ id="path8828"
+ style="color:#000000;fill:url(#radialGradient15233) #000000;fill-opacity:1;fill-rule:nonzero;stroke:#035d8f;stroke-width:0.94827598;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ sodipodi:type="arc" />
+ <g
+ id="g8385">
+ <path
+ inkscape:connector-curvature="0"
+ style="fill:none;stroke:url(#linearGradient8339) #000000;stroke-width:0.87703198px;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 3066.2254,-1069.3064 c -2.0507,-12.7551 -13.5915,-15.1323 -19.2204,-13.1889"
+ id="path8860"
+ sodipodi:nodetypes="cz"
+ clip-path="url(#clipPath9653)"
+ transform="matrix(1.14061,0,0,1.13981,-1909.83,155.42)" />
+ <path
+ inkscape:connector-curvature="0"
+ style="fill:none;stroke:url(#linearGradient8364) #000000;stroke-width:0.866611px;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 3068.184,-1099.5366 c -15.8287,5.5755 -16.1955,20.8148 -12.4084,27.5262"
+ id="path8842"
+ sodipodi:nodetypes="cz"
+ clip-path="url(#clipPath9661)"
+ transform="matrix(1.15392,0,0,1.15392,-1950.6,170.948)" />
+ <path
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cz"
+ id="path8858"
+ d="m 3078.4656,-1088.3913 c -15.558,-9.6896 -30.2603,-1.1652 -34.1742,5.8114"
+ style="fill:none;stroke:url(#linearGradient8366) #000000;stroke-width:0.866611px;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:1"
+ clip-path="url(#clipPath9657)"
+ transform="matrix(1.15392,0,0,1.15392,-1950.3,169.987)" />
+ <path
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cz"
+ id="path8862"
+ d="m 3062.7593,-1100.0911 c 15.4435,6.5674 14.8438,21.7994 10.639,28.2572"
+ style="fill:none;stroke:url(#linearGradient8368) #000000;stroke-width:0.866611px;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:1"
+ clip-path="url(#clipPath9649)"
+ transform="matrix(1.15392,0,0,1.15392,-1950.6,170.948)" />
+ <path
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cz"
+ id="path8864"
+ d="m 3072.4132,-1068.2406 c 1.6468,-20.2395 -13.394,-26.7448 -21.8167,-25.1165"
+ style="fill:none;stroke:url(#linearGradient8370) #000000;stroke-width:0.866611px;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:1"
+ clip-path="url(#clipPath9645)"
+ transform="matrix(1.15392,0,0,1.15392,-1950.6,170.948)" />
+ <path
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cz"
+ id="path8866"
+ d="m 3085.0144,-1076.9486 c -15.8776,-5.4349 -25.6105,6.297 -26.7982,13.9111"
+ style="fill:none;stroke:url(#linearGradient8372) #000000;stroke-width:0.866611px;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:1"
+ clip-path="url(#clipPath9641)"
+ transform="matrix(1.15392,0,0,1.15392,-1950.6,170.948)" />
+ <path
+ inkscape:connector-curvature="0"
+ style="fill:none;stroke:url(#linearGradient8374) #000000;stroke-width:0.866611px;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 3086.2173,-1079.8642 c -14.1391,-9.0401 -26.3732,0.053 -29.3302,7.1696"
+ id="path8868"
+ sodipodi:nodetypes="cz"
+ clip-path="url(#clipPath9637)"
+ transform="matrix(1.15392,0,0,1.15392,-1950.6,170.948)" />
+ <path
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cz"
+ id="path8911"
+ d="m 3078.5198,-1092.1932 c -16.7706,-0.6199 -22.7025,13.4218 -21.6414,21.0549"
+ style="fill:none;stroke:url(#linearGradient8376) #000000;stroke-width:0.866611px;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:1"
+ clip-path="url(#clipPath9629)"
+ transform="matrix(1.15392,0,0,1.15392,-1950.6,170.948)" />
+ </g>
+ <path
+ clip-path="url(#clipPath9617)"
+ sodipodi:type="arc"
+ style="opacity:0.75;color:#000000;fill:url(#radialGradient15322) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="path9948"
+ sodipodi:cx="3181"
+ sodipodi:cy="660.75"
+ sodipodi:rx="1.5"
+ sodipodi:ry="1.5"
+ d="m 3182.5,660.75 a 1.5,1.5 0 1 1 -3,0 1.5,1.5 0 1 1 3,0 z"
+ transform="matrix(3.65312,0,0,3.65312,-10042.5,-3504.26)" />
+ <path
+ style="opacity:0.5;color:#000000;fill:url(#linearGradient14853) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ d="m 1539,-1118.6378 0,4 14.5,0 0,-4 -14.5,0 z m 0,8 0,4 14.5,0 0,-4 -14.5,0 z m 0,8 0,4 14.5,0 0,-4 -14.5,0 z m 0,8 0,4 14.5,0 0,-4 -14.5,0 z m 0,8 0,4 14.5,0 0,-4 -14.5,0 z m 0,8 0,4 14.5,0 0,-4 -14.5,0 z m 0,8 0,4 14.5,0 0,-4 -14.5,0 z"
+ id="path14682"
+ inkscape:connector-curvature="0"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ <path
+ sodipodi:nodetypes="ccccccccccccccccccccc"
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ inkscape:connector-curvature="0"
+ id="path15201"
+ d="m 1603,-1118.6378 0,4 -14.5,0 0,-4 z m 0,8 0,4 -14.5,0 0,-4 z m 0,8 0,4 -9.3735,0 c -1.4599,-0.7466 -3.2059,-1.3143 -5.1367,-1.7665 l 0.01,-2.2335 z m 0,8 0,4 -0.6993,0 c -0.7474,-1.2945 -1.7335,-2.6531 -3.0052,-4 z"
+ style="opacity:0.5;color:#000000;fill:url(#linearGradient15203) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <path
+ inkscape:connector-curvature="0"
+ id="path15117"
+ d="m 1539,-1118.6378 0,1 64,0 0,-1 -64,0 z m 0,8 0,1 64,0 0,-1 -64,0 z m 0,8 0,1 64,0 0,-1 -64,0 z m 0,8 0,1 30.8125,0 c 0.2909,-0.3409 0.5929,-0.6804 0.9063,-1 l -31.7188,0 z m 60.2812,0 c 0.3134,0.3196 0.6154,0.6591 0.9063,1 l 2.8125,0 0,-1 -3.7188,0 z m -60.2812,8 0,1 26.6562,0 c 0.089,-0.3336 0.1784,-0.6734 0.2813,-1 l -26.9375,0 z m 0,8 0,1 26.0938,0 c 0.1027,1.0282 0.3031,2.0238 0.5624,3 l 0.2813,0 c -0.4039,-1.2825 -0.7059,-2.6204 -0.8437,-4 l -26.0938,0 z m 0,8 0,1 28.6875,0 c 0.6179,1.0667 1.3289,2.0672 2.125,3 l 0.9063,0 c -1.1709,-1.1941 -2.1876,-2.5434 -3.0313,-4 l -28.6875,0 z"
+ style="opacity:0.35;color:#000000;fill:url(#linearGradient15222) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <path
+ sodipodi:nodetypes="ccccccccccsccccsccccsccccccccccccccccccccccccccccc"
+ inkscape:connector-curvature="0"
+ id="path15211"
+ transform="translate(-123,-1753.64)"
+ d="m 1662,639 0,1 64,0 0,-1 z m 0,8 0,1 64,0 0,-1 z m 46,6 c -3.119,0 -6.0565,0.7266 -8.6875,2 l -37.3125,0 0,1 37.3125,0 c 2.631,-1.2734 5.5685,-2 8.6875,-2 3.119,0 6.0565,0.7266 8.6875,2 l 9.3125,0 0,-1 -9.3125,0 c -2.631,-1.2734 -5.5685,-2 -8.6875,-2 z m 14.875,7 c 1.1708,1.1941 1.8125,2.54039 1.8125,4 l 1.3125,0 0,-1 -0.6875,0 c -0.6179,-1.06673 -1.3289,-2.06718 -2.125,-3 z m -30.7812,0.9375 c -0.5002,0.66268 -0.9886,1.34142 -1.4063,2.0625 l -28.6875,0 0,1 29.3125,0 c 0,-1.09248 0.4281,-2.11097 0.7813,-3.0625 z m -3.9688,9.84375 c -0.01,0.0731 -0.024,0.1454 -0.031,0.21875 l -26.0938,0 0,1 26.0938,0 c 0.041,-0.40951 0.041,-0.81695 0.031,-1.21875 z M 1662,679 l 0,1 26.9375,0 c -0.1029,-0.32665 -0.1926,-0.66639 -0.2813,-1 z m 0,8 0,1 31.7188,0 c -0.5566,-0.56766 -0.6946,-0.78651 -0.7813,-1 z"
+ style="opacity:0.75;color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <path
+ transform="matrix(1.00184,0,0,1.00184,398.322,-1757.38)"
+ inkscape:connector-curvature="0"
+ id="path15249"
+ clip-path="url(#clipPath9665)"
+ d="m 1184.5,658.53125 c -9.3689,0 -16.9688,7.59981 -16.9688,16.96875 0,9.36894 7.5999,16.96875 16.9688,16.96875 9.3689,0 16.9688,-7.59981 16.9688,-16.96875 0,-9.36894 -7.5999,-16.96875 -16.9688,-16.96875 z m 0,0.9375 c 8.8565,0 16.0312,7.17479 16.0312,16.03125 0,8.85646 -7.1747,16.03125 -16.0312,16.03125 -8.8565,0 -16.0312,-7.17479 -16.0312,-16.03125 0,-8.85646 7.1747,-16.03125 16.0312,-16.03125 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;opacity:0.75;color:#000000;fill:url(#linearGradient15269) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.94827598;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Sans" />
+ <path
+ transform="matrix(2.66667,0,0,2.66667,-6895.61,-2858.6)"
+ d="m 3182.5,660.75 a 1.5,1.5 0 1 1 -3,0 1.5,1.5 0 1 1 3,0 z"
+ sodipodi:ry="1.5"
+ sodipodi:rx="1.5"
+ sodipodi:cy="660.75"
+ sodipodi:cx="3181"
+ id="path15330"
+ style="color:#000000;fill:url(#radialGradient15332) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ sodipodi:type="arc"
+ clip-path="url(#clipPath9617)" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(8.5625,7.125)"
+ id="use15360"
+ xlink:href="#path15330"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(-8.6875,3.8125)"
+ id="use15362"
+ xlink:href="#use15360"
+ y="0"
+ x="0" />
+ <path
+ clip-path="url(#clipPath9617)"
+ sodipodi:type="arc"
+ style="color:#000000;fill:url(#radialGradient15392) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="use15366"
+ sodipodi:cx="3181"
+ sodipodi:cy="660.75"
+ sodipodi:rx="1.5"
+ sodipodi:ry="1.5"
+ d="m 3182.5,660.75 a 1.5,1.5 0 1 1 -3,0 1.5,1.5 0 1 1 3,0 z"
+ transform="matrix(2.66667,0,0,2.66667,-6884.11,-2841.48)" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(-25.0625,0.875)"
+ id="use15368"
+ xlink:href="#use15366"
+ y="0"
+ x="0" />
+ <path
+ clip-path="url(#clipPath9617)"
+ sodipodi:type="arc"
+ style="color:#000000;fill:url(#radialGradient15384) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="use15372"
+ sodipodi:cx="3181"
+ sodipodi:cy="660.75"
+ sodipodi:rx="1.5"
+ sodipodi:ry="1.5"
+ d="m 3182.5,660.75 a 1.5,1.5 0 1 1 -3,0 1.5,1.5 0 1 1 3,0 z"
+ transform="matrix(2.66667,0,0,2.66667,-6900.67,-2836.1)" />
+ <path
+ transform="matrix(2.66667,0,0,2.66667,-6888.55,-2834.54)"
+ d="m 3182.5,660.75 a 1.5,1.5 0 1 1 -3,0 1.5,1.5 0 1 1 3,0 z"
+ sodipodi:ry="1.5"
+ sodipodi:rx="1.5"
+ sodipodi:cy="660.75"
+ sodipodi:cx="3181"
+ id="use15376"
+ style="color:#000000;fill:url(#radialGradient15388) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ sodipodi:type="arc"
+ clip-path="url(#clipPath9617)" />
+ </g>
+ <use
+ x="0"
+ y="0"
+ xlink:href="#g8794"
+ id="use9230"
+ transform="translate(1572,0)"
+ width="5033"
+ height="1085"
+ style="opacity:0.75" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#g8683"
+ id="use9232"
+ transform="translate(1572,0)"
+ width="5033"
+ height="1085"
+ style="opacity:0.75" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#g8745"
+ id="use9234"
+ transform="translate(1572,0)"
+ width="5033"
+ height="1085"
+ style="opacity:0.75" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#g8848"
+ id="use9236"
+ transform="translate(1572,0)"
+ width="5033"
+ height="1085"
+ style="opacity:0.75" />
+ <g
+ id="g21381"
+ transform="translate(1,0)">
+ <path
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ sodipodi:nodetypes="ccccc"
+ inkscape:connector-curvature="0"
+ id="path7687"
+ d="m 525,-1602.6378 0,105 119,0 0,-105 z"
+ style="color:#000000;fill:url(#linearGradient21626) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#g14017"
+ id="use14081"
+ transform="translate(29,51)"
+ width="5033"
+ height="1085" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(0,34)"
+ id="use14037"
+ xlink:href="#g14017"
+ y="0"
+ x="0" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ y="-1585.6378"
+ x="528"
+ height="1.0000159"
+ width="26"
+ id="rect9088"
+ style="opacity:0.5;color:#000000;fill:url(#linearGradient21696) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <use
+ height="1085"
+ width="5033"
+ transform="matrix(0,0.615385,-1,0,-999.638,-1925.56)"
+ id="use9352"
+ xlink:href="#rect9088"
+ y="0"
+ x="0" />
+ <rect
+ style="color:#000000;fill:#92e285;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect9580"
+ width="26"
+ height="14"
+ x="528"
+ y="-1599.6378" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(29,0)"
+ id="use9582"
+ xlink:href="#rect9580"
+ y="0"
+ x="0" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect9580"
+ id="use9584"
+ transform="translate(58,0)"
+ width="5033"
+ height="1085" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(87,0)"
+ id="use9586"
+ xlink:href="#rect9580"
+ y="0"
+ x="0" />
+ <rect
+ style="opacity:0.5;color:#000000;fill:url(#linearGradient21698) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:15.99660015;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect8963"
+ width="12"
+ height="12"
+ x="529"
+ y="-1598.6378" />
+ <use
+ height="1085"
+ width="5033"
+ transform="matrix(0,0.615385,-1,0,-1057.64,-1925.56)"
+ id="use9312"
+ xlink:href="#rect9088"
+ y="0"
+ x="0" />
+ <g
+ id="g14017">
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(0,17)"
+ id="use9342"
+ xlink:href="#rect9088"
+ y="0"
+ x="0" />
+ <rect
+ style="color:#000000;fill:#e0f4dd;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect9523"
+ width="26"
+ height="14"
+ x="528"
+ y="-1582.6378" />
+ <rect
+ style="opacity:0.25;color:#000000;fill:url(#linearGradient21700) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:15.99660015;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect8901"
+ width="12"
+ height="12"
+ x="529"
+ y="-1581.6378" />
+ <use
+ height="1085"
+ width="5033"
+ transform="matrix(0,0.615385,-1,0,-1057.64,-1908.56)"
+ id="use9314"
+ xlink:href="#rect9088"
+ y="0"
+ x="0" />
+ </g>
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect9088"
+ id="use9344"
+ transform="matrix(0,0.615385,-1,0,-1028.64,-1925.56)"
+ width="5033"
+ height="1085" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(29,0)"
+ id="use9445"
+ xlink:href="#rect8963"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(29,0)"
+ id="use9447"
+ xlink:href="#use9445"
+ y="0"
+ x="0" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect9088"
+ id="use9360"
+ transform="matrix(0,0.615385,-1,0,-970.638,-1925.56)"
+ width="5033"
+ height="1085" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(29,0)"
+ id="use9449"
+ xlink:href="#use9447"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(29,34)"
+ id="use14039"
+ xlink:href="#g14017"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(29,0)"
+ id="use14023"
+ xlink:href="#g14017"
+ y="0"
+ x="0" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#g14017"
+ id="use14025"
+ transform="translate(58,0)"
+ width="5033"
+ height="1085" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(87,0)"
+ id="use14027"
+ xlink:href="#g14017"
+ y="0"
+ x="0" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#g14017"
+ id="use14029"
+ transform="translate(0,17)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#g14017"
+ id="use14031"
+ transform="translate(29,17)"
+ width="5033"
+ height="1085" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(58,17)"
+ id="use14033"
+ xlink:href="#g14017"
+ y="0"
+ x="0" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#g14017"
+ id="use14035"
+ transform="translate(87,17)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#g14017"
+ id="use14079"
+ transform="translate(0,51)"
+ width="5033"
+ height="1085" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(0,68)"
+ id="use14083"
+ xlink:href="#g14017"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(29,68)"
+ id="use14085"
+ xlink:href="#g14017"
+ y="0"
+ x="0" />
+ <rect
+ style="opacity:0.5;color:#000000;fill:url(#linearGradient21634) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect18528-7"
+ width="60"
+ height="60"
+ x="-586"
+ y="-1558.6378"
+ transform="scale(-1,1)"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(87,34)"
+ id="use14043"
+ xlink:href="#g14017"
+ y="0"
+ x="0" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#g14017"
+ id="use14041"
+ transform="translate(58,34)"
+ width="5033"
+ height="1085" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ style="opacity:0.5;color:#000000;fill:url(#linearGradient21636) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect9149"
+ width="119"
+ height="1.0000159"
+ x="526"
+ y="-1497.6378" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ rx="1.9999999"
+ ry="2"
+ y="-631"
+ x="1567.6378"
+ height="93"
+ width="32"
+ id="rect7766"
+ style="opacity:0.6;color:#000000;fill:url(#radialGradient21638) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:15.99660015;marker:none;visibility:visible;display:inline;overflow:visible"
+ transform="matrix(0,-1,-1,0,0,0)" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ y="-1491.6378"
+ x="575"
+ height="1.0000159"
+ width="78"
+ id="rect9153"
+ style="opacity:0.25;color:#000000;fill:url(#linearGradient21640) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ y="-1547.6379"
+ x="575"
+ height="55.999939"
+ width="78.000008"
+ id="rect7689"
+ style="color:#000000;fill:url(#linearGradient21642) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ y="-1545.6379"
+ x="577"
+ height="52"
+ width="74"
+ id="rect7693"
+ style="color:#000000;fill:url(#linearGradient21644) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(18,0)"
+ id="use14147"
+ xlink:href="#path7695"
+ y="0"
+ x="0" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#path7695"
+ id="use14149"
+ transform="translate(36,0)"
+ width="5033"
+ height="1085" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(54,0)"
+ id="use14151"
+ xlink:href="#path7695"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ id="use14145"
+ xlink:href="#rect9043"
+ y="0"
+ x="0"
+ transform="translate(0,30)" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(0,10)"
+ id="use14135"
+ xlink:href="#rect9043"
+ y="0"
+ x="0" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ style="opacity:0.15;color:#000000;fill:url(#linearGradient21646) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect8541"
+ width="50"
+ height="50"
+ x="599.99988"
+ y="-1544.6378" />
+ <use
+ transform="translate(0,20)"
+ x="0"
+ y="0"
+ xlink:href="#rect9043"
+ id="use14143"
+ width="5033"
+ height="1085" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ y="-1529.6379"
+ x="580"
+ height="31.999846"
+ width="14.000001"
+ id="rect7707"
+ style="color:#000000;fill:#0369a3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ style="opacity:0.25;color:#000000;fill:url(#linearGradient21702) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect9043"
+ width="61"
+ height="1.0000159"
+ x="583"
+ y="-1538.6378" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ style="color:#000000;fill:#a33e03;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect7711"
+ width="14.000001"
+ height="41.999733"
+ x="598"
+ y="-1539.6379" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ y="-1517.6379"
+ x="616"
+ height="19.99983"
+ width="14.000001"
+ id="rect7715"
+ style="color:#000000;fill:#c99c00;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ style="color:#000000;fill:#43c330;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect7719"
+ width="14.000001"
+ height="27.999968"
+ x="634"
+ y="-1525.6379" />
+ <path
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ style="opacity:0.5;color:#000000;fill:url(#radialGradient21704) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ d="m 577.57142,-1503.6378 18.85716,0 c 0.31656,0 0.57142,1.5082 0.57142,3.3816 l 0,3.2368 c 0,1.8734 -0.25486,3.3816 -0.57142,3.3816 l -18.85716,0 c -0.31657,0 -0.57142,-1.5082 -0.57142,-3.3816 l 0,-3.2368 c 0,-1.8734 0.25485,-3.3816 0.57142,-3.3816 z"
+ id="path7695"
+ inkscape:connector-curvature="0" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ transform="scale(1,-1)"
+ style="color:#000000;fill:url(#linearGradient21652) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect7709"
+ width="12"
+ height="30"
+ x="581"
+ y="1498.6379" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ transform="scale(1,-1)"
+ y="1498.6379"
+ x="599"
+ height="40"
+ width="12"
+ id="rect7713"
+ style="color:#000000;fill:url(#linearGradient21654) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ transform="scale(1,-1)"
+ style="color:#000000;fill:url(#linearGradient21656) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect7717"
+ width="12"
+ height="18"
+ x="617"
+ y="1498.6379" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ y="1498.6379"
+ x="635"
+ height="26"
+ width="12"
+ id="rect7721"
+ style="color:#000000;fill:url(#linearGradient21658) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ transform="scale(1,-1)" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ y="-1527.6378"
+ x="582"
+ height="28"
+ width="10"
+ id="rect8985"
+ style="opacity:0.35;color:#000000;fill:url(#linearGradient21660) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:15.99660015;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ style="opacity:0.35;color:#000000;fill:url(#linearGradient21662) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:15.99660015;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect8995"
+ width="10"
+ height="38"
+ x="600"
+ y="-1537.6378" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ y="-1528.6378"
+ x="581"
+ height="1.0000159"
+ width="12"
+ id="rect9022"
+ style="opacity:0.75;color:#000000;fill:url(#linearGradient21706) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ style="opacity:0.5;color:#000000;fill:url(#linearGradient21666) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect9035"
+ width="74"
+ height="1.0000159"
+ x="577"
+ y="-1497.6378" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ y="-1494.6378"
+ x="577"
+ height="1.0000159"
+ width="74"
+ id="rect9060"
+ style="opacity:0.75;color:#000000;fill:url(#linearGradient21668) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ style="opacity:0.35;color:#000000;fill:url(#linearGradient21670) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:15.99660015;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect9098"
+ width="10"
+ height="24"
+ x="636"
+ y="-1523.6378" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ y="-1515.6378"
+ x="618"
+ height="16"
+ width="10"
+ id="rect9115"
+ style="opacity:0.35;color:#000000;fill:url(#linearGradient21672) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:15.99660015;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ y="1545.6378"
+ x="-651"
+ height="1.0000159"
+ width="74"
+ id="use9300"
+ style="opacity:0.25;color:#000000;fill:url(#linearGradient21708) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ transform="scale(-1,-1)"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(0,53)"
+ id="use14121"
+ xlink:href="#use9300"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(18,-10)"
+ id="use14123"
+ xlink:href="#rect9022"
+ y="0"
+ x="0" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect9022"
+ id="use14125"
+ transform="translate(36,12)"
+ width="5033"
+ height="1085" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(54,4)"
+ id="use14127"
+ xlink:href="#rect9022"
+ y="0"
+ x="0" />
+ </g>
+ <g
+ id="g21294">
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect9253"
+ width="84"
+ height="55.999992"
+ x="309"
+ y="-1601.6378" />
+ <path
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ sodipodi:nodetypes="ccccccccccccccccccccccccccccccccccccccccccccccccccccccc"
+ inkscape:connector-curvature="0"
+ id="rect9185"
+ d="m 274,-1601.6378 0,5 31,0 0,-5 z m -9,10 0,5 40,0 0,-5 z m 0,10 0,5 40,0 0,-5 z m 0,10 0,5 40,0 0,-5 z m 0,10 0,5 40,0 0,-5 z m 0,10 0,5 40,0 0,-5 z m 0,10 0,5 128,0 0,-5 z m 0,10 0,5 128,0 0,-5 z m 0,10 0,5 128,0 0,-5 z m 0,10 0,5 128,0 0,-5 z m 0,10 0,5 84,0 0,-5 z"
+ style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ y="-1602.6378"
+ x="309"
+ height="55.999992"
+ width="84"
+ id="rect8348"
+ style="color:#000000;fill:url(#linearGradient8652-8) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <g
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ style="fill:url(#linearGradient8652) #000000;fill-opacity:1"
+ transform="translate(0,-1)"
+ id="g7372">
+ <rect
+ y="-1601.6377"
+ x="274"
+ height="5"
+ width="31"
+ id="rect8334"
+ style="color:#000000;fill:url(#linearGradient8776) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ y="-1541.6377"
+ x="265.00009"
+ height="5"
+ width="127.99992"
+ id="rect8336"
+ style="color:#000000;fill:url(#linearGradient8778) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ style="color:#000000;fill:url(#linearGradient8780) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect8342"
+ width="83.999924"
+ height="5"
+ x="265.00009"
+ y="-1501.6377" />
+ <rect
+ style="color:#000000;fill:url(#linearGradient8782) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect8479"
+ width="40"
+ height="5"
+ x="265.00009"
+ y="-1591.6377" />
+ <rect
+ style="color:#000000;fill:url(#linearGradient8784) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect8484"
+ width="40"
+ height="5"
+ x="265.00009"
+ y="-1581.6377" />
+ <rect
+ y="-1571.6377"
+ x="265.00009"
+ height="5"
+ width="40"
+ id="rect8486"
+ style="color:#000000;fill:url(#linearGradient8786) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ y="-1561.6377"
+ x="265.00009"
+ height="5"
+ width="40"
+ id="rect8492"
+ style="color:#000000;fill:url(#linearGradient8788) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ style="color:#000000;fill:url(#linearGradient8790) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect8494"
+ width="40"
+ height="5"
+ x="265.00009"
+ y="-1551.6377" />
+ <rect
+ style="color:#000000;fill:url(#linearGradient8792) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect8554"
+ width="127.99992"
+ height="5"
+ x="265.00009"
+ y="-1531.6377" />
+ <rect
+ y="-1521.6377"
+ x="265.00009"
+ height="5"
+ width="127.99992"
+ id="rect8558"
+ style="color:#000000;fill:url(#linearGradient8794) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ style="color:#000000;fill:url(#linearGradient8796) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect8562"
+ width="127.99992"
+ height="5"
+ x="265.00009"
+ y="-1511.6377" />
+ </g>
+ <path
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ inkscape:connector-curvature="0"
+ id="rect8662"
+ d="m 373,-1602.6378 0,56 20,0 0,-56 -20,0 z m 0,60 0,5 20,0 0,-5 -20,0 z m 0,10 0,5 20,0 0,-5 -20,0 z m 0,10 0,5 20,0 0,-5 -20,0 z m 0,10 0,5 20,0 0,-5 -20,0 z"
+ style="opacity:0.5;color:#000000;fill:url(#linearGradient8648-3) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ style="color:#000000;fill:url(#linearGradient19761-6) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect8350"
+ width="75.998436"
+ height="48"
+ x="313.00146"
+ y="-1598.6378" />
+ <path
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ sodipodi:nodetypes="ccccc"
+ inkscape:connector-curvature="0"
+ id="path9005"
+ d="m 368.34375,-1584.5 c -15.06455,6.008 -29.77881,14.2205 -39.78125,27.25 20.47917,0 39.95543,-0.9876 60.4346,-0.9876 l 0.003,-9.0436 c -5.06837,-4.3947 -14.40166,-15.0328 -20.65615,-17.2188 z"
+ style="opacity:0.5;color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <path
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="ccccc"
+ id="path8352"
+ d="m 368.73365,-1583.5703 c 5.06659,2.5332 13.87172,11.3551 20.26345,17.733 l 0,7.5997 -58.26412,0 c 10.13459,-12.6662 25.33429,-20.2661 38.00067,-25.3327 z"
+ style="color:#000000;fill:url(#linearGradient8608) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <path
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cccccccccc"
+ id="path8354"
+ d="m 350.12987,-1568.8456 c 0,0 0.44272,-3.5773 0.44272,-3.5773 0,0 6.65294,-2.8463 6.65294,-2.8463 0,0 3.74161,-3.4959 3.74161,-3.4959 0,0 6.57905,-2.6676 6.57905,-2.6676 0,0 -1.71689,4.3216 -1.71689,4.3216 0,0 -2.56482,4.493 -2.56482,4.493 0,0 -1.52666,4.8826 -1.52666,4.8826 0,0 -1.05581,2.8131 -1.05581,2.8131 0,0 -10.55214,-3.9232 -10.55214,-3.9232 z"
+ style="fill:#333333;stroke:none" />
+ <path
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ sodipodi:nodetypes="cccccc"
+ inkscape:connector-curvature="0"
+ id="path8661"
+ d="m 332.4375,-1591.7188 c -6.44898,9.7171 -11.85933,18.5139 -19.43604,27.2131 l 0.0676,7.0347 c 16.78125,0 44.49346,0.221 61.27471,0.221 -14.05705,-10.2048 -29.3751,-19.5806 -38.09375,-35.0312 -1.2011,1.0694 -3.04104,-0.519 -3.8125,0.5624 z"
+ style="opacity:0.5;color:#000000;fill:url(#linearGradient8680) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <path
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ inkscape:connector-curvature="0"
+ style="color:#000000;fill:url(#linearGradient8604) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible"
+ d="m 352.26735,-1572.1706 c -7.58307,-6.2914 -11.39978,-11.3997 -16.46634,-18.9996 -1.48156,0.4474 -1.42497,0.2772 -2.53328,0 0,0 -6.77802,10.0696 -10.13314,15.1997 -3.3551,5.1301 -10.13459,12.6664 -10.13459,12.6664 l 0,5.0665 58.26412,0 c 0,0 -13.91947,-10.0546 -18.99677,-13.933 z"
+ id="path8356"
+ sodipodi:nodetypes="ccczcccc" />
+ <path
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="ccczzzccccccc"
+ id="path8358"
+ d="m 388.99992,-1563.3041 c 0,0 -3.26563,0 -3.26563,0 0,0 -14.46735,2.5333 -14.46735,2.5333 0,0 -14.29633,-3.7999 -16.44699,-3.7999 -2.11303,0 -8.88582,1.2666 -10.15319,1.2666 -0.88823,0 -6.33248,-2.5332 -7.61991,-2.5332 -2.12419,0 -4.57202,2.6915 -10.90522,3.7998 0,0 -1.81956,-4.0372 -3.00704,-3.7998 -7.59985,2.9292 -10.13459,2.5332 -10.13459,2.5332 l 0,12.6664 75.9971,0 c 0,0 0.002,-12.6664 0.002,-12.6664 l 2.8e-4,0 z"
+ style="color:#000000;fill:url(#linearGradient9085) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <path
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="ccccccccccc"
+ id="path8360"
+ d="m 313.00148,-1560.7708 -9.9e-4,10.1331 65.86679,0 c 0,0 2.53328,-2.5333 2.53328,-2.5333 0,0 -2.53328,-2.5332 -2.53328,-2.5332 0,0 -5.06657,-2.5334 -5.06657,-2.5334 0,0 -12.66641,-2.5332 -12.66641,-2.5332 0,0 -12.6664,-1.2667 -12.6664,-1.2667 0,0 -11.39977,1.2667 -11.39977,1.2667 0,0 -15.1997,0 -15.1997,0 0,0 -8.86648,0 -8.86648,0 z"
+ style="color:#000000;fill:url(#linearGradient8598) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <path
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ inkscape:connector-curvature="0"
+ style="fill:#333333;stroke:none"
+ d="m 318.06803,-1565.8373 c 0,0 3.60932,-5.7939 3.60932,-5.7939 0,0 4.27798,-5.063 4.27798,-5.063 0,0 3.2666,-5.9502 3.2666,-5.9502 0,0 4.0458,-5.9926 4.0458,-5.9926 0,0 -2.74602,7.5677 -2.74602,7.5677 0,0 -2.01069,6.2344 -2.01069,6.2344 0,0 -0.97249,3.9328 -0.97249,3.9328 0,0 -1.81468,4.19 -1.81468,4.19 -0.73049,-0.5328 -1.65402,-0.5525 -2.4869,-0.8228 0,0 -2.37836,0.9322 -2.37836,0.9322 0,0 -2.79056,0.7654 -2.79056,0.7654 z"
+ id="path8362"
+ sodipodi:nodetypes="cccccccccccc" />
+ <path
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="ccccccccccccccc"
+ id="path8366"
+ d="m 327.36147,-1565.7254 2.72366,-6.8784 1.32843,-7.1007 1.92133,-4.3839 1.19947,-4.5486 1.66504,4.6804 0.47301,4.4696 2.01407,3.9818 1.99664,4.5749 0.37323,3.2315 -3.35375,0.9414 -3.18579,-1.2421 -3.5217,2.2848 -3.63364,0 z"
+ style="fill:url(#linearGradient8633) #000000;fill-opacity:1;stroke:none" />
+ <path
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="ccccc"
+ style="fill:#808080;stroke:none"
+ d="m 360.01266,-1564.5661 c 0,0 -4.43728,-3.1983 -4.43728,-3.1983 0,0 -2.8341,-2.261 -2.8341,-2.261 0,0 2.75251,4.2894 2.75251,4.2894 0,0 4.51887,1.1699 4.51887,1.1699 z"
+ id="path8368" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ transform="matrix(0,-1,-1,0,0,0)"
+ style="color:#000000;fill:url(#radialGradient8546) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:15.99660015;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect8544"
+ width="32"
+ height="76"
+ x="1566.6378"
+ y="-389" />
+ <path
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ sodipodi:type="arc"
+ style="opacity:0.5;color:#000000;fill:#e9b913;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="path8372"
+ sodipodi:cx="441.1875"
+ sodipodi:cy="1099.6875"
+ sodipodi:rx="7.5845342"
+ sodipodi:ry="4.6875"
+ d="m 448.77203,1099.6875 a 7.5845342,4.6875 0 0 1 -7.58453,4.6875 l 0,-4.6875 z"
+ transform="matrix(0,1.97771,-3.2,0,3908,-2471.26)"
+ sodipodi:start="0"
+ sodipodi:end="1.5707963" />
+ <path
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ inkscape:connector-curvature="0"
+ style="color:#000000;fill:url(#linearGradient8633-1) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;marker:none;visibility:visible;display:inline;overflow:visible"
+ d="m 363.73029,-1567.6165 c 0,0 1.56591,-5.0425 1.56591,-5.0425 0,0 1.92131,-4.3839 1.92131,-4.3839 0,0 1.19949,-4.5482 1.19949,-4.5482 0,0 1.66502,4.6803 1.66502,4.6803 0,0 2.13549,3.9947 2.13549,3.9947 0,0 1.5391,3.9818 1.5391,3.9818 0,0 -0.2199,4.2582 -0.2199,4.2582 0,0 2.11487,2.1231 2.11487,2.1231 0,0 -4.35374,-0.2356 -4.35374,-0.2356 0,0 -8.78699,-1.8183 -8.78699,-1.8183 0,0 1.21952,-3.0101 1.21952,-3.0101 z"
+ id="path8374"
+ sodipodi:nodetypes="cccccccccccc" />
+ <path
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="ccccccccccccc"
+ style="fill:url(#linearGradient8641) #000000;fill-opacity:1;stroke:none"
+ d="m 353.53397,-1565.8373 c 0,0 -3.68849,-5.5898 -3.68849,-5.5898 0,0 -6.54106,-7.1331 -6.54106,-7.1331 0,0 -5.41174,-7.1153 -5.41174,-7.1153 0,0 -2.09167,-2.9615 -2.09167,-2.9615 0,0 2.267,7.6889 2.267,7.6889 0,0 2.48629,4.611 2.48629,4.611 0,0 2.2055,7.0438 2.2055,7.0438 0,0 0.64107,3.456 0.64107,3.456 0,0 2.27708,0.763 2.27708,0.763 0,0 3.48079,-0.8064 3.48079,-0.8064 1.46126,-0.1444 2.92258,0.026 4.37523,0.044 l 0,0 z"
+ id="path8376" />
+ <path
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ inkscape:connector-curvature="0"
+ id="path8378"
+ d="m 387.97077,-1564.8084 c 0,0 -2.97601,-1.7897 -2.97601,-1.7897 0,0 -4.16611,-5.7083 -4.16611,-5.7083 0,0 -6.12423,-5.2942 -6.12423,-5.2942 0,0 -4.78328,-3.9905 -4.78328,-3.9905 0,0 0.92119,3.3345 0.92119,3.3345 0,0 4.22793,6.6695 4.22793,6.6695 0,0 0.46386,6.0147 0.46386,6.0147 0,0 2.54103,1.9517 2.54103,1.9517 0,0 5.69988,-1.1083 5.69988,-1.1083 l 4.19574,-0.078 z"
+ style="color:#000000;fill:url(#linearGradient8641-8) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;marker:none;visibility:visible;display:inline;overflow:visible"
+ sodipodi:nodetypes="ccccccccccc" />
+ <path
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ inkscape:connector-curvature="0"
+ style="color:#000000;fill:url(#linearGradient9159) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible"
+ d="m 313.02716,-1558.1713 -0.0257,7.5336 63.33202,0 0,-2.5333 -2.53326,-2.5332 -12.66643,-2.5334 -12.6664,-1.2665 -12.6664,1.2665 -13.70914,0.3778 z"
+ id="path8380"
+ sodipodi:nodetypes="cccccccccc" />
+ <path
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ sodipodi:nodetypes="ccccccccccccccccc"
+ inkscape:connector-curvature="0"
+ id="path9073"
+ d="m 348.50168,-1560.7047 -12.72043,1.4419 -13.56901,1.0378 -8.2752,0.029 8.15671,0.3393 13.98392,-0.021 12.39108,-1.2813 12.6875,1.209 5.64415,1.101 6.9496,1.6177 2.28125,2.1875 0.3125,2.4063 1.15625,0 0.20512,-2.7873 -3.41109,-3.2617 -13.20012,-2.4813 z"
+ style="color:#000000;fill:#0088b7;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <path
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ inkscape:connector-curvature="0"
+ style="opacity:0.5;fill:#1c99e0;stroke:none"
+ d="m 340.86757,-1553.171 c 0,0 2.5333,-2.5332 2.5333,-2.5332 0,0 10.1331,0 10.1331,0 0,0 7.59984,2.5332 7.59984,2.5332 0,0 2.53329,2.5333 2.53329,2.5333 0,0 -5.06655,0 -5.06655,0 0,0 -17.73298,-2.5333 -17.73298,-2.5333 z"
+ id="path8382"
+ sodipodi:nodetypes="ccccccc" />
+ <path
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ sodipodi:nodetypes="ccsccccc"
+ inkscape:connector-curvature="0"
+ id="path8616"
+ d="m 335.8125,-1588.6378 1.5625,5.9062 c 1.28434,2.3781 3.8039,3.3846 5.88388,5.4107 3.00348,2.9257 6.33881,6.3819 7.61612,7.4956 l -1.03125,-1.5938 -6.53125,-7.1562 -5.40625,-7.0938 z"
+ style="opacity:0.4;fill:#ffffff;stroke:none" />
+ <path
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ sodipodi:nodetypes="ccccccccc"
+ inkscape:connector-curvature="0"
+ id="path8644"
+ d="m 333.28125,-1588.6378 -3.26961,7.6132 -3.26164,9.1368 -3.5736,4.3728 c 0.51396,0.1149 2.10574,0.4962 2.54235,0.8147 l 1.8125,-4.1875 0.96875,-3.9375 2.03125,-6.25 z"
+ style="opacity:0.25;fill:#000000;stroke:none" />
+ <path
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ inkscape:connector-curvature="0"
+ id="path8669"
+ d="m 337.03125,-1565.8253 c -2.06881,0 -4.43308,2.5305 -10.40625,3.6875 l -0.21875,0.125 c 0.10772,0.037 0.48667,0.1051 1.8125,-0.094 1.76776,-0.2652 8.0599,-2.9322 9.5625,-2.8437 1.5026,0.088 5.99111,2.6508 6.875,2.5625 0.88388,-0.089 9.37776,-1.3224 10.96875,-0.9688 1.59099,0.3535 16.1875,3.625 16.1875,3.625 l 13.9375,-2.5625 3.25,0.094 0,-1.0938 -3.28125,0 -14.4375,2.5313 c 0,0 -14.31809,-3.8125 -16.46875,-3.8125 -2.11303,0 -8.88888,1.2812 -10.15625,1.2812 -0.88823,0 -6.33757,-2.5312 -7.625,-2.5312 z"
+ style="opacity:0.35;fill:#ffff00;stroke:none" />
+ <path
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ sodipodi:end="1.5707963"
+ sodipodi:start="0"
+ transform="matrix(0,1.71401,-2.77333,0,3438.8,-2354.84)"
+ d="m 448.77203,1099.6875 a 7.5845342,4.6875 0 0 1 -7.58453,4.6875 l 0,-4.6875 z"
+ sodipodi:ry="4.6875"
+ sodipodi:rx="7.5845342"
+ sodipodi:cy="1099.6875"
+ sodipodi:cx="441.1875"
+ id="path9046"
+ style="opacity:0.73999999;color:#000000;fill:url(#linearGradient10761) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ sodipodi:type="arc" />
+ <path
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ inkscape:connector-curvature="0"
+ id="path9050"
+ d="m 373,-1598.6378 c 0,8.8432 7.15662,16 16,16 l 0,-0.9884 c -8.29749,0 -15.01158,-6.7142 -15.01158,-15.0116 l -0.98842,0 z"
+ style="opacity:0.5;color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <path
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ sodipodi:nodetypes="cccccccccccccccccc"
+ inkscape:connector-curvature="0"
+ id="path9064"
+ d="m 369.90625,-1581.6066 0.9375,3.3438 4.21875,6.6875 0.46875,6 2.53125,1.9687 0.4375,-0.094 -2.25,-2.25 -0.4375,-5.75 -2.41291,-3.709 6.47541,3.459 5.125,5.3437 -4.15625,-5.6875 -6.125,-5.3125 z m 15.09375,15 0.25,0.2813 -0.0625,-0.1563 z"
+ style="opacity:0.4;fill:#ffffff;stroke:none" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ style="opacity:0.25;color:#000000;fill:url(#linearGradient7410) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect7408"
+ width="84.375"
+ height="1.0000159"
+ x="309.5"
+ y="-1550.6378" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ y="-1599.6378"
+ x="309.5"
+ height="1.0000159"
+ width="84.375"
+ id="rect7412"
+ style="opacity:0.15;color:#000000;fill:url(#linearGradient7414) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <path
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ inkscape:connector-curvature="0"
+ id="rect9059"
+ d="m 313,-1598.6378 0,48 76,0 0,-48 -76,0 z m 1,1 74,0 0,46 -74,0 0,-46 z"
+ style="opacity:0.35;color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <path
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ inkscape:connector-curvature="0"
+ id="rect8555"
+ d="m 274,-1602.6378 0,5 9,0 0,-5 -9,0 z m -9,10 0,5 18,0 0,-5 -18,0 z m 0,10 0,5 18,0 0,-5 -18,0 z m 0,10 0,5 18,0 0,-5 -18,0 z m 0,10 0,5 18,0 0,-5 -18,0 z m 0,10 0,5 18,0 0,-5 -18,0 z m 0,10 0,5 18,0 0,-5 -18,0 z m 0,10 0,5 18,0 0,-5 -18,0 z m 0,10 0,5 18,0 0,-5 -18,0 z m 0,10 0,5 18,0 0,-5 -18,0 z m 0,10 0,5 18,0 0,-5 -18,0 z"
+ style="opacity:0.5;color:#000000;fill:url(#linearGradient8648) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ style="opacity:0.25;color:#000000;fill:url(#linearGradient19804) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect19802"
+ width="31"
+ height="1.0000159"
+ x="274"
+ y="-1602.6377" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ transform="matrix(0,1,-1,0,0,0)"
+ y="-313.00003"
+ x="-1598.6378"
+ height="1.0000159"
+ width="48"
+ id="rect20127"
+ style="opacity:0.25;color:#000000;fill:url(#linearGradient20129) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ style="opacity:0.25;color:#000000;fill:url(#linearGradient20133) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect20131"
+ width="48"
+ height="1.0000159"
+ x="-1598.6378"
+ y="-390.00003"
+ transform="matrix(0,1,-1,0,0,0)" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ style="opacity:0.25;color:#000000;fill:url(#linearGradient20141) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect20139"
+ width="48"
+ height="1.0000159"
+ x="-1598.6378"
+ y="-310.00003"
+ transform="matrix(0,1,-1,0,0,0)" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ y="-1547.6378"
+ x="309.5"
+ height="1.0000159"
+ width="84.375"
+ id="rect20143"
+ style="opacity:0.25;color:#000000;fill:url(#linearGradient20145) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ transform="matrix(0,1,-1,0,0,0)"
+ y="-393.00003"
+ x="-1598.6378"
+ height="1.0000159"
+ width="48"
+ id="rect20147"
+ style="opacity:0.25;color:#000000;fill:url(#linearGradient20149) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <use
+ height="1085"
+ width="5033"
+ transform="matrix(1.29032,0,0,0.999984,-88.5484,9.9745)"
+ id="use14153"
+ xlink:href="#rect19802"
+ y="0"
+ x="0" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect19802"
+ id="use14155"
+ transform="matrix(1.29032,0,0,0.999984,-88.5484,19.9745)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect19802"
+ id="use14157"
+ transform="matrix(1.29032,0,0,0.999984,-88.5484,29.9745)"
+ width="5033"
+ height="1085" />
+ <use
+ height="1085"
+ width="5033"
+ transform="matrix(1.29032,0,0,0.999984,-88.5484,39.9745)"
+ id="use14159"
+ xlink:href="#rect19802"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="matrix(1.29032,0,0,0.999984,-88.5484,49.9745)"
+ id="use14161"
+ xlink:href="#rect19802"
+ y="0"
+ x="0" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect19802"
+ id="use14163"
+ transform="matrix(4.12903,0,0,0.999984,-866.355,59.9745)"
+ width="5033"
+ height="1085" />
+ <use
+ height="1085"
+ width="5033"
+ transform="matrix(4.12903,0,0,0.999984,-866.355,69.9745)"
+ id="use14165"
+ xlink:href="#rect19802"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="matrix(4.12903,0,0,0.999984,-866.355,79.9745)"
+ id="use14167"
+ xlink:href="#rect19802"
+ y="0"
+ x="0" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect19802"
+ id="use14169"
+ transform="matrix(4.12903,0,0,0.999984,-866.355,89.9745)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect19802"
+ id="use14171"
+ transform="matrix(2.70968,0,0,0.999984,-477.452,99.9745)"
+ width="5033"
+ height="1085" />
+ </g>
+ <g
+ id="g21475"
+ transform="translate(1,0)">
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ y="-1494.6377"
+ x="815"
+ height="4.9999952"
+ width="25"
+ id="rect10490"
+ style="opacity:0.5;color:#000000;fill:url(#radialGradient21899) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ y="-1498.6377"
+ x="789"
+ height="7.9999952"
+ width="121"
+ id="rect10563"
+ style="opacity:0.4;color:#000000;fill:url(#radialGradient21562) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <path
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ inkscape:connector-curvature="0"
+ style="fill:#4d4d4d;fill-opacity:1;stroke:none"
+ d="m 846.24248,-1508.6377 -24.24242,16 9.76884,0 3.39813,-1.114 18.83303,-14.886 z"
+ id="path10476"
+ sodipodi:nodetypes="cccccc" />
+ <use
+ height="1085"
+ width="5033"
+ transform="matrix(-1,0,0,1,1699,0)"
+ id="use14177"
+ xlink:href="#path10476"
+ y="0"
+ x="0" />
+ <path
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cccccc"
+ id="path10478"
+ d="m 854.00006,-1508.6377 24,16 -10.01126,0 -3.08619,-0.878 -18.90255,-15.122 z"
+ style="fill:#4d4d4d;fill-opacity:1;stroke:none" />
+ <path
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ sodipodi:nodetypes="ccccc"
+ id="path9896"
+ d="m 844.24248,-1508.6377 -24.24242,16 11.75758,0 20.24242,-16 -7.75758,0 z"
+ style="fill:url(#linearGradient21901) #000000;fill-opacity:1;stroke:none"
+ inkscape:connector-curvature="0" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ style="color:#000000;fill:url(#linearGradient21566) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.29999995;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect9898"
+ width="12"
+ height="6.0000606"
+ x="844"
+ y="-1512.6377" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ ry="1"
+ rx="1"
+ y="-1602.6379"
+ x="786"
+ height="91.999969"
+ width="128"
+ id="rect9902"
+ style="color:#000000;fill:#a33e03;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ ry="2"
+ rx="2"
+ style="color:#000000;fill:url(#linearGradient21568) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect9904"
+ width="122"
+ height="86"
+ x="789"
+ y="-1599.6377" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ y="-1599.6377"
+ x="789"
+ height="86"
+ width="122"
+ id="rect9906"
+ style="color:#000000;fill:url(#linearGradient21570) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ rx="2"
+ ry="2" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ rx="2"
+ ry="2"
+ y="-1598.6378"
+ x="790"
+ height="84"
+ width="20"
+ id="rect10082"
+ style="opacity:0.35;color:#000000;fill:url(#linearGradient21903) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:15.99660015;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ style="opacity:0.5;color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect10603"
+ width="52"
+ height="36.000034"
+ x="850"
+ y="-1559.6377" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ transform="matrix(0,1,-1,0,0,0)"
+ style="color:#000000;fill:url(#radialGradient21574) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:15.99660015;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect10090"
+ width="32"
+ height="64"
+ x="-1545.6378"
+ y="-882" />
+ <g
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ style="opacity:0.5"
+ id="g10220">
+ <rect
+ style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect10204"
+ width="30"
+ height="4"
+ x="810.00006"
+ y="-1558.6377" />
+ <rect
+ y="-1548.6377"
+ x="810.00006"
+ height="4"
+ width="30"
+ id="rect10206"
+ style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect10208"
+ width="30"
+ height="4"
+ x="810.00006"
+ y="-1538.6377" />
+ <rect
+ y="-1528.6377"
+ x="810.00006"
+ height="4"
+ width="30"
+ id="rect10210"
+ style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ </g>
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ style="color:#000000;fill:url(#linearGradient21576) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect9910"
+ width="30"
+ height="4"
+ x="810.00006"
+ y="-1559.6377" />
+ <g
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ id="g10182">
+ <path
+ sodipodi:type="arc"
+ style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="path10176"
+ sodipodi:cx="895.5"
+ sodipodi:cy="651.75"
+ sodipodi:rx="5.4999981"
+ sodipodi:ry="5.250001"
+ d="m 901,651.75 a 5.4999981,5.250001 0 1 1 -11,0 5.4999981,5.250001 0 1 1 11,0 z"
+ transform="matrix(0.363636,0,0,0.380952,476.364,-1794.92)" />
+ <path
+ transform="matrix(0.363636,0,0,0.380952,476.364,-1784.92)"
+ d="m 901,651.75 a 5.4999981,5.250001 0 1 1 -11,0 5.4999981,5.250001 0 1 1 11,0 z"
+ sodipodi:ry="5.250001"
+ sodipodi:rx="5.4999981"
+ sodipodi:cy="651.75"
+ sodipodi:cx="895.5"
+ id="path10178"
+ style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ sodipodi:type="arc" />
+ <path
+ transform="matrix(0.363636,0,0,0.380952,476.364,-1804.92)"
+ d="m 901,651.75 a 5.4999981,5.250001 0 1 1 -11,0 5.4999981,5.250001 0 1 1 11,0 z"
+ sodipodi:ry="5.250001"
+ sodipodi:rx="5.4999981"
+ sodipodi:cy="651.75"
+ sodipodi:cx="895.5"
+ id="path10174"
+ style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ sodipodi:type="arc" />
+ <path
+ sodipodi:type="arc"
+ style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="path10180"
+ sodipodi:cx="895.5"
+ sodipodi:cy="651.75"
+ sodipodi:rx="5.4999981"
+ sodipodi:ry="5.250001"
+ d="m 901,651.75 a 5.4999981,5.250001 0 1 1 -11,0 5.4999981,5.250001 0 1 1 11,0 z"
+ transform="matrix(0.363636,0,0,0.380952,476.364,-1774.92)" />
+ </g>
+ <path
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ transform="matrix(0.363636,0,0,0.380952,476.364,-1805.92)"
+ d="m 901,651.75 a 5.4999981,5.250001 0 1 1 -11,0 5.4999981,5.250001 0 1 1 11,0 z"
+ sodipodi:ry="5.250001"
+ sodipodi:rx="5.4999981"
+ sodipodi:cy="651.75"
+ sodipodi:cx="895.5"
+ id="path9916"
+ style="color:#000000;fill:url(#linearGradient21578) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ sodipodi:type="arc" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect10287"
+ width="103.99995"
+ height="5"
+ x="798"
+ y="-1589.6377" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ y="-1590.6377"
+ x="798"
+ height="5"
+ width="103.99995"
+ id="rect9922"
+ style="color:#000000;fill:url(#linearGradient21580) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ y="-1560.6377"
+ x="850"
+ height="36.000034"
+ width="52"
+ id="rect9926"
+ style="color:#000000;fill:url(#linearGradient21582) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ style="color:#000000;fill:#dfdfdf;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect9928"
+ width="46"
+ height="30"
+ x="853"
+ y="-1557.6377" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ y="-1557.6376"
+ x="853"
+ height="30"
+ width="46"
+ id="rect9930"
+ style="color:#000000;fill:url(#linearGradient21584) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ style="opacity:0.05;color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect9936"
+ width="40.000027"
+ height="2"
+ x="856"
+ y="-1552.6376" />
+ <path
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ sodipodi:nodetypes="cccc"
+ id="path9942"
+ d="m 859.00006,-1533.6377 11,-11 8,8 15,-15"
+ style="fill:none;stroke:url(#linearGradient21586) #000000;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1;display:inline"
+ inkscape:connector-curvature="0" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ y="-1579.6377"
+ x="818"
+ height="5"
+ width="64"
+ id="rect10289"
+ style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ style="color:#000000;fill:url(#linearGradient21588) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect9948"
+ width="64"
+ height="5"
+ x="818"
+ y="-1580.6377" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ y="-1599.6378"
+ x="790"
+ height="1.0000159"
+ width="117"
+ id="rect10100"
+ style="color:#000000;fill:url(#linearGradient21590) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ y="-1549.6377"
+ x="810.00006"
+ height="4"
+ width="30"
+ id="rect10156"
+ style="color:#000000;fill:url(#linearGradient21592) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <path
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ sodipodi:type="arc"
+ style="color:#000000;fill:url(#linearGradient21594) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="path10158"
+ sodipodi:cx="895.5"
+ sodipodi:cy="651.75"
+ sodipodi:rx="5.4999981"
+ sodipodi:ry="5.250001"
+ d="m 901,651.75 a 5.4999981,5.250001 0 1 1 -11,0 5.4999981,5.250001 0 1 1 11,0 z"
+ transform="matrix(0.363636,0,0,0.380952,476.364,-1795.92)" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ style="color:#000000;fill:url(#linearGradient21596) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect10162"
+ width="30"
+ height="4"
+ x="810.00006"
+ y="-1539.6377" />
+ <path
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ transform="matrix(0.363636,0,0,0.380952,476.364,-1785.92)"
+ d="m 901,651.75 a 5.4999981,5.250001 0 1 1 -11,0 5.4999981,5.250001 0 1 1 11,0 z"
+ sodipodi:ry="5.250001"
+ sodipodi:rx="5.4999981"
+ sodipodi:cy="651.75"
+ sodipodi:cx="895.5"
+ id="path10164"
+ style="color:#000000;fill:url(#linearGradient21598) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ sodipodi:type="arc" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ y="-1529.6377"
+ x="810.00006"
+ height="4"
+ width="30"
+ id="rect10168"
+ style="color:#000000;fill:url(#linearGradient21600) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <path
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ sodipodi:type="arc"
+ style="color:#000000;fill:url(#linearGradient21602) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="path10170"
+ sodipodi:cx="895.5"
+ sodipodi:cy="651.75"
+ sodipodi:rx="5.4999981"
+ sodipodi:ry="5.250001"
+ d="m 901,651.75 a 5.4999981,5.250001 0 1 1 -11,0 5.4999981,5.250001 0 1 1 11,0 z"
+ transform="matrix(0.363636,0,0,0.380952,476.364,-1775.92)" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ y="-1590.6378"
+ x="798"
+ height="1.0000159"
+ width="104"
+ id="rect10320"
+ style="opacity:0.25;color:#000000;fill:url(#linearGradient21604) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ style="opacity:0.5;color:#000000;fill:url(#linearGradient21606) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect10324"
+ width="64"
+ height="1.0000159"
+ x="818"
+ y="-1580.6378" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ y="-1513.6378"
+ x="792"
+ height="1.0000159"
+ width="116"
+ id="rect10448"
+ style="opacity:0.5;color:#000000;fill:url(#linearGradient21608) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ y="-1558.6378"
+ x="853"
+ height="1.0000159"
+ width="46.062992"
+ id="rect10629"
+ style="opacity:0.25;color:#000000;fill:url(#linearGradient21905) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ style="color:#000000;fill:url(#linearGradient21612) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect10638"
+ width="46.062992"
+ height="1.0000159"
+ x="853.1496"
+ y="-1528.5748" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ y="-1559.6378"
+ x="810"
+ height="1.0000159"
+ width="30.000061"
+ id="rect10652"
+ style="opacity:0.25;color:#000000;fill:url(#linearGradient21907) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ transform="matrix(0,1,-1,0,0,0)"
+ style="opacity:0.15;color:#000000;fill:url(#linearGradient21909) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect11596"
+ width="82"
+ height="1.0000159"
+ x="-1597.6378"
+ y="-791" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(119,0)"
+ id="use14087"
+ xlink:href="#rect11596"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="matrix(-1,0,0,1,1700,0)"
+ id="use14089"
+ xlink:href="#rect10082"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(0,10)"
+ id="use14091"
+ xlink:href="#rect10652"
+ y="0"
+ x="0" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect10652"
+ id="use14093"
+ transform="translate(0,20)"
+ width="5033"
+ height="1085" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(0,30)"
+ id="use14095"
+ xlink:href="#rect10652"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(0,31)"
+ id="use14097"
+ xlink:href="#rect10629"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(0,6)"
+ id="use14103"
+ xlink:href="#rect9936"
+ y="0"
+ x="0" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect9936"
+ id="use14105"
+ transform="translate(0,12)"
+ width="5033"
+ height="1085" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(0,17)"
+ id="use14107"
+ xlink:href="#rect9936"
+ y="0"
+ x="0" />
+ <path
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ style="fill:none;stroke:url(#linearGradient21618) #000000;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1;display:inline"
+ d="m 859.00006,-1533.6377 11,-11 8,8 15,-15"
+ id="path9945"
+ sodipodi:nodetypes="cccc"
+ inkscape:connector-curvature="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="matrix(-1,0,0,1,1699,0)"
+ id="use14175"
+ xlink:href="#rect10490"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="matrix(-1,0,0,1,1699,0)"
+ id="use14179"
+ xlink:href="#path9896"
+ y="0"
+ x="0" />
+ </g>
+ <g
+ id="g21816"
+ transform="translate(2,0)">
+ <path
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ inkscape:connector-curvature="0"
+ style="color:#000000;fill:url(#linearGradient21865) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible"
+ d="m 1307.0003,-1602.638 0,6 28,0 0,-6 -28,0 z m 32,0 0,6 30,0 0,-6 -30,0 z m 34,0 0,6 30,0 0,-6 -30,0 z m 34,0 0,6 28,0 0,-6 -28,0 z m -100,10 0,8 28,0 0,-8 -28,0 z m 32,0 0,8 30,0 0,-8 -30,0 z m 34,0 0,8 30,0 0,-8 -30,0 z m 34,0 0,8 28,0 0,-8 -28,0 z m -100,12 0,8 28,0 0,-8 -28,0 z m 32,0 0,8 30,0 0,-8 -30,0 z m 34,0 0,8 30,0 0,-8 -30,0 z m 34,0 0,8 28,0 0,-8 -28,0 z m -100,12 0,8 28,0 0,-8 -28,0 z m 32,0 0,8 30,0 0,-8 -30,0 z m 34,0 0,8 30,0 0,-8 -30,0 z m 34,0 0,8 28,0 0,-8 -28,0 z m -100,12 0,8 28,0 0,-8 -28,0 z m 32,0 0,8 30,0 0,-8 -30,0 z m 34,0 0,8 30,0 0,-8 -30,0 z m 34,0 0,8 28,0 0,-8 -28,0 z m -100,12 0,8 28,0 0,-8 -28,0 z m 32,0 0,8 30,0 0,-8 -30,0 z m 34,0 0,8 30,0 0,-8 -30,0 z m 34,0 0,8 28,0 0,-8 -28,0 z m -100,12 0,8 28,0 0,-8 -28,0 z m 32,0 0,8 30,0 0,-8 -30,0 z m 34,0 0,8 30,0 0,-8 -30,0 z m 34,0 0,8 28,0 0,-8 -28,0 z m -100,12 0,8 28,0 0,-8 -28,0 z m 32,0 0,8 30,0 0,-8 -30,0 z m 34,0 0,8 30,0 0,-8 -30,0 z m 34,0 0,8 28,0 0,-8 -28,0 z m -100,12 0,8 28,0 0,-8 -28,0 z m 32,0 0,8 30,0 0,-8 -30,0 z m 34,0 0,8 30,0 0,-8 -30,0 z m 34,0 0,8 28,0 0,-8 -28,0 z m -100,12 0,6 28,0 0,-6 -28,0 z m 32,0 0,6 30,0 0,-6 -30,0 z m 34,0 0,6 30,0 0,-6 -30,0 z m 34,0 0,6 28,0 0,-6 -28,0 z"
+ id="path11953" />
+ <path
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ sodipodi:nodetypes="cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"
+ inkscape:connector-curvature="0"
+ id="path8700"
+ d="m 1307,-1602.6378 0,1 28,0 0,-1 z m 32,0 0,1 30,0 0,-1 z m 34,0 0,1 30,0 0,-1 z m 34,0 0,1 28,0 0,-1 z m -100,10 0,1 28,0 0,-1 z m 32,0 0,1 30,0 0,-1 z m 34,0 0,1 30,0 0,-1 z m 34,0 0,1 28,0 0,-1 z m -100,12 0,1 28,0 0,-1 z m 32,0 0,1 30,0 0,-1 z m 34,0 0,1 30,0 0,-1 z m 34,0 0,1 28,0 0,-1 z m -100,12 0,1 28,0 0,-1 z m 32,0 0,1 30,0 0,-1 z m 34,0 0,1 30,0 0,-1 z m 34,0 0,1 28,0 0,-1 z m -100,12 0,1 28,0 0,-1 z m 32,0 0,1 30,0 0,-1 z m 34,0 0,1 30,0 0,-1 z m 34,0 0,1 28,0 0,-1 z m -100,12 0,1 28,0 0,-1 z m 32,0 0,1 30,0 0,-1 z m 34,0 0,1 30,0 0,-1 z m 34,0 0,1 28,0 0,-1 z m -100,12 0,1 28,0 0,-1 z m 32,0 0,1 30,0 0,-1 z m 34,0 0,1 30,0 0,-1 z m 34,0 0,1 28,0 0,-1 z m -100,12 0,1 28,0 0,-1 z m 32,0 0,1 30,0 0,-1 z m 34,0 0,1 30,0 0,-1 z m 34,0 0,1 28,0 0,-1 z m -100,12 0,1 28,0 0,-1 z m 32,0 0,1 30,0 0,-1 z m 34,0 0,1 30,0 0,-1 z m 34,0 0,1 28,0 0,-1 z m -100,12 0,1 28,0 0,-1 z m 32,0 0,1 30,0 0,-1 z m 34,0 0,1 30,0 0,-1 z m 34,0 0,1 28,0 0,-1 z"
+ style="opacity:0.25;color:#000000;fill:#800080;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;opacity:0.5;color:#000000;fill:none;stroke:#ffffff;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Sans"
+ d="m 1336.8667,-1582.8566 c -4.4225,1.1052 -8.0003,2.6406 -10.5626,4.2813 -2.5623,1.6406 -4.2094,3.5916 -4.2187,5.9375 -0.078,19.6496 -0.062,38.3855 -0.062,54 0,2.2938 1.6506,4.2616 4.2188,5.9062 2.5682,1.6445 6.1886,3.057 10.5937,4.25 8.8102,2.3861 20.8595,3.8438 34.1875,3.8438 13.328,0 25.3773,-1.4577 34.1875,-3.8438 4.4051,-1.193 8.0254,-2.6054 10.5937,-4.25 2.5682,-1.6445 4.1959,-3.6233 4.1959,-5.9171 l 0,-54 c 0,-2.3459 -1.6956,-4.286 -4.2578,-5.9266 -2.5623,-1.6407 -6.1626,-3.0896 -10.5626,-4.2813 -8.7998,-2.3834 -20.8257,-3.7812 -34.1562,-3.7812 -13.4197,0 -24.7005,1.4179 -34.1572,3.7812 z m 34.1562,-1.7812 c 13.1884,-0.024 25.1148,1.4594 33.6875,3.7812 4.2863,1.1609 7.7357,2.5926 10.0313,4.0625 2.2956,1.47 3.4615,2.9179 3.3437,4.1563 -0.2099,2.2051 -2.5786,3.7353 -4.2498,4.6877 -2.7109,1.5447 -5.9518,2.7094 -8.875,3.4682 -9.9807,2.5907 -19.9474,3.5351 -29.5313,3.7808 -13.2609,0.2127 -26.4103,-0.7313 -38.5312,-3.8423 -2.8126,-0.7333 -5.249,-1.6374 -7.6562,-2.8437 -2.1609,-1.0829 -5.0631,-2.882 -5.2805,-5.2495 -0.117,-1.2738 1.048,-2.6864 3.3437,-4.1563 2.2956,-1.47 5.6973,-3.0942 10.0313,-4.0625 11.926,-2.6645 23.6544,-3.7638 33.6865,-3.7824 z m -47,16.125 c 0.633,0.635 1.3925,1.2732 2.2812,1.8125 3.29,1.9964 7.3084,3.4876 10.5626,4.2812 13.1049,3.0399 26.1178,4.0856 38.625,3.7191 10.112,-0.3193 20.3214,-1.0694 29.6874,-3.7191 4.6348,-1.3113 9.5649,-2.8964 12.8438,-6.0937 l 0,12.875 c 0,0.5819 0,1.2208 -0.125,1.7187 -0.2732,1.1053 -1.3688,2.437 -3.3438,3.5938 -3.2639,1.9117 -6.8389,3.0829 -9.9998,3.9374 -11.2316,2.7397 -22.9156,3.7351 -33.5312,3.75 -11.4559,-0.088 -23.5356,-1.1252 -33.6875,-3.7813 -4.3563,-1.3747 -8.7244,-2.5615 -11.8745,-5.4685 -0.7253,-0.677 -1.1339,-1.4058 -1.3125,-2.0313 -0.1617,-0.5663 -0.124,-1.122 -0.124,-1.7187 l 0,-12.875 z m 0,18.0312 c 0.3881,0.384 0.8349,0.7645 1.3125,1.125 3.8328,2.6485 8.599,4.1875 12.7498,5.2191 11.4816,2.6061 21.6513,3.4771 32.9375,3.4992 11.3534,-0.2328 22.4745,-0.8133 32.9375,-3.4995 3.7047,-0.9664 7.6813,-2.3851 10.6879,-3.9063 1.1439,-0.5788 2.9374,-2.034 3.375,-2.4378 0,0 0,8.5625 0,12.8438 0,0.5819 0,1.2208 -0.125,1.7187 -0.2732,1.1053 -1.4022,2.3818 -3.3438,3.5938 -4.2885,2.5159 -9.373,3.9033 -13.8435,4.8749 -10.3889,2.0162 -19.9086,2.7984 -29.6875,2.8125 -4.946,0 -9.7115,-0.172 -14.1875,-0.5938 -10.0501,-1.2286 -18.9816,-2.1518 -27.5,-6.0625 -1.4518,-0.6725 -2.7953,-1.6037 -3.8745,-2.5935 -0.7312,-0.6706 -1.117,-1.4108 -1.3125,-2.0313 -0.075,-0.2376 -0.1224,-0.5025 -0.124,-0.7187 -0.035,-4.6145 0,-9.2292 0,-13.8438 z m 0,18 c 1.5656,1.541 3.6376,2.7051 5.531,3.5003 8.6756,3.5974 18.9429,5.0615 27.125,5.7497 4.9351,0.4055 9.7705,0.5946 14.3438,0.5933 11.3687,-0.1838 22.4492,-0.8859 32.9375,-3.4995 4.2187,-1.1456 8.1701,-2.4102 11.6567,-4.4691 0.9341,-0.5547 1.6709,-1.1929 2.4062,-1.875 0,0 0,8.5625 0,12.8438 0,0.3333 0,-0.7879 0,1 0,1.2961 -1.0229,2.7528 -3.3125,4.2187 -2.2896,1.4662 -5.7189,2.8405 -10,4 -8.5625,2.3189 -20.5059,3.7813 -33.6875,3.7813 -13.1817,0 -25.1251,-1.4623 -33.6875,-3.7813 -4.2812,-1.1594 -7.7104,-2.5339 -10,-4 -2.2896,-1.466 -3.3125,-2.9226 -3.3125,-4.2187 0,-4.6146 0,-9.2292 0,-13.8438 z"
+ id="path14181"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="sssssssssssssssssssssccssssscsccscsssccccsscccccccscsscccccssssccccccccsssssssscc"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ <path
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ inkscape:connector-curvature="0"
+ style="opacity:0.35;color:#000000;fill:url(#linearGradient21867) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ d="m 1322,-1602.6378 0,6 -15,0 0,-6 15,0 z m 0,10 0,8 -15,0 0,-8 15,0 z m 0,12 0,8 -15,0 0,-8 15,0 z m 0,12 0,8 -15,0 0,-8 15,0 z m 0,12 0,8 -15,0 0,-8 15,0 z m 0,12 0,8 -15,0 0,-8 15,0 z m 0,12 0,8 -15,0 0,-8 15,0 z m 0,12 0,8 -15,0 0,-8 15,0 z m 0,12 0,8 -15,0 0,-8 15,0 z m 0,12 0,6 -15,0 0,-6 15,0 z"
+ id="path8750" />
+ <path
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ inkscape:connector-curvature="0"
+ id="rect8729"
+ d="m 1420,-1602.6378 0,6 15,0 0,-6 -15,0 z m 0,10 0,8 15,0 0,-8 -15,0 z m 0,12 0,8 15,0 0,-8 -15,0 z m 0,12 0,8 15,0 0,-8 -15,0 z m 0,12 0,8 15,0 0,-8 -15,0 z m 0,12 0,8 15,0 0,-8 -15,0 z m 0,12 0,8 15,0 0,-8 -15,0 z m 0,12 0,8 15,0 0,-8 -15,0 z m 0,12 0,8 15,0 0,-8 -15,0 z m 0,12 0,6 15,0 0,-6 -15,0 z"
+ style="opacity:0.35;color:#000000;fill:url(#linearGradient21869) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ style="opacity:0.5;color:#000000;fill:url(#radialGradient21871) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect8713"
+ width="128"
+ height="30"
+ x="1307"
+ y="-1530.6377" />
+ <path
+ sodipodi:nodetypes="ccsccc"
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ inkscape:connector-curvature="0"
+ id="path11957"
+ d="m 1323,-1570.6378 0,52 c 0,7.1797 21.4903,13 48,13 26.5096,0 48,-5.8203 48,-13 l 0,-52 z"
+ style="color:#000000;fill:url(#linearGradient21873) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <path
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ sodipodi:nodetypes="sssssssssssssssssssssccssssscsccscsssccccsscccccccscsscccccssssccccccccsssssssscc"
+ inkscape:connector-curvature="0"
+ id="path8875-6"
+ d="m 1336.8667,-1582.8566 c -4.4225,1.1052 -8.0003,2.6406 -10.5626,4.2813 -2.5623,1.6406 -4.2094,3.5916 -4.2187,5.9375 -0.078,19.6496 -0.062,38.3855 -0.062,54 0,2.2938 1.6506,4.2616 4.2188,5.9062 2.5682,1.6445 6.1886,3.057 10.5937,4.25 8.8102,2.3861 20.8595,3.8438 34.1875,3.8438 13.328,0 25.3773,-1.4577 34.1875,-3.8438 4.4051,-1.193 8.0254,-2.6054 10.5937,-4.25 2.5682,-1.6445 4.1959,-3.6233 4.1959,-5.9171 l 0,-54 c 0,-2.3459 -1.6956,-4.286 -4.2578,-5.9266 -2.5623,-1.6407 -6.1626,-3.0896 -10.5626,-4.2813 -8.7998,-2.3834 -20.8257,-3.7812 -34.1562,-3.7812 -13.4197,0 -24.7005,1.4179 -34.1572,3.7812 z m 34.1562,-1.7812 c 13.1884,-0.024 25.1148,1.4594 33.6875,3.7812 4.2863,1.1609 7.7357,2.5926 10.0313,4.0625 2.2956,1.47 3.4615,2.9179 3.3437,4.1563 -0.2099,2.2051 -2.5786,3.7353 -4.2498,4.6877 -2.7109,1.5447 -5.9518,2.7094 -8.875,3.4682 -9.9807,2.5907 -19.9474,3.5351 -29.5313,3.7808 -13.2609,0.2127 -26.4103,-0.7313 -38.5312,-3.8423 -2.8126,-0.7333 -5.249,-1.6374 -7.6562,-2.8437 -2.1609,-1.0829 -5.0631,-2.882 -5.2805,-5.2495 -0.117,-1.2738 1.048,-2.6864 3.3437,-4.1563 2.2956,-1.47 5.6973,-3.0942 10.0313,-4.0625 11.926,-2.6645 23.6544,-3.7638 33.6865,-3.7824 z m -47,16.125 c 0.633,0.635 1.3925,1.2732 2.2812,1.8125 3.29,1.9964 7.3084,3.4876 10.5626,4.2812 13.1049,3.0399 26.1178,4.0856 38.625,3.7191 10.112,-0.3193 20.3214,-1.0694 29.6874,-3.7191 4.6348,-1.3113 9.5649,-2.8964 12.8438,-6.0937 l 0,12.875 c 0,0.5819 0,1.2208 -0.125,1.7187 -0.2732,1.1053 -1.3688,2.437 -3.3438,3.5938 -3.2639,1.9117 -6.8389,3.0829 -9.9998,3.9374 -11.2316,2.7397 -22.9156,3.7351 -33.5312,3.75 -11.4559,-0.088 -23.5356,-1.1252 -33.6875,-3.7813 -4.3563,-1.3747 -8.7244,-2.5615 -11.8745,-5.4685 -0.7253,-0.677 -1.1339,-1.4058 -1.3125,-2.0313 -0.1617,-0.5663 -0.124,-1.122 -0.124,-1.7187 l 0,-12.875 z m 0,18.0312 c 0.3881,0.384 0.8349,0.7645 1.3125,1.125 3.8328,2.6485 8.599,4.1875 12.7498,5.2191 11.4816,2.6061 21.6513,3.4771 32.9375,3.4992 11.3534,-0.2328 22.4745,-0.8133 32.9375,-3.4995 3.7047,-0.9664 7.6813,-2.3851 10.6879,-3.9063 1.1439,-0.5788 2.9374,-2.034 3.375,-2.4378 0,0 0,8.5625 0,12.8438 0,0.5819 0,1.2208 -0.125,1.7187 -0.2732,1.1053 -1.4022,2.3818 -3.3438,3.5938 -4.2885,2.5159 -9.373,3.9033 -13.8435,4.8749 -10.3889,2.0162 -19.9086,2.7984 -29.6875,2.8125 -4.946,0 -9.7115,-0.172 -14.1875,-0.5938 -10.0501,-1.2286 -18.9816,-2.1518 -27.5,-6.0625 -1.4518,-0.6725 -2.7953,-1.6037 -3.8745,-2.5935 -0.7312,-0.6706 -1.117,-1.4108 -1.3125,-2.0313 -0.075,-0.2376 -0.1224,-0.5025 -0.124,-0.7187 -0.035,-4.6145 0,-9.2292 0,-13.8438 z m 0,18 c 1.5656,1.541 3.6376,2.7051 5.531,3.5003 8.6756,3.5974 18.9429,5.0615 27.125,5.7497 4.9351,0.4055 9.7705,0.5946 14.3438,0.5933 11.3687,-0.1838 22.4492,-0.8859 32.9375,-3.4995 4.2187,-1.1456 8.1701,-2.4102 11.6567,-4.4691 0.9341,-0.5547 1.6709,-1.1929 2.4062,-1.875 0,0 0,8.5625 0,12.8438 0,0.3333 0,-0.7879 0,1 0,1.2961 -1.0229,2.7528 -3.3125,4.2187 -2.2896,1.4662 -5.7189,2.8405 -10,4 -8.5625,2.3189 -20.5059,3.7813 -33.6875,3.7813 -13.1817,0 -25.1251,-1.4623 -33.6875,-3.7813 -4.2812,-1.1594 -7.7104,-2.5339 -10,-4 -2.2896,-1.466 -3.3125,-2.9226 -3.3125,-4.2187 0,-4.6146 0,-9.2292 0,-13.8438 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:url(#linearGradient21875) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Sans" />
+ <path
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ sodipodi:type="arc"
+ style="color:#000000;fill:url(#radialGradient21877) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.90445203;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="path11967"
+ sodipodi:cx="519.6875"
+ sodipodi:cy="730.3125"
+ sodipodi:rx="22.4375"
+ sodipodi:ry="5.6875"
+ d="m 542.125,730.3125 a 22.4375,5.6875 0 1 1 -44.875,0 22.4375,5.6875 0 1 1 44.875,0 z"
+ transform="matrix(2.09471,0,0,2.10989,282.407,-3113.52)" />
+ <path
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ inkscape:connector-curvature="0"
+ style="opacity:0.5;color:#000000;fill:none;stroke:#ffffff;stroke-width:1;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible"
+ d="m 1324.4843,-1567.3581 0,11.1536 c 0,0 0,0.6884 0,0.9333 0,6.7008 20.8164,12.1328 46.4948,12.1328 25.6783,0 46.4947,-5.432 46.4947,-12.1328 l 0,-0.9333 0,-11.093 c -4.1571,3.7151 -19.6266,9.1956 -46.3488,9.1956 -26.7222,0 -42.7516,-5.5408 -46.6407,-9.2562 z"
+ id="path12064"
+ sodipodi:nodetypes="cccsccczc" />
+ <path
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ transform="matrix(2.07242,0,0,2.02198,293.987,-3049.31)"
+ d="m 542.125,730.3125 a 22.4375,5.6875 0 1 1 -44.875,0 22.4375,5.6875 0 1 1 44.875,0 z"
+ sodipodi:ry="5.6875"
+ sodipodi:rx="22.4375"
+ sodipodi:cy="730.3125"
+ sodipodi:cx="519.6875"
+ id="path12066"
+ style="opacity:0.5;color:#000000;fill:none;stroke:#ffffff;stroke-width:0.488509;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible"
+ sodipodi:type="arc" />
+ <path
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ sodipodi:nodetypes="cccsccczc"
+ id="path8855"
+ d="m 1324.4843,-1566.8575 0,9.1536 c 0,0 0,0.6884 0,0.9333 0,6.7008 20.8164,12.1328 46.4948,12.1328 25.6783,0 46.4947,-5.432 46.4947,-12.1328 l 0,-0.9333 0,-9.093 c -4.1571,3.7151 -19.6266,9.1956 -46.3488,9.1956 -26.7222,0 -42.7516,-5.5408 -46.6407,-9.2562 z"
+ style="opacity:0.25;color:#000000;fill:url(#linearGradient21885) #000000;fill-opacity:1;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ inkscape:connector-curvature="0" />
+ <path
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ sodipodi:nodetypes="ccccc"
+ inkscape:connector-curvature="0"
+ id="path8982"
+ d="m 1336.75,-1580.4771 71.375,15.0742 -19.4435,3.8901 -31.5035,-22.125 z"
+ style="opacity:0.25;fill:url(#linearGradient21881) #000000;fill-opacity:1;stroke:none" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(0,18)"
+ id="use14183"
+ xlink:href="#path12064"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(0,18)"
+ id="use14185"
+ xlink:href="#path8855"
+ y="0"
+ x="0" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#path12064"
+ id="use14187"
+ transform="translate(0,36)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#path8855"
+ id="use14189"
+ transform="translate(0,36)"
+ width="5033"
+ height="1085" />
+ <path
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ inkscape:connector-curvature="0"
+ id="path8992"
+ d="m 1331.7271,-1563.8805 c 0,0 1.2809,21.6144 9.4257,36.5283 8.1448,14.9139 15.2451,19.1332 15.2451,19.1332 l 16.8342,-1.4495 c 0,0 -17.0503,-11.4476 -25.0669,-27.6647 -8.0166,-16.2172 -10.0081,-24.3946 -10.0081,-24.3946 z"
+ style="opacity:0.25;fill:url(#linearGradient21883) #000000;fill-opacity:1;stroke:none;display:inline" />
+ </g>
+ <g
+ id="g21710"
+ transform="translate(1,0)">
+ <path
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ transform="matrix(2.30303,0,0,2.30303,-1640.94,-3117.34)"
+ d="m 1201,675.5 a 16.5,16.5 0 1 1 -33,0 16.5,16.5 0 1 1 33,0 z"
+ sodipodi:ry="16.5"
+ sodipodi:rx="16.5"
+ sodipodi:cy="675.5"
+ sodipodi:cx="1184.5"
+ id="path11302"
+ style="opacity:0.15;color:#000000;fill:none;stroke:#000000;stroke-width:0.86842102;stroke-miterlimit:4;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible"
+ sodipodi:type="arc" />
+ <path
+ sodipodi:type="arc"
+ style="color:#000000;fill:url(#linearGradient21768) #000000;fill-opacity:1;fill-rule:nonzero;stroke:url(#linearGradient21770) #000000;stroke-width:0.86842102;stroke-miterlimit:4;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="path10779"
+ sodipodi:cx="1184.5"
+ sodipodi:cy="675.5"
+ sodipodi:rx="16.5"
+ sodipodi:ry="16.5"
+ d="m 1201,675.5 a 16.5,16.5 0 1 1 -33,0 16.5,16.5 0 1 1 33,0 z"
+ transform="matrix(2.30303,0,0,2.30303,-1640.94,-3119.34)"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ <path
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ sodipodi:type="arc"
+ style="color:#000000;fill:url(#linearGradient21772) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.94117999;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="path8594"
+ sodipodi:cx="1184.5"
+ sodipodi:cy="675.5"
+ sodipodi:rx="16.5"
+ sodipodi:ry="16.5"
+ d="m 1201,675.5 a 16.5,16.5 0 1 1 -33,0 16.5,16.5 0 1 1 33,0 z"
+ transform="matrix(2.18182,0,0,2.18182,-1497.36,-3037.46)" />
+ <path
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;opacity:0.15;color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.425026;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Sans"
+ d="m 1096.8481,-1561.6352 a 1.0351061,0.96111743 0 0 0 -0.1526,0.1414 1.0351061,0.96111743 0 0 0 -0.6087,0.4238 l -19.9376,31.9379 -19.7861,32.0792 a 1.0351061,0.96111743 0 0 0 -0.1518,0.1413 1.0351061,0.96111743 0 0 0 0,0.2826 1.0351061,0.96111743 0 0 0 0,0.2827 1.0351061,0.96111743 0 0 0 0.1518,0.2826 1.0351061,0.96111743 0 0 0 0.1525,0.1413 1.0351061,0.96111743 0 0 0 0.1525,0.1413 1.0351061,0.96111743 0 0 0 0.6088,0.1414 l 39.723,0 39.7232,0 a 1.0351061,0.96111743 0 0 0 0.6087,-0.1414 1.0351061,0.96111743 0 0 0 0.1526,-0.1413 1.0351061,0.96111743 0 0 0 0.1523,-0.1413 1.0351061,0.96111743 0 0 0 0.1521,-0.2826 1.0351061,0.96111743 0 0 0 0,-0.2827 1.0351061,0.96111743 0 0 0 0,-0.2826 1.0351061,0.96111743 0 0 0 -0.1521,-0.1413 l -19.7861,-32.0792 -19.9374,-31.9379 a 1.0351061,0.96111743 0 0 0 -0.6089,-0.4238 1.0351061,0.96111743 0 0 0 -0.3044,-0.1414 1.0351061,0.96111743 0 0 0 -0.1518,0 z m 0.1518,2.9677 19.0245,30.5247 19.0248,30.5246 -38.0493,0 -38.0491,0 19.0248,-30.5246 19.0243,-30.5247 z"
+ id="path11694"
+ inkscape:connector-curvature="0" />
+ <path
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ inkscape:transform-center-y="-9.2811104"
+ inkscape:transform-center-x="-16.15625"
+ transform="matrix(1.375,0,0,1.375,-552.375,-1826.79)"
+ d="m 1217,179.75 a 16,16 0 1 1 -32,0 16,16 0 1 1 32,0 z"
+ sodipodi:ry="16"
+ sodipodi:rx="16"
+ sodipodi:cy="179.75"
+ sodipodi:cx="1201"
+ id="path9581"
+ style="opacity:0.25;color:#000000;fill:url(#radialGradient21774) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:15.99660015;marker:none;visibility:visible;display:inline;overflow:visible"
+ sodipodi:type="arc" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ style="opacity:0.15;color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect11555"
+ width="66"
+ height="66"
+ x="1108"
+ y="-1576.6378"
+ ry="1"
+ rx="1" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ rx="1"
+ ry="1"
+ y="-1578.6378"
+ x="1108"
+ height="66"
+ width="66"
+ id="rect11340"
+ style="opacity:0.8;color:#000000;fill:url(#linearGradient21776) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ style="color:#000000;fill:url(#linearGradient21778) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect11386"
+ width="62"
+ height="62"
+ x="1110"
+ y="-1576.6378" />
+ <rect
+ y="-1575.6381"
+ x="1111"
+ height="60"
+ width="60"
+ id="rect10785"
+ style="color:#000000;fill:url(#linearGradient21780) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ transform="scale(-1,1)"
+ style="opacity:0.35;color:#000000;fill:url(#linearGradient21782) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:15.99660015;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect11519"
+ width="30"
+ height="60.000244"
+ x="-1171.0002"
+ y="-1575.6381" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ y="-1575.6381"
+ x="1111.0002"
+ height="60.000244"
+ width="30"
+ id="rect11529"
+ style="opacity:0.5;color:#000000;fill:url(#linearGradient21784) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:15.99660015;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <path
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ inkscape:connector-curvature="0"
+ id="path10787"
+ d="m 1096.8481,-1563.6352 a 1.0351061,0.96111743 0 0 0 -0.1526,0.1414 1.0351061,0.96111743 0 0 0 -0.6087,0.4238 l -19.9376,31.9379 -19.7861,32.0792 a 1.0351061,0.96111743 0 0 0 -0.1518,0.1413 1.0351061,0.96111743 0 0 0 0,0.2826 1.0351061,0.96111743 0 0 0 0,0.2827 1.0351061,0.96111743 0 0 0 0.1518,0.2826 1.0351061,0.96111743 0 0 0 0.1525,0.1413 1.0351061,0.96111743 0 0 0 0.1525,0.1413 1.0351061,0.96111743 0 0 0 0.6088,0.1414 l 39.723,0 39.7232,0 a 1.0351061,0.96111743 0 0 0 0.6087,-0.1414 1.0351061,0.96111743 0 0 0 0.1526,-0.1413 1.0351061,0.96111743 0 0 0 0.1523,-0.1413 1.0351061,0.96111743 0 0 0 0.1521,-0.2826 1.0351061,0.96111743 0 0 0 0,-0.2827 1.0351061,0.96111743 0 0 0 0,-0.2826 1.0351061,0.96111743 0 0 0 -0.1521,-0.1413 l -19.7861,-32.0792 -19.9374,-31.9379 a 1.0351061,0.96111743 0 0 0 -0.6089,-0.4238 1.0351061,0.96111743 0 0 0 -0.3044,-0.1414 1.0351061,0.96111743 0 0 0 -0.1518,0 z m 0.1518,2.9677 19.0245,30.5247 19.0248,30.5246 -38.0493,0 -38.0491,0 19.0248,-30.5246 19.0243,-30.5247 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:url(#linearGradient21786) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.425026;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Sans" />
+ <path
+ id="path4565"
+ sodipodi:type="star"
+ style="color:#000000;fill:url(#linearGradient21788) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.425026;marker:none;visibility:visible;display:inline;overflow:visible"
+ sodipodi:sides="3"
+ sodipodi:cx="1162"
+ sodipodi:cy="896"
+ sodipodi:r1="9.4339809"
+ sodipodi:r2="4.7169905"
+ sodipodi:arg1="0.52359878"
+ sodipodi:arg2="1.5707963"
+ inkscape:flatsided="false"
+ inkscape:rounded="0"
+ inkscape:randomized="0"
+ d="m 1170.1701,900.71699 -8.1701,0 -8.1701,0 4.0851,-7.07549 4.085,-7.07548 4.085,7.07548 4.0851,7.07549 z"
+ transform="matrix(4.65112,0,0,4.31066,-4307.61,-5382.32)"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ <path
+ transform="matrix(4.46753,0,0,4.09866,-4094.27,-5192.37)"
+ d="m 1170.1701,900.71699 -8.1701,0 -8.1701,0 4.0851,-7.07549 4.085,-7.07548 4.085,7.07548 4.0851,7.07549 z"
+ inkscape:randomized="0"
+ inkscape:rounded="0"
+ inkscape:flatsided="false"
+ sodipodi:arg2="1.5707963"
+ sodipodi:arg1="0.52359878"
+ sodipodi:r2="4.7169905"
+ sodipodi:r1="9.4339809"
+ sodipodi:cy="896"
+ sodipodi:cx="1162"
+ sodipodi:sides="3"
+ id="path10795"
+ style="color:#000000;fill:url(#linearGradient21790) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.85005301;marker:none;visibility:visible;display:inline;overflow:visible"
+ sodipodi:type="star"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ <path
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ sodipodi:type="star"
+ style="opacity:0.35;color:#000000;fill:url(#linearGradient21792) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.85005301;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="path11700"
+ sodipodi:sides="3"
+ sodipodi:cx="1162"
+ sodipodi:cy="896"
+ sodipodi:r1="9.4339809"
+ sodipodi:r2="4.7169905"
+ sodipodi:arg1="0.52359878"
+ sodipodi:arg2="1.5707963"
+ inkscape:flatsided="false"
+ inkscape:rounded="0"
+ inkscape:randomized="0"
+ d="m 1170.1701,900.71699 -8.1701,0 -8.1701,0 4.0851,-7.07549 4.085,-7.07548 4.085,7.07548 4.0851,7.07549 z"
+ transform="matrix(1.48918,0,0,1.36622,-657.756,-2731.22)" />
+ <path
+ transform="matrix(-1.48918,0,0,1.36622,2851.59,-2731.22)"
+ d="m 1170.1701,900.71699 -8.1701,0 -8.1701,0 4.0851,-7.07549 4.085,-7.07548 4.085,7.07548 4.0851,7.07549 z"
+ inkscape:randomized="0"
+ inkscape:rounded="0"
+ inkscape:flatsided="false"
+ sodipodi:arg2="1.5707963"
+ sodipodi:arg1="0.52359878"
+ sodipodi:r2="4.7169905"
+ sodipodi:r1="9.4339809"
+ sodipodi:cy="896"
+ sodipodi:cx="1162"
+ sodipodi:sides="3"
+ id="path11712"
+ style="opacity:0.35;color:#000000;fill:url(#linearGradient21794) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.85005301;marker:none;visibility:visible;display:inline;overflow:visible"
+ sodipodi:type="star"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ <rect
+ y="-1121"
+ x="-1524.6381"
+ height="50"
+ width="25.000061"
+ id="rect9545"
+ style="opacity:0.5;color:#000000;fill:url(#radialGradient21796) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:15.99660015;marker:none;visibility:visible;display:inline;overflow:visible"
+ transform="matrix(0,1,-1,0,0,0)"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ <path
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ sodipodi:type="star"
+ style="opacity:0.25;color:#000000;fill:url(#linearGradient21798) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.14125001;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="path11722"
+ sodipodi:sides="3"
+ sodipodi:cx="1162"
+ sodipodi:cy="896"
+ sodipodi:r1="9.4339809"
+ sodipodi:r2="4.7169905"
+ sodipodi:arg1="0.52359878"
+ sodipodi:arg2="1.5707963"
+ inkscape:flatsided="false"
+ inkscape:rounded="0"
+ inkscape:randomized="0"
+ d="m 1170.1701,900.71699 -8.1701,0 -8.1701,0 4.0851,-7.07549 4.085,-7.07548 4.085,7.07548 4.0851,7.07549 z"
+ transform="matrix(1.10158,0,0,1.02466,-183.038,-2467.07)" />
+ <rect
+ style="opacity:0.75;color:#000000;fill:#9ef290;fill-opacity:1;fill-rule:nonzero;stroke:#18a303;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect10793"
+ width="11"
+ height="11"
+ x="1051.5"
+ y="-1504.1378"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ <path
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ inkscape:connector-curvature="0"
+ style="color:#000000;fill:none;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible"
+ d="m 1127,-1513.638 46,0 0,-64 -64,0 0,35.2 18,28.8 z"
+ id="path10797"
+ sodipodi:nodetypes="cccccc" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ y="-1516.6378"
+ x="1127.0002"
+ height="1.0000159"
+ width="28.000063"
+ id="rect11537"
+ style="opacity:0.25;color:#000000;fill:url(#linearGradient21800) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ style="opacity:0.15;color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect11551"
+ width="12"
+ height="1.0000159"
+ x="1091"
+ y="-1556.6378" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ y="-1502.6378"
+ x="1053"
+ height="8"
+ width="8"
+ id="rect11639"
+ style="opacity:0.75;color:#000000;fill:url(#linearGradient21802) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:15.99660015;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ y="-1492.6378"
+ x="1051"
+ height="2"
+ width="12"
+ id="rect11641"
+ style="opacity:0.05;color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ style="opacity:0.05;color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect11647"
+ width="12"
+ height="2"
+ x="1131"
+ y="-1492.6378" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ style="opacity:0.1;color:#000000;fill:url(#linearGradient21804) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect11812"
+ width="72.000183"
+ height="1.0000159"
+ x="1058.9999"
+ y="-1501.6381" />
+ <path
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ sodipodi:nodetypes="ccccc"
+ inkscape:connector-curvature="0"
+ id="path11854"
+ d="m 1111.1375,-1543.9191 -0.875,0.5313 17.6,28.75 0.875,-0.5313 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;opacity:0.5;color:#000000;fill:url(#linearGradient21806) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Sans" />
+ <path
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ style="opacity:0.05;fill:none;stroke:#800000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 1073.5625,-1529.5441 15.9375,-25.4463 0,-15.1478 15,4e-4 -0.031,14.9289 2.0313,3.4398 0,-25.9937 c 0,0 0.1252,-2.3125 2.4377,-2.3125 2.3125,0 11.0623,0 11.0623,0"
+ id="path8614"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cccccccsc" />
+ <rect
+ y="-1171"
+ x="1546.6378"
+ height="60"
+ width="30"
+ id="rect9559"
+ style="opacity:0.5;color:#000000;fill:url(#radialGradient21808) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:15.99660015;marker:none;visibility:visible;display:inline;overflow:visible"
+ transform="matrix(0,-1,-1,0,0,0)"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(40,-64)"
+ id="use14626"
+ xlink:href="#rect10793"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(40,-64)"
+ id="use14628"
+ xlink:href="#rect11639"
+ y="0"
+ x="0" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect10793"
+ id="use14630"
+ transform="translate(80,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect11639"
+ id="use14632"
+ transform="translate(80,0)"
+ width="5033"
+ height="1085" />
+ </g>
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ y="-1063.6377"
+ x="3898"
+ height="1"
+ width="64"
+ id="rect8527"
+ style="opacity:0.15;color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ y="-1118.6378"
+ x="3898"
+ height="55"
+ width="64"
+ id="rect8529"
+ style="color:#000000;fill:url(#linearGradient16964) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ y="-1116.6378"
+ x="3900"
+ height="51"
+ width="60"
+ id="rect8533"
+ style="color:#000000;fill:url(#linearGradient16961) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#path8553"
+ id="use9242"
+ transform="translate(14,0)"
+ width="5033"
+ height="1085" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(28,0)"
+ id="use9264"
+ xlink:href="#path8553"
+ y="0"
+ x="0" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#path8553"
+ id="use9266"
+ transform="translate(42,0)"
+ width="5033"
+ height="1085" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ style="opacity:0.15;color:#000000;fill:url(#linearGradient16955) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect8535"
+ width="36"
+ height="50"
+ x="3923"
+ y="-1116.6377" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(0,20)"
+ id="use9282"
+ xlink:href="#rect8545"
+ y="0"
+ x="0" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect8545"
+ id="use9286"
+ transform="translate(0,30)"
+ width="5033"
+ height="1085" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ y="-1089.6378"
+ x="3931"
+ height="19.99983"
+ width="12"
+ id="rect8549"
+ style="color:#000000;fill:#c99c00;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect8545"
+ id="use9280"
+ transform="translate(0,10)"
+ width="5033"
+ height="1085" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ y="-1101.6378"
+ x="3903"
+ height="31.999846"
+ width="12"
+ id="rect8542"
+ style="color:#000000;fill:#0369a3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ style="opacity:0.25;color:#000000;fill:url(#linearGradient17007) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect8545"
+ width="49.459461"
+ height="1.0000159"
+ x="3904.8647"
+ y="-1108.6377" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ style="color:#000000;fill:#a33e03;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect8547"
+ width="12"
+ height="41.999733"
+ x="3917"
+ y="-1111.6378" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ style="color:#000000;fill:#43c330;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect8551"
+ width="12"
+ height="27.999968"
+ x="3945"
+ y="-1097.6378" />
+ <path
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ style="opacity:0.5;color:#000000;fill:url(#radialGradient16942) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ d="m 3900.5142,-1075.6377 16.9716,0 c 0.2848,0 0.5142,1.5082 0.5142,3.3816 l 0,3.2368 c 0,1.8734 -0.2294,3.3816 -0.5142,3.3816 l -16.9716,0 c -0.2849,0 -0.5142,-1.5082 -0.5142,-3.3816 l 0,-3.2368 c 0,-1.8734 0.2293,-3.3816 0.5142,-3.3816 z"
+ id="path8553"
+ inkscape:connector-curvature="0" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ transform="scale(1,-1)"
+ style="color:#000000;fill:url(#linearGradient16939) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect8556"
+ width="10"
+ height="30"
+ x="3904"
+ y="1070.6378" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ transform="scale(1,-1)"
+ y="1070.6378"
+ x="3918"
+ height="40"
+ width="10"
+ id="rect8564"
+ style="color:#000000;fill:url(#linearGradient16936) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ transform="scale(1,-1)"
+ style="color:#000000;fill:url(#linearGradient16933) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect8566"
+ width="10"
+ height="18"
+ x="3932"
+ y="1070.6378" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ y="1070.6378"
+ x="3946"
+ height="26"
+ width="10"
+ id="rect8568"
+ style="color:#000000;fill:url(#linearGradient16930) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ transform="scale(1,-1)" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ y="-1099.6377"
+ x="3905"
+ height="28"
+ width="8"
+ id="rect8570"
+ style="opacity:0.35;color:#000000;fill:url(#linearGradient16926) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:15.99660015;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ style="opacity:0.35;color:#000000;fill:url(#linearGradient16923) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:15.99660015;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect8572"
+ width="8"
+ height="38"
+ x="3919"
+ y="-1109.6377" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ style="opacity:0.75;color:#000000;fill:url(#linearGradient16920) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect8576"
+ width="10"
+ height="1.0000159"
+ x="3918"
+ y="-1110.6377" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ y="-1100.6377"
+ x="3904"
+ height="1.0000159"
+ width="10"
+ id="rect8578"
+ style="opacity:0.75;color:#000000;fill:url(#linearGradient16917) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ style="opacity:0.75;color:#000000;fill:url(#linearGradient16914) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect8580"
+ width="10"
+ height="1.0000159"
+ x="3932"
+ y="-1088.6377" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ y="-1096.6377"
+ x="3946"
+ height="1.0000159"
+ width="10"
+ id="rect8583"
+ style="opacity:0.75;color:#000000;fill:url(#linearGradient16911) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ style="opacity:0.5;color:#000000;fill:url(#linearGradient16908) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect8585"
+ width="60"
+ height="1.0000159"
+ x="3900"
+ y="-1069.6377" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ transform="matrix(0,1,-1,0,0,0)"
+ style="opacity:0.25;color:#000000;fill:url(#linearGradient16975) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect8595"
+ width="52"
+ height="1.0000159"
+ x="-1117.6377"
+ y="-3899" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ y="-1066.6377"
+ x="3900"
+ height="1.0000159"
+ width="60"
+ id="rect8589"
+ style="opacity:0.75;color:#000000;fill:url(#linearGradient16902) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ style="opacity:0.35;color:#000000;fill:url(#linearGradient16899) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:15.99660015;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect8591"
+ width="8"
+ height="24"
+ x="3947"
+ y="-1095.6377" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ y="-1087.6377"
+ x="3933"
+ height="16"
+ width="8"
+ id="rect8593"
+ style="opacity:0.35;color:#000000;fill:url(#linearGradient16896) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:15.99660015;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect8595"
+ id="use9268"
+ transform="matrix(0,1,-1.17647,0,2646.31,-5016.64)"
+ width="5033"
+ height="1085" />
+ <use
+ height="1085"
+ width="5033"
+ transform="matrix(0,1,-1.17647,0,2646.31,-4962.64)"
+ id="use9272"
+ xlink:href="#rect8595"
+ y="0"
+ x="0" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect8595"
+ id="use9278"
+ transform="matrix(1,0,0,1.01961,63,20.8949)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#g17009"
+ id="use17038"
+ transform="translate(1572,0)"
+ width="5033"
+ height="1085"
+ style="opacity:0.75" />
+ <g
+ id="g17410"
+ transform="translate(0,1)">
+ <rect
+ y="-1096.6378"
+ x="3376"
+ height="2"
+ width="24"
+ id="rect18795"
+ style="opacity:0.6;color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ style="opacity:0.6;color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect18770"
+ width="16"
+ height="11"
+ x="3390"
+ y="-1117.6378" />
+ <rect
+ style="opacity:0.6;color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect17454"
+ width="12"
+ height="2"
+ x="3376"
+ y="-1116.6378" />
+ <rect
+ y="-1112.6378"
+ x="3376"
+ height="2"
+ width="12"
+ id="rect17456"
+ style="opacity:0.6;color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ y="-1108.6378"
+ x="3376"
+ height="2"
+ width="12"
+ id="rect17458"
+ style="opacity:0.6;color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ style="opacity:0.6;color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect17460"
+ width="30"
+ height="2"
+ x="3376"
+ y="-1104.6378" />
+ <rect
+ y="-1100.6378"
+ x="3376"
+ height="2"
+ width="30"
+ id="rect17462"
+ style="opacity:0.6;color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ y="-1118.6378"
+ x="3390"
+ height="11"
+ width="16"
+ id="rect17062"
+ style="color:#000000;fill:#1c99e0;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ <rect
+ style="color:#000000;fill:url(#linearGradient57859) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect17064"
+ width="13.999336"
+ height="8.9998732"
+ x="3391.0002"
+ y="-1117.6377"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ <path
+ sodipodi:nodetypes="cccccccc"
+ id="path18776"
+ d="m 3399.1669,-1112.2916 -4.0835,-4.8462 -4.0834,5.923 0,1.077 14,0 0,-1.077 -2.9164,-3.2307 -2.9167,2.1539 z"
+ style="opacity:0.5;color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible"
+ inkscape:connector-curvature="0" />
+ <path
+ sodipodi:end="1.5707963"
+ sodipodi:start="0"
+ transform="matrix(0,0.659236,-1.06667,0,4578,-1408.48)"
+ d="m 448.77203,1099.6875 a 7.5845342,4.6875 0 0 1 -7.58453,4.6875 l 0,-4.6875 z"
+ sodipodi:ry="4.6875"
+ sodipodi:rx="7.5845342"
+ sodipodi:cy="1099.6875"
+ sodipodi:cx="441.1875"
+ id="path17088"
+ style="opacity:0.5;color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ sodipodi:type="arc"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ <path
+ sodipodi:end="1.5707963"
+ sodipodi:start="0"
+ transform="matrix(0,0.539377,-0.888908,0,4382.52,-1355.6)"
+ d="m 448.77203,1099.6875 a 7.5845342,4.6875 0 0 1 -7.58453,4.6875 l 0,-4.6875 z"
+ sodipodi:ry="4.6875"
+ sodipodi:rx="7.5845342"
+ sodipodi:cy="1099.6875"
+ sodipodi:cx="441.1875"
+ id="path17108"
+ style="opacity:0.73999999;color:#000000;fill:url(#linearGradient57861) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ sodipodi:type="arc"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ <path
+ inkscape:connector-curvature="0"
+ style="color:#000000;fill:url(#linearGradient57863) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible"
+ d="m 3399.1669,-1110.7916 -4.0835,-4.8462 -4.0834,5.923 0,1.077 14,0 0,-1.077 -2.9164,-3.2307 -2.9167,2.1539 z"
+ id="path23717-4"
+ sodipodi:nodetypes="cccccccc" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ style="opacity:0.35;color:#000000;fill:none;stroke:#ffffff;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect17283"
+ width="13"
+ height="8"
+ x="3391.5"
+ y="-1117.1378" />
+ <rect
+ y="-1117.6378"
+ x="3376"
+ height="2"
+ width="12"
+ id="rect17330"
+ style="color:#000000;fill:#1c99e0;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ style="color:#000000;fill:#1c99e0;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect17350"
+ width="12"
+ height="2"
+ x="3376"
+ y="-1113.6378" />
+ <rect
+ style="color:#000000;fill:#1c99e0;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect17352"
+ width="12"
+ height="2"
+ x="3376"
+ y="-1109.6378" />
+ <rect
+ y="-1105.6378"
+ x="3376"
+ height="2"
+ width="30"
+ id="rect17354"
+ style="color:#000000;fill:#1c99e0;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ style="color:#000000;fill:#1c99e0;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect17356"
+ width="30"
+ height="2"
+ x="3376"
+ y="-1101.6378" />
+ <rect
+ style="color:#000000;fill:#1c99e0;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect17360"
+ width="24"
+ height="2"
+ x="3376"
+ y="-1097.6378" />
+ </g>
+ <use
+ x="0"
+ y="0"
+ xlink:href="#g17410"
+ id="use17426"
+ transform="translate(34,0)"
+ width="5033"
+ height="1085" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(34,28)"
+ id="use17428"
+ xlink:href="#g17410"
+ y="0"
+ x="0" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#g17410"
+ id="use17430"
+ transform="translate(0,28)"
+ width="5033"
+ height="1085" />
+ <path
+ inkscape:connector-curvature="0"
+ style="color:#000000;fill:url(#linearGradient57857) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ d="m 3376,-1116.6378 0,2 10,0 0,-2 -10,0 z m 0,4 0,2 10,0 0,-2 -10,0 z m 0,4 0,2 10,0 0,-2 -10,0 z m 0,4 0,2 10,0 0,-2 -10,0 z m 0,4 0,2 10,0 0,-2 -10,0 z m 0,4 0,2 10,0 0,-2 -10,0 z"
+ id="rect18827" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect18827"
+ id="use18910"
+ transform="translate(0,28)"
+ width="5033"
+ height="1085" />
+ <path
+ id="path18912"
+ d="m 3440,-1117.6378 0,1 -10,0 0,-1 z m 0,1 0,9 -1.1111,0 0,-9 z m 0,9 0,1 -10,0 0,-1 z m 0,3 0,2 -10,0 0,-2 z m 0,4 0,2 -10,0 0,-2 z m -6,4 0,2 -4,0 0,-2 z"
+ style="color:#000000;fill:url(#linearGradient57853) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cccccccccccccccccccccccccccccc" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#path18912"
+ id="use18924"
+ transform="translate(0,28)"
+ width="5033"
+ height="1085" />
+ <rect
+ style="color:#000000;fill:#d36118;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect19547-1-7-1"
+ width="4"
+ height="2"
+ x="4167"
+ y="-1114.6355" />
+ <rect
+ style="color:#000000;fill:#d36118;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect19547-1-7-4-2-4"
+ width="4"
+ height="2"
+ x="4185"
+ y="-1106.6355" />
+ <rect
+ style="color:#000000;fill:#d36118;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect19547-1-7-4-2-4-9"
+ width="4"
+ height="2"
+ x="4183"
+ y="-1098.6355" />
+ <rect
+ style="color:#000000;fill:#d36118;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect19547-1-7-4-2-4-9-4"
+ width="8"
+ height="2"
+ x="4215"
+ y="-1094.6355" />
+ <rect
+ style="color:#000000;fill:#d36118;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect19547-1-7-4-2-0-1-5-3-8-7-5"
+ width="2"
+ height="2"
+ x="4219"
+ y="-1090.6355" />
+ <rect
+ style="color:#000000;fill:#d36118;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect19547-1-7-4-2-4-9-9"
+ width="4"
+ height="2"
+ x="4179"
+ y="-1082.6355" />
+ <g
+ id="g19364"
+ style="fill:url(#linearGradient19383) #000000;fill-opacity:1">
+ <rect
+ y="-1118.6355"
+ x="4167"
+ height="2"
+ width="22"
+ id="rect19547-1-9"
+ style="color:#000000;fill:url(#linearGradient19383) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ y="-1110.6355"
+ x="4167"
+ height="2"
+ width="12"
+ id="rect19547-1-7-1-1"
+ style="color:#000000;fill:url(#linearGradient19383) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ y="-1106.6355"
+ x="4167"
+ height="2"
+ width="12"
+ id="rect19547-1-7-1-1-4"
+ style="color:#000000;fill:url(#linearGradient19383) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ y="-1094.6355"
+ x="4175"
+ height="2"
+ width="8"
+ id="rect19547-1-7-1-1-8"
+ style="color:#000000;fill:url(#linearGradient19383) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ y="-1098.6355"
+ x="4175"
+ height="2"
+ width="2"
+ id="rect19547-1-7-4-2-0-3-4"
+ style="color:#000000;fill:url(#linearGradient19383) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ y="-1090.6355"
+ x="4175"
+ height="2"
+ width="8"
+ id="rect19547-1-7-1-1-8-4"
+ style="color:#000000;fill:url(#linearGradient19383) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ y="-1090.6355"
+ x="4213"
+ height="2"
+ width="4"
+ id="rect19547-1-7-1-1-4-6-4-0"
+ style="color:#000000;fill:url(#linearGradient19383) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ y="-1086.6355"
+ x="4177"
+ height="2"
+ width="2"
+ id="rect19547-1-7-4-2-0-3-4-3"
+ style="color:#000000;fill:url(#linearGradient19383) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ y="-1082.6355"
+ x="4171"
+ height="2"
+ width="2"
+ id="rect19547-1-7-4-2-0-3-4-9"
+ style="color:#000000;fill:url(#linearGradient19383) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ y="-1078.6355"
+ x="4175"
+ height="2"
+ width="8"
+ id="rect19547-1-7-1-1-8-4-7"
+ style="color:#000000;fill:url(#linearGradient19383) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ y="-1074.6355"
+ x="4175"
+ height="2"
+ width="8"
+ id="rect19547-1-7-1-1-8-4-7-8"
+ style="color:#000000;fill:url(#linearGradient19383) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ </g>
+ <rect
+ style="color:#000000;fill:url(#linearGradient18969) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect19547-1-7-4-2-0-1-5-5-8-1"
+ width="2"
+ height="2"
+ x="4185"
+ y="-1074.6355" />
+ <rect
+ y="-1070.6355"
+ x="4177"
+ height="2"
+ width="4"
+ id="rect21572"
+ style="color:#000000;fill:#d36118;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <g
+ id="g19385"
+ style="fill:url(#linearGradient19415) #000000;fill-opacity:1">
+ <rect
+ y="-1110.6355"
+ x="4187"
+ height="2"
+ width="12"
+ id="rect19545-9"
+ style="color:#000000;fill:url(#linearGradient19415) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ y="-1118.6355"
+ x="4159"
+ height="2"
+ width="6"
+ id="rect19547-1"
+ style="color:#000000;fill:url(#linearGradient19415) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ y="-1118.6355"
+ x="4191"
+ height="2"
+ width="6"
+ id="rect19547-1-0"
+ style="color:#000000;fill:url(#linearGradient19415) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ y="-1114.6355"
+ x="4159"
+ height="2"
+ width="6"
+ id="rect19547-1-7"
+ style="color:#000000;fill:url(#linearGradient19415) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ y="-1114.6355"
+ x="4173"
+ height="2"
+ width="4"
+ id="rect19547-1-7-4"
+ style="color:#000000;fill:url(#linearGradient19415) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ y="-1114.6355"
+ x="4179"
+ height="2"
+ width="12"
+ id="rect19547-1-7-1-7"
+ style="color:#000000;fill:url(#linearGradient19415) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ y="-1110.6355"
+ x="4159"
+ height="2"
+ width="6"
+ id="rect19547-1-7-5"
+ style="color:#000000;fill:url(#linearGradient19415) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ y="-1110.6355"
+ x="4181"
+ height="2"
+ width="4"
+ id="rect19547-1-7-4-2"
+ style="color:#000000;fill:url(#linearGradient19415) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ y="-1098.6355"
+ x="4179"
+ height="2"
+ width="2"
+ id="rect19547-1-7-4-2-0"
+ style="color:#000000;fill:url(#linearGradient19415) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ y="-1102.6355"
+ x="4167"
+ height="2"
+ width="4"
+ id="rect19547-1-7-4-2-0-3"
+ style="color:#000000;fill:url(#linearGradient19415) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ y="-1102.6355"
+ x="4173"
+ height="2"
+ width="8"
+ id="rect19545-9-2"
+ style="color:#000000;fill:url(#linearGradient19415) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ y="-1102.6355"
+ x="4183"
+ height="2"
+ width="8"
+ id="rect19545-9-2-1"
+ style="color:#000000;fill:url(#linearGradient19415) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ y="-1102.6355"
+ x="4203"
+ height="2"
+ width="5.8000002"
+ id="rect19545-9-2-6"
+ style="color:#000000;fill:url(#linearGradient19415) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ y="-1098.6355"
+ x="4167"
+ height="2"
+ width="6"
+ id="rect19545-9-2-6-1"
+ style="color:#000000;fill:url(#linearGradient19415) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ y="-1098.6355"
+ x="4189"
+ height="2"
+ width="2"
+ id="rect19547-1-7-4-2-0-7"
+ style="color:#000000;fill:url(#linearGradient19415) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ y="-1106.6355"
+ x="4181"
+ height="2"
+ width="2"
+ id="rect19547-1-7-4-2-0-1"
+ style="color:#000000;fill:url(#linearGradient19415) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ y="-1094.6377"
+ x="4185"
+ height="2"
+ width="2"
+ id="rect19547-1-7-4-2-0-1-5"
+ style="color:#000000;fill:url(#linearGradient19415) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ y="-1090.6355"
+ x="4221"
+ height="2"
+ width="2"
+ id="rect19547-1-7-4-2-0-1-5-3-8-7"
+ style="color:#000000;fill:url(#linearGradient19415) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ y="-1086.6355"
+ x="4167"
+ height="2"
+ width="8"
+ id="rect19545-9-2-6-1-5"
+ style="color:#000000;fill:url(#linearGradient19415) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ y="-1082.6355"
+ x="4167"
+ height="2"
+ width="2"
+ id="rect19547-1-7-4-2-0-3-5"
+ style="color:#000000;fill:url(#linearGradient19415) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ y="-1082.6355"
+ x="4175"
+ height="2"
+ width="2"
+ id="rect19547-1-7-4-2-0-6"
+ style="color:#000000;fill:url(#linearGradient19415) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ y="-1078.6355"
+ x="4185"
+ height="2"
+ width="2"
+ id="rect19547-1-7-4-2-0-1-5-5-8"
+ style="color:#000000;fill:url(#linearGradient19415) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ y="-1070.6355"
+ x="4167"
+ height="2"
+ width="4"
+ id="rect19547-1-7-4-2-0-3-3"
+ style="color:#000000;fill:url(#linearGradient19415) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ y="-1070.6355"
+ x="4173"
+ height="2"
+ width="2"
+ id="rect19547-1-7-4-2-0-9"
+ style="color:#000000;fill:url(#linearGradient19415) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ y="-1066.6355"
+ x="4159"
+ height="2"
+ width="4"
+ id="rect19547-1-7-4-2-0-3-3-6"
+ style="color:#000000;fill:url(#linearGradient19415) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ y="-1066.6355"
+ x="4165"
+ height="2"
+ width="4"
+ id="rect19547-1-7-4-2-0-3-3-7"
+ style="color:#000000;fill:url(#linearGradient19415) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ style="color:#000000;fill:url(#linearGradient19415) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect21570"
+ width="6"
+ height="2"
+ x="4183"
+ y="-1070.6355" />
+ <rect
+ y="-1070.6355"
+ x="4213"
+ height="2"
+ width="6"
+ id="rect21576"
+ style="color:#000000;fill:url(#linearGradient19415) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ </g>
+ <rect
+ style="color:#000000;fill:#d36118;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect21578"
+ width="4"
+ height="2"
+ x="4207"
+ y="-1070.6355" />
+ <g
+ id="g19536"
+ transform="translate(0,-0.499984)">
+ <path
+ inkscape:connector-curvature="0"
+ style="color:#000000;fill:none;stroke:#ffffff;stroke-width:2;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible"
+ d="m 4194.5992,-1101.6977 c -2.7739,0.869 -5.283,2.3366 -7.3714,4.2569 l 2.7414,6.238 c -0.7422,0.953 -1.353,2.0112 -1.8152,3.1466 l -6.777,0.7418 c -0.3043,1.3697 -0.4654,2.7956 -0.4654,4.2569 0,1.4617 0.1609,2.8871 0.4654,4.2569 l 6.777,0.7418 c 0.4622,1.1354 1.073,2.1936 1.8152,3.1466 l -2.7414,6.238 c 2.0883,1.9189 4.5978,3.3881 7.3714,4.2569 l 4.0313,-5.4962 c 0.5931,0.081 1.1997,0.1244 1.8151,0.1244 0.6154,0 1.222,-0.043 1.8152,-0.1244 l 4.0313,5.4962 c 2.7739,-0.869 5.2829,-2.3365 7.3712,-4.2569 l -2.7412,-6.238 c 0.7421,-0.953 1.3529,-2.0112 1.8152,-3.1466 l 6.7769,-0.7418 c 0.3043,-1.3697 0.4654,-2.7956 0.4654,-4.2569 0,-1.4613 -0.161,-2.8872 -0.4654,-4.2569 l -6.7769,-0.7418 c -0.4623,-1.1354 -1.0731,-2.1936 -1.8152,-3.1466 l 2.7412,-6.238 c -2.0883,-1.9203 -4.5973,-3.3879 -7.3712,-4.2569 l -4.0313,5.4962 c -0.5932,-0.081 -1.1998,-0.1244 -1.8152,-0.1244 -0.6154,0 -1.222,0.043 -1.8151,0.1244 l -4.0313,-5.4962 z m 5.8464,13.554 c 2.8091,0 5.0862,2.2772 5.0862,5.0862 0,2.809 -2.2771,5.0862 -5.0862,5.0862 -2.809,0 -5.0861,-2.2772 -5.0861,-5.0862 0,-2.809 2.2771,-5.0862 5.0861,-5.0862 z"
+ id="path4580-5-7-0-5-6-1" />
+ <path
+ inkscape:connector-curvature="0"
+ style="color:#000000;fill:url(#radialGradient71414) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ d="m 4194.5992,-1103.1977 c -2.7739,0.869 -5.283,2.3366 -7.3714,4.2569 l 2.7414,6.238 c -0.7422,0.953 -1.353,2.0112 -1.8152,3.1466 l -6.777,0.7418 c -0.3043,1.3697 -0.4654,2.7956 -0.4654,4.2569 0,1.4617 0.1609,2.8871 0.4654,4.2569 l 6.777,0.7418 c 0.4622,1.1354 1.073,2.1936 1.8152,3.1466 l -2.7414,6.238 c 2.0883,1.9189 4.5978,3.3881 7.3714,4.2569 l 4.0313,-5.4962 c 0.5931,0.081 1.1997,0.1244 1.8151,0.1244 0.6154,0 1.222,-0.043 1.8152,-0.1244 l 4.0313,5.4962 c 2.7739,-0.869 5.2829,-2.3365 7.3712,-4.2569 l -2.7412,-6.238 c 0.7421,-0.953 1.3529,-2.0112 1.8152,-3.1466 l 6.7769,-0.7418 c 0.3043,-1.3697 0.4654,-2.7956 0.4654,-4.2569 0,-1.4613 -0.161,-2.8872 -0.4654,-4.2569 l -6.7769,-0.7418 c -0.4623,-1.1354 -1.0731,-2.1936 -1.8152,-3.1466 l 2.7412,-6.238 c -2.0883,-1.9203 -4.5973,-3.3879 -7.3712,-4.2569 l -4.0313,5.4962 c -0.5932,-0.081 -1.1998,-0.1244 -1.8152,-0.1244 -0.6154,0 -1.222,0.043 -1.8151,0.1244 l -4.0313,-5.4962 z m 5.8464,13.554 c 2.8091,0 5.0862,2.2772 5.0862,5.0862 0,2.809 -2.2771,5.0862 -5.0862,5.0862 -2.809,0 -5.0861,-2.2772 -5.0861,-5.0862 0,-2.809 2.2771,-5.0862 5.0861,-5.0862 z"
+ id="path4580-5-7-0-5-6" />
+ <path
+ style="opacity:0.35;color:#000000;fill:#000000;fill-opacity:1;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible"
+ d="m 4194.5938,-1103.14 c -2.774,0.869 -5.2867,2.3297 -7.375,4.25 l 0.9687,2.1875 c 1.8819,-1.5182 4.044,-2.6975 6.4063,-3.4375 l 4.0312,5.5 c 0.5931,-0.081 1.1971,-0.125 1.8125,-0.125 0.6154,0 1.2193,0.044 1.8125,0.125 l 4.0312,-5.5 c 2.3623,0.74 4.5557,1.9193 6.4376,3.4375 l 0.9374,-2.1875 c -2.0883,-1.9203 -4.6011,-3.381 -7.375,-4.25 l -4.0312,5.5 c -0.5932,-0.081 -1.1971,-0.125 -1.8125,-0.125 -0.6154,0 -1.2194,0.044 -1.8125,0.125 l -4.0312,-5.5 z m -5.4376,11.6875 c -0.3829,0.6224 -0.7212,1.2841 -1,1.9687 l -6.7812,0.7188 c -0.3043,1.3697 -0.4688,2.8199 -0.4688,4.2812 0,0.5051 0.025,1.0045 0.063,1.5 0.071,-0.9428 0.2062,-1.881 0.4062,-2.7812 l 6.7812,-0.7188 c 0.4622,-1.1354 1.0704,-2.2032 1.8126,-3.1562 l -0.8126,-1.8125 z m 22.5626,0 -0.7813,1.8125 c 0.7421,0.953 1.3502,2.0208 1.8125,3.1562 l 6.75,0.7188 c 0.2,0.8999 0.3351,1.8387 0.4062,2.7812 0.038,-0.4958 0.063,-0.9948 0.063,-1.5 0,-1.4613 -0.1644,-2.9115 -0.4688,-4.2812 l -6.75,-0.7188 c -0.2809,-0.6899 -0.6445,-1.342 -1.0312,-1.9687 z m -16.125,8.4687 c -0.1431,0.4696 -0.2188,0.9837 -0.2188,1.5 0,2.809 2.2535,5.0625 5.0625,5.0625 2.8091,0 5.0937,-2.2535 5.0937,-5.0625 0,-0.5163 -0.076,-1.0304 -0.2187,-1.5 -0.644,2.0705 -2.5926,3.5625 -4.875,3.5625 -2.2823,0 -4.1998,-1.492 -4.8437,-3.5625 z m -6.4376,8.4375 -1.9374,4.4375 c 0.3098,0.2848 0.6408,0.5481 0.9687,0.8125 l 1.7813,-4.0625 c -0.2969,-0.3812 -0.5588,-0.7744 -0.8126,-1.1875 z m 22.5938,0.031 c -0.2499,0.4049 -0.5211,0.7821 -0.8125,1.1562 l 1.7813,4.0625 c 0.3279,-0.2645 0.6276,-0.5275 0.9374,-0.8125 l -1.9062,-4.4062 z"
+ id="path4580-5-7-0-5-6-1-67"
+ inkscape:connector-curvature="0" />
+ <path
+ inkscape:connector-curvature="0"
+ d="m 4200.4375,-1080.3438 c 2.2979,0 4.1563,-1.8582 4.1563,-4.1562 0,-2.2973 -1.8584,-4.1246 -4.1563,-4.125 -2.2976,0 -4.125,1.8279 -4.125,4.125 0,2.2979 1.8275,4.1567 4.125,4.1562 z m 0,2 c -3.3789,7e-4 -6.125,-2.7774 -6.125,-6.1562 0,-3.3784 2.7462,-6.125 6.125,-6.125 3.3787,5e-4 6.1563,2.7468 6.1563,6.125 0,3.3787 -2.7776,6.1562 -6.1563,6.1562 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:url(#linearGradient19526) #000000;fill-opacity:1;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Sans"
+ id="path19099" />
+ <path
+ inkscape:connector-curvature="0"
+ style="color:#000000;fill:none;stroke:url(#linearGradient71494-4) #000000;stroke-width:2;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible"
+ d="m 4194.5899,-1103.1339 c -2.7739,0.869 -5.283,2.3366 -7.3714,4.2569 l 2.7414,6.238 c -0.7422,0.953 -1.353,2.0112 -1.8152,3.1466 l -6.777,0.7418 c -0.3043,1.3697 -0.4654,2.7956 -0.4654,4.2569 0,1.4617 0.1609,2.8871 0.4654,4.2569 l 6.777,0.7418 c 0.4622,1.1354 1.073,2.1936 1.8152,3.1466 l -2.7414,6.238 c 2.0883,1.9189 4.5978,3.3881 7.3714,4.2569 l 4.0313,-5.4962 c 0.5931,0.081 1.1997,0.1244 1.8151,0.1244 0.6154,0 1.222,-0.043 1.8152,-0.1244 l 4.0313,5.4962 c 2.7739,-0.869 5.2829,-2.3365 7.3712,-4.2569 l -2.7412,-6.238 c 0.7421,-0.953 1.3529,-2.0112 1.8152,-3.1466 l 6.7769,-0.7418 c 0.3043,-1.3697 0.4654,-2.7956 0.4654,-4.2569 0,-1.4613 -0.161,-2.8872 -0.4654,-4.2569 l -6.7769,-0.7418 c -0.4623,-1.1354 -1.0731,-2.1936 -1.8152,-3.1466 l 2.7412,-6.238 c -2.0883,-1.9203 -4.5973,-3.3879 -7.3712,-4.2569 l -4.0313,5.4962 c -0.5932,-0.081 -1.1998,-0.1244 -1.8152,-0.1244 -0.6154,0 -1.222,0.043 -1.8151,0.1244 z"
+ id="path4580-5-7-0-5-6-1-6"
+ sodipodi:nodetypes="cccccsccccccsccccccsccccccscc" />
+ <path
+ inkscape:connector-curvature="0"
+ d="m 4200.4375,-950.54992 c 2.2979,0 4.1563,-1.8582 4.1563,-4.1562 0,-2.2973 -1.8584,-4.1246 -4.1563,-4.125 -2.2976,0 -4.125,1.8279 -4.125,4.125 0,2.2979 1.8275,4.1567 4.125,4.1562 z m 0,2 c -3.3789,7e-4 -6.125,-2.7774 -6.125,-6.1562 0,-3.3784 2.7462,-6.125 6.125,-6.125 3.3787,5e-4 6.1563,2.7468 6.1563,6.125 0,3.3787 -2.7776,6.1562 -6.1563,6.1562 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:url(#linearGradient71993) #000000;fill-opacity:1;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Sans"
+ id="path19099-1" />
+ </g>
+ <path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:url(#linearGradient19696) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono"
+ d="m 4457.625,-1105.3878 c -1.0167,0 -2.0334,0.4084 -2.8125,1.1875 l -12.0625,12.0625 -4.7188,-4.75 c -2.3077,-2.2002 -5.8734,-0.325 -6,2.875 l -0.031,26.1875 c 0,2.1946 1.9737,4.1898 4.1562,4.1875 l 26.0626,-0.031 c 3.4639,0 4.7367,-4.1314 2.875,-6.0312 l -4.7188,-4.7188 12.125,-12.0937 c 1.5581,-1.5581 1.5581,-4.0669 0,-5.625 l -12.0625,-12.0625 c -0.7791,-0.7791 -1.7958,-1.1875 -2.8125,-1.1875 z"
+ id="path12105-1"
+ inkscape:connector-curvature="0" />
+ <path
+ sodipodi:nodetypes="csscc"
+ inkscape:connector-curvature="0"
+ id="path20039"
+ d="m 4433.125,-1077.3878 0,-16.75 c 0,-2.4205 2.9148,-3.4509 4.2188,-2.1562 l 5.6826,5.6424 z"
+ style="opacity:0.5;color:#000000;fill:url(#linearGradient20041) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <path
+ sodipodi:nodetypes="cccccccccccccsc"
+ inkscape:connector-curvature="0"
+ id="path19779"
+ d="m 4455.9057,-1100.51 -12.8282,12.6863 c -0.1167,0.1168 -0.2155,0.2513 -0.3149,0.3778 l -4.8961,-5.065 c -1.8661,-1.7781 -2.7329,-1.2637 -2.8352,1.3223 l -0.031,22.1504 c 0,1.7736 0.6059,2.4023 2.3708,2.4004 l 22.0674,-0.031 c 2.801,0 2.8285,-1.3298 1.323,-2.8651 l -5.0361,-5.0337 c 0.1497,-0.1128 0.3046,-0.21 0.4411,-0.3464 l 12.6558,-12.6867 c 1.5708,-1.5698 1.5708,-2.0973 0,-3.6673 l -9.2456,-9.2415 c -1.6107,-1.61 -2.1344,-1.4894 -3.671,-5e-4 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;opacity:0.6;color:#000000;fill:none;stroke:#ffffff;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono" />
+ <path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:url(#linearGradient19710) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono"
+ d="m 4455.9057,-1100.51 -12.8282,12.6863 c -0.1167,0.1168 -0.2155,0.2513 -0.3149,0.3778 l -4.8961,-5.065 c -1.8661,-1.7781 -2.7329,-1.2637 -2.8352,1.3223 l -0.031,22.1504 c 0,1.7736 0.6059,2.4023 2.3708,2.4004 l 22.0674,-0.031 c 2.801,0 2.8285,-1.3298 1.323,-2.8651 l -5.0361,-5.0337 c 0.1497,-0.1128 0.3046,-0.21 0.4411,-0.3464 l 12.6558,-12.6867 c 1.5708,-1.5698 1.5708,-2.0973 0,-3.6673 l -9.2456,-9.2415 c -1.6107,-1.61 -2.1344,-1.4894 -3.671,-5e-4 z"
+ id="path19674"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cccccccccccccsc" />
+ <path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;opacity:0.75;color:#000000;fill:url(#linearGradient20016) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono"
+ d="m 4457.625,-1105.3878 c -1.0167,0 -2.0334,0.4084 -2.8125,1.1875 l -12.0625,12.0625 -4.7188,-4.75 c -2.3077,-2.2002 -5.8734,-0.325 -6,2.875 l -0.031,26.1875 c 0,2.1946 1.9737,4.1898 4.1562,4.1875 l 26.0626,-0.031 c 3.4638,0 4.7367,-4.1314 2.875,-6.0312 l -4.7188,-4.7188 12.125,-12.0937 c 1.5581,-1.5581 1.5581,-4.0669 0,-5.625 l -12.0625,-12.0625 c -0.7791,-0.7791 -1.7958,-1.1875 -2.8125,-1.1875 z m 0,1 c 0.7489,0 1.4987,0.2799 2.0938,0.875 l 12.0624,12.0625 c 1.1787,1.1786 1.1787,3.0402 0,4.2187 l -12.125,12.0938 -0.6874,0.7187 0.6874,0.6875 4.7188,4.7188 c 1.195,1.2194 0.5124,4.3436 -2.1562,4.3437 l -26.0626,0.031 c -1.5724,0 -3.1562,-1.5925 -3.1562,-3.1875 l 0.031,-26.1563 0,-0.031 c 0.06,-1.221 0.7616,-2.1649 1.625,-2.5938 0.8591,-0.4265 1.8011,-0.385 2.6563,0.4063 0.012,0.011 0.019,0.02 0.031,0.031 l 4.6874,4.7188 0.7188,0.7187 0.7188,-0.7187 12.0624,-12.0625 c 0.5951,-0.5951 1.3449,-0.875 2.0938,-0.875 z"
+ id="path19770"
+ inkscape:connector-curvature="0" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#use16750-8"
+ id="use19818"
+ transform="matrix(0,0.8,-1,0,3411.36,-4661.04)"
+ width="5033"
+ height="1085"
+ style="opacity:0.5" />
+ <use
+ height="1085"
+ width="5033"
+ transform="matrix(0.565685,0.565685,-0.707107,0.707107,1190.53,-2876.64)"
+ id="use19822"
+ xlink:href="#use16750-8"
+ y="0"
+ x="0"
+ style="opacity:0.5" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ style="opacity:0.25;color:#000000;fill:url(#linearGradient19871) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="use19849"
+ width="15"
+ height="15"
+ x="-1081.6378"
+ y="-4450"
+ rx="2"
+ ry="2"
+ transform="matrix(0,1,-1,0,0,0)" />
+ <path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:url(#linearGradient19908) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono"
+ d="m 4451,-1115.6378 0,0.7241 0,40.5518 0,0.7241 0.7174,0 31.5652,0 0.7174,0 0,-0.7241 0,-25.3449 0,-0.3169 -0.2242,-0.2262 -14.9755,-15.2069 -0.1794,-0.181 -0.3138,0 -16.5897,0 -0.7174,0 z"
+ id="use19588"
+ sodipodi:nodetypes="cccccccccccccccc"
+ inkscape:connector-curvature="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="matrix(0,1.33333,-1,0,3377.36,-7052.97)"
+ id="use19820"
+ xlink:href="#use16750-8"
+ y="0"
+ x="0"
+ style="opacity:0.6" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ style="opacity:0.5;color:#000000;fill:url(#linearGradient20067) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="use16750-8"
+ width="30"
+ height="1"
+ x="-4483"
+ y="1072.6378"
+ transform="scale(-1,-1)" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ style="opacity:0.3;color:#000000;fill:url(#linearGradient20063) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="use16764-2"
+ width="14"
+ height="14"
+ x="4469"
+ y="-1088.6378" />
+ <flowRoot
+ xml:space="preserve"
+ id="flowRoot19969"
+ style="font-size:12px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;opacity:0.6;fill:#18a303;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ transform="translate(-122.48926,-1753.4533)"><flowRegion
+ id="flowRegion19971"><rect
+ id="rect19973"
+ width="31.820032"
+ height="38.890881"
+ x="4574.0972"
+ y="640.76019"
+ style="fill:#18a303" /></flowRegion><flowPara
+ style="font-size:6px;fill:#18a303"
+ id="flowPara19977">010110</flowPara><flowPara
+ style="font-size:6px;fill:#18a303"
+ id="flowPara19981">00110101</flowPara><flowPara
+ style="font-size:6px;fill:#18a303"
+ id="flowPara19983">10101101</flowPara><flowPara
+ style="font-size:6px;fill:#18a303"
+ id="flowPara19985">01001010</flowPara><flowPara
+ style="font-size:6px;fill:#18a303"
+ id="flowPara19987">01010100</flowPara></flowRoot> <path
+ style="opacity:0.5;color:#000000;fill:url(#linearGradient20037) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible"
+ d="m 4444,-1066.6378 16,0 c 1.9205,0 2.2011,-1.415 0.9062,-2.7188 l -5.8299,-5.8701 z"
+ id="rect20024"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="csscc" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#use16764-2"
+ id="use20043"
+ transform="matrix(-1,0,0,1,8935,0)"
+ width="5033"
+ height="1085" />
+ <g
+ style="display:inline"
+ id="g26393"
+ transform="translate(2.5e-6,1.00507e-5)">
+ <g
+ id="g25236"
+ style="fill:#00a0fc;fill-opacity:1;display:inline">
+ <rect
+ y="-816.63788"
+ x="215.00003"
+ height="2.0000803"
+ width="7.9999743"
+ id="rect25238"
+ style="color:#000000;fill:#00a0fc;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ y="-824.63788"
+ x="215.00003"
+ height="2.0000803"
+ width="7.9999743"
+ id="rect25240"
+ style="color:#000000;fill:#00a0fc;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ y="-812.63788"
+ x="215.00003"
+ height="2.0000803"
+ width="23.999573"
+ id="rect25242"
+ style="color:#000000;fill:#00a0fc;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ style="color:#000000;fill:#00a0fc;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect25244"
+ width="17.99968"
+ height="1.9999235"
+ x="215.00003"
+ y="-804.63782" />
+ <rect
+ style="color:#000000;fill:#00a0fc;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect25246"
+ width="7.9999743"
+ height="2.0000803"
+ x="215.00003"
+ y="-820.63788" />
+ <rect
+ style="color:#000000;fill:#00a0fc;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect25248"
+ width="23.999573"
+ height="2.0000803"
+ x="215.00003"
+ y="-808.63788" />
+ </g>
+ <g
+ style="fill:#00a0fc;display:inline"
+ id="g25228">
+ <rect
+ style="color:#000000;fill:#00a0fc;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect25230"
+ width="13.999608"
+ height="10.000088"
+ x="225"
+ y="-824.63788" />
+ <path
+ sodipodi:nodetypes="cccccccc"
+ id="path25234"
+ d="m 233,-817.6378 -3.5,-4.5 -3.5,5.5 0,1 11.99963,0 0,-1 -2.49963,-3 -2.5,2 z"
+ style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible"
+ inkscape:connector-curvature="0" />
+ </g>
+ </g>
+ <use
+ style="display:inline"
+ x="0"
+ y="0"
+ xlink:href="#g26393"
+ id="use26405"
+ transform="translate(1571,0)"
+ width="5033"
+ height="1085" />
+ <g
+ style="display:inline"
+ id="g28858"
+ transform="translate(2.5e-6,1.00507e-5)">
+ <rect
+ style="color:#000000;fill:#106802;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect7430"
+ width="22"
+ height="20.999966"
+ x="476"
+ y="-824.63782" />
+ <g
+ transform="translate(0,53)"
+ id="g7722"
+ style="fill:#2cee0e">
+ <rect
+ style="color:#000000;fill:#2cee0e;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect7724"
+ width="22"
+ height="1"
+ x="476"
+ y="-877.63782" />
+ <rect
+ transform="matrix(0,-1,1,0,0,0)"
+ y="476"
+ x="856.63782"
+ height="1"
+ width="21.000053"
+ id="rect7726"
+ style="color:#000000;fill:#2cee0e;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ style="color:#000000;fill:#2cee0e;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect7728"
+ width="21.000053"
+ height="1"
+ x="856.63782"
+ y="483"
+ transform="matrix(0,-1,1,0,0,0)" />
+ <rect
+ transform="matrix(0,-1,1,0,0,0)"
+ y="490"
+ x="856.63782"
+ height="1"
+ width="21.000164"
+ id="rect7730"
+ style="color:#000000;fill:#2cee0e;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ y="-873.63782"
+ x="476"
+ height="1"
+ width="22"
+ id="rect7732"
+ style="color:#000000;fill:#2cee0e;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ style="color:#000000;fill:#2cee0e;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect7734"
+ width="22"
+ height="1"
+ x="476"
+ y="-869.63782" />
+ <rect
+ y="-865.63782"
+ x="476"
+ height="1"
+ width="21.999998"
+ id="rect7736"
+ style="color:#000000;fill:#2cee0e;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ y="-861.63782"
+ x="476"
+ height="1"
+ width="22"
+ id="rect7740"
+ style="color:#000000;fill:#2cee0e;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ style="color:#000000;fill:#2cee0e;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect7742"
+ width="22"
+ height="1"
+ x="476"
+ y="-857.63782" />
+ <rect
+ style="color:#000000;fill:#2cee0e;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect7744"
+ width="21.000164"
+ height="1"
+ x="856.63782"
+ y="497"
+ transform="matrix(0,-1,1,0,0,0)" />
+ </g>
+ <rect
+ y="-813.63788"
+ x="488"
+ height="11"
+ width="12"
+ id="rect7788"
+ style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ y="-810.63782"
+ x="490"
+ height="6.9999485"
+ width="9"
+ id="rect7790"
+ style="color:#000000;fill:#cccccc;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ style="color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect7792"
+ width="10"
+ height="9"
+ x="489"
+ y="-812.63782" />
+ <rect
+ y="-809.63782"
+ x="490"
+ height="5.999897"
+ width="2"
+ id="rect7794"
+ style="color:#000000;fill:#00a0fc;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ style="color:#000000;fill:#fc5c00;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect7796"
+ width="2"
+ height="7.999908"
+ x="493"
+ y="-811.63782" />
+ <rect
+ y="-807.63782"
+ x="496"
+ height="3.9999652"
+ width="2"
+ id="rect7798"
+ style="color:#000000;fill:#ffd74c;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ </g>
+ <path
+ sodipodi:type="arc"
+ style="color:#000000;fill:url(#linearGradient16245-6) #000000;fill-opacity:1;fill-rule:nonzero;stroke:#8e03a3;stroke-width:1.78059006;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="path16235"
+ sodipodi:cx="519.6875"
+ sodipodi:cy="730.3125"
+ sodipodi:rx="22.4375"
+ sodipodi:ry="5.6875"
+ d="m 542.125,730.3125 a 22.4375,5.6875 0 1 1 -44.875,0 22.4375,5.6875 0 1 1 44.875,0 z"
+ transform="matrix(0.512535,0,0,0.615385,1004.64,-1266.06)" />
+ <path
+ style="color:#000000;fill:#530260;fill-opacity:1;fill-rule:nonzero;stroke:#e327ff;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible"
+ d="m 1259.5,-813.63779 0,6 c 0,0 0,0.338 0,0.5 0,1.933 5.1487,4 11.5,4 6.3513,0 11.5,-2.067 11.5,-4 l 0,-0.5 0,-6 -23,0 z"
+ id="path16237"
+ sodipodi:nodetypes="cccscccc"
+ inkscape:connector-curvature="0" />
+ <g
+ style="display:inline"
+ id="g16239"
+ transform="translate(870,53)">
+ <path
+ style="color:#000000;fill:#530260;fill-opacity:1;fill-rule:nonzero;stroke:#e327ff;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible"
+ d="m 389.5,-873.1378 0,6 c 0,0 0,0.338 0,0.5 0,1.933 5.14873,3.5 11.5,3.5 6.35127,0 11.5,-1.567 11.5,-3.5 l 0,-0.5 0,-6 -23,0 z"
+ id="path16241"
+ sodipodi:nodetypes="cccscccc"
+ inkscape:connector-curvature="0" />
+ <path
+ sodipodi:type="arc"
+ style="color:#000000;fill:#530260;fill-opacity:1;fill-rule:nonzero;stroke:#e327ff;stroke-width:1.78059006;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="path16243"
+ sodipodi:cx="519.6875"
+ sodipodi:cy="730.3125"
+ sodipodi:rx="22.4375"
+ sodipodi:ry="5.6875"
+ d="m 542.125,730.3125 a 22.4375,5.6875 0 1 1 -44.875,0 22.4375,5.6875 0 1 1 44.875,0 z"
+ transform="matrix(0.512535,0,0,0.615385,134.642,-1323.06)" />
+ </g>
+ <rect
+ ry="1.9999999"
+ rx="1.9999996"
+ y="-823.63782"
+ x="737"
+ height="19.99999"
+ width="24.000011"
+ id="rect7582"
+ style="color:#000000;fill:#fc5c00;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ ry="0.99999988"
+ rx="0.99999994"
+ style="color:#000000;fill:#622502;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect7585"
+ width="22"
+ height="18.000017"
+ x="738"
+ y="-822.63782" />
+ <rect
+ y="-820.63782"
+ x="740"
+ height="2"
+ width="18"
+ id="rect7590"
+ style="color:#000000;fill:#fc5c00;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ style="color:#000000;fill:#fc5c00;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect7592"
+ width="14"
+ height="2"
+ x="744"
+ y="-816.63782" />
+ <rect
+ y="-812.63782"
+ x="744"
+ height="2"
+ width="14"
+ id="rect7596"
+ style="color:#000000;fill:#fc5c00;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ style="color:#000000;fill:#fc5c00;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect7600"
+ width="14"
+ height="2"
+ x="744"
+ y="-808.63782" />
+ <rect
+ style="color:#000000;fill:#333333;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect8605"
+ width="24"
+ height="22.000021"
+ x="3618"
+ y="-824.63782" />
+ <rect
+ y="-803.63782"
+ x="3618"
+ height="1"
+ width="24"
+ id="rect8607"
+ style="color:#000000;fill:#808080;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ style="color:#000000;fill:#808080;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect8609"
+ width="24"
+ height="1"
+ x="3618"
+ y="-824.63782" />
+ <rect
+ y="-3619"
+ x="-824.63782"
+ height="1"
+ width="22"
+ id="rect8611"
+ style="color:#000000;fill:#808080;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ transform="matrix(0,1,-1,0,0,0)" />
+ <rect
+ transform="matrix(0,1,-1,0,0,0)"
+ style="color:#000000;fill:#808080;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect8613"
+ width="22"
+ height="1"
+ x="-824.63782"
+ y="-3642" />
+ <path
+ sodipodi:nodetypes="cc"
+ id="path8619"
+ d="m 3637,-814.63779 -7,7"
+ style="fill:none;stroke:#ffffff;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:#ffffff;stroke:#ffffff;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline"
+ d="m 3630,-814.63779 7,7"
+ id="path8621"
+ sodipodi:nodetypes="cc"
+ inkscape:connector-curvature="0" />
+ <g
+ style="font-size:8px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;fill:#ffffff;fill-opacity:1;stroke:none;display:inline;font-family:Vegur"
+ id="g8641"
+ transform="matrix(1.50411,0,0,1.50411,-1963.9,-1861.17)">
+ <path
+ d="m 3725.0541,691.79021 0,1.99453 -0.9972,0 0,-0.93078 -6.1831,0 -1.3962,8.24407 -1.5956,0 -1.3297,-4.18852 -0.7979,0 0,-1.13024 1.6622,2e-5 1.1634,3.32421 1.1635,-7.3133"
+ style="fill:#ffffff;fill-opacity:1;font-family:Symbol"
+ id="path8643"
+ sodipodi:nodetypes="ccccccccccccc"
+ inkscape:connector-curvature="0" />
+ </g>
+ <rect
+ y="-816.63782"
+ x="740"
+ height="2"
+ width="2"
+ id="rect8674"
+ style="color:#000000;fill:#fc5c00;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ style="color:#000000;fill:#fc5c00;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect8676"
+ width="2"
+ height="2"
+ x="740"
+ y="-812.63782" />
+ <rect
+ y="-808.63782"
+ x="740"
+ height="2"
+ width="2"
+ id="rect8678"
+ style="color:#000000;fill:#fc5c00;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect7582"
+ id="use10375"
+ transform="translate(1573,0)"
+ width="5033"
+ height="1085"
+ style="opacity:0.75;display:inline" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect7585"
+ id="use10377"
+ transform="translate(1573,0)"
+ width="5033"
+ height="1085"
+ style="opacity:0.75;display:inline" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect7590"
+ id="use10379"
+ transform="translate(1573,0)"
+ width="5033"
+ height="1085"
+ style="opacity:0.75;display:inline" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect7592"
+ id="use10381"
+ transform="translate(1573,0)"
+ width="5033"
+ height="1085"
+ style="opacity:0.75;display:inline" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect7596"
+ id="use10383"
+ transform="translate(1573,0)"
+ width="5033"
+ height="1085"
+ style="opacity:0.75;display:inline" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect7600"
+ id="use10385"
+ transform="translate(1573,0)"
+ width="5033"
+ height="1085"
+ style="opacity:0.75;display:inline" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect8674"
+ id="use10395"
+ transform="translate(1573,0)"
+ width="5033"
+ height="1085"
+ style="opacity:0.75;display:inline" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect8676"
+ id="use10397"
+ transform="translate(1573,0)"
+ width="5033"
+ height="1085"
+ style="opacity:0.75;display:inline" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect8678"
+ id="use10399"
+ transform="translate(1573,0)"
+ width="5033"
+ height="1085"
+ style="opacity:0.75;display:inline" />
+ <g
+ style="display:inline"
+ id="g12727"
+ transform="translate(2.5e-6,1.00507e-5)">
+ <path
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="path12513.png"
+ transform="matrix(0.424242,0,0,0.424242,502.985,-1103.71)"
+ d="m 1201,675.5 a 16.5,16.5 0 1 1 -33,0 16.5,16.5 0 1 1 33,0 z"
+ sodipodi:ry="16.5"
+ sodipodi:rx="16.5"
+ sodipodi:cy="675.5"
+ sodipodi:cx="1184.5"
+ id="path12677"
+ style="color:#000000;fill:#622502;fill-opacity:1;fill-rule:nonzero;stroke:#fc5c00;stroke-width:2.35714006;marker:none;visibility:visible;display:inline;overflow:visible"
+ sodipodi:type="arc" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="path12513.png"
+ transform="scale(1,-1)"
+ y="809.13782"
+ x="1010.5"
+ height="11.000001"
+ width="11.000001"
+ id="rect12681"
+ style="color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#876900;stroke-width:0.99999899;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <path
+ style="color:#000000;fill:#876900;fill-opacity:1;fill-rule:nonzero;stroke:#ffd74c;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible"
+ d="m 1015.5,-804.1378 -15.99999,0 7.99999,-13 8,13 z"
+ id="path12685"
+ sodipodi:nodetypes="cccc"
+ inkscape:connector-curvature="0" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="path12513.png"
+ y="-805.13782"
+ x="998.5"
+ height="2"
+ width="2"
+ id="rect12687"
+ style="color:#000000;fill:#2cee0e;fill-opacity:1;fill-rule:nonzero;stroke:#2cee0e;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ style="color:#000000;fill:#2cee0e;fill-opacity:1;fill-rule:nonzero;stroke:#2cee0e;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect12691"
+ width="2"
+ height="2"
+ x="1014.5"
+ y="-805.13782"
+ inkscape:export-filename="path12513.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="path12513.png"
+ y="-818.13782"
+ x="1006.5"
+ height="2"
+ width="2"
+ id="rect12693"
+ style="color:#000000;fill:#2cee0e;fill-opacity:1;fill-rule:nonzero;stroke:#2cee0e;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible" />
+ </g>
+ <use
+ x="0"
+ y="0"
+ xlink:href="#g12727"
+ id="use12781"
+ transform="translate(1571,0)"
+ width="5033"
+ height="1085"
+ style="opacity:0.75;display:inline" />
+ <use
+ style="display:inline"
+ x="0"
+ y="0"
+ xlink:href="#g28858"
+ id="use28911"
+ transform="translate(1571,0)"
+ width="5033"
+ height="1085" />
+ <rect
+ style="color:#000000;fill:#808080;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect22807"
+ width="23"
+ height="21.999905"
+ x="3879"
+ y="-824.63782" />
+ <rect
+ y="-823.63782"
+ x="3880"
+ height="19.999949"
+ width="21"
+ id="rect22809"
+ style="color:#000000;fill:#333333;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <path
+ id="path22813"
+ d="m 3880.6572,-806.59509 21.6856,0 c 0.3641,0 0.6572,0.446 0.6572,1 l 0,0.9572 c 0,0.554 -0.2931,1 -0.6572,1 l -21.6856,0 c -0.3641,0 -0.6572,-0.446 -0.6572,-1 l 0,-0.9572 c 0,-0.554 0.2931,-1 0.6572,-1 z"
+ style="opacity:0.5;color:#000000;fill:url(#radialGradient20814) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ inkscape:connector-curvature="0" />
+ <rect
+ style="color:#000000;fill:#00a0fc;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect22825"
+ width="4"
+ height="12.999887"
+ x="3881"
+ y="-817.63782" />
+ <rect
+ y="-822.63782"
+ x="3886"
+ height="17.999849"
+ width="4"
+ id="rect22829"
+ style="color:#000000;fill:#fc5c00;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ style="color:#000000;fill:#ffd74c;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect22833"
+ width="4"
+ height="7.9998188"
+ x="3891"
+ y="-812.63782" />
+ <rect
+ y="-815.63782"
+ x="3896"
+ height="11.00001"
+ width="4"
+ id="rect22837"
+ style="color:#000000;fill:#2cee0e;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <path
+ style="color:#000000;fill:#2cee0e;fill-opacity:1;fill-rule:nonzero;stroke:#106802;stroke-width:1;stroke-linejoin:round;marker:none;visibility:visible;display:inline;overflow:visible"
+ d="m 4407.5,-813.13779 5,0 0,-10.00006 11,0 0,10.00006 5.0001,0 -10.5,9.3847 -10.5001,-9.3847 z"
+ id="path23331"
+ sodipodi:nodetypes="cccccccc"
+ inkscape:connector-curvature="0" />
+ <rect
+ style="opacity:0.5;color:#000000;fill:url(#linearGradient20806) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect24749"
+ width="11"
+ height="9.0000172"
+ x="3357"
+ y="-824.63782" />
+ <rect
+ y="-824.63782"
+ x="3370"
+ height="9.0000172"
+ width="11"
+ id="rect24751"
+ style="opacity:0.5;color:#000000;fill:url(#linearGradient20803) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ style="opacity:0.5;color:#000000;fill:url(#linearGradient20800) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect24753"
+ width="11"
+ height="9.0000172"
+ x="3370"
+ y="-813.63782" />
+ <rect
+ y="-813.63782"
+ x="3357"
+ height="9.0000172"
+ width="11"
+ id="rect24755"
+ style="opacity:0.5;color:#000000;fill:url(#linearGradient20797) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <g
+ style="display:inline"
+ transform="translate(38,53)"
+ id="g24757">
+ <g
+ id="g24759"
+ style="fill:url(#linearGradient24959-3) #000000;fill-opacity:1;display:inline"
+ transform="matrix(1.99996,0,0,2,3088,-2842.36)">
+ <rect
+ y="983.36108"
+ x="115.50111"
+ height="0.50001603"
+ width="1.5000296"
+ id="rect24761"
+ style="color:#000000;fill:url(#linearGradient24949-52) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ y="982.36108"
+ x="115.50111"
+ height="0.50001603"
+ width="1.50002"
+ id="rect24763"
+ style="color:#000000;fill:url(#linearGradient24951-0) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ y="984.36108"
+ x="115.50111"
+ height="0.50001603"
+ width="1.5000296"
+ id="rect24765"
+ style="color:#000000;fill:url(#linearGradient24953-1) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ style="color:#000000;fill:url(#linearGradient24955-9) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect24767"
+ width="5.500103"
+ height="0.50001603"
+ x="115.50111"
+ y="985.36108" />
+ <rect
+ y="986.36108"
+ x="115.50111"
+ height="0.50001603"
+ width="4.0000744"
+ id="rect24769"
+ style="color:#000000;fill:url(#linearGradient24957-03) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ </g>
+ <g
+ id="g24771"
+ transform="matrix(0.999981,0,0,1,3105,-97)">
+ <rect
+ style="color:#000000;fill:url(#linearGradient24961-1) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect24773"
+ width="7.0000806"
+ height="5.0000572"
+ x="217.99992"
+ y="-780.63782" />
+ <rect
+ y="-779.63776"
+ x="218.99994"
+ height="2.9999964"
+ width="5.000062"
+ id="rect24775"
+ style="color:#000000;fill:url(#linearGradient24963-0) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <path
+ sodipodi:nodetypes="cccccc"
+ id="path24777"
+ d="m 220.99994,-779.13776 -2,2 0,0.5 4.99996,0 0,-0.5 -2.99996,-2 z"
+ style="color:#000000;fill:url(#linearGradient24965-5) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible"
+ inkscape:connector-curvature="0" />
+ </g>
+ </g>
+ <g
+ style="display:inline"
+ id="g24779"
+ transform="translate(51,53)">
+ <g
+ transform="matrix(1.99996,0,0,2,3088,-2842.36)"
+ style="fill:url(#linearGradient24977-7) #000000;fill-opacity:1;display:inline"
+ id="g24781">
+ <rect
+ style="color:#000000;fill:url(#linearGradient24967-0) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect24783"
+ width="1.5000296"
+ height="0.50001603"
+ x="115.50111"
+ y="983.36108" />
+ <rect
+ style="color:#000000;fill:url(#linearGradient24969-1) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect24785"
+ width="1.50002"
+ height="0.50001603"
+ x="115.50111"
+ y="982.36108" />
+ <rect
+ style="color:#000000;fill:url(#linearGradient24971-7) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect24787"
+ width="1.5000296"
+ height="0.50001603"
+ x="115.50111"
+ y="984.36108" />
+ <rect
+ y="985.36108"
+ x="115.50111"
+ height="0.50001603"
+ width="5.500103"
+ id="rect24789"
+ style="color:#000000;fill:url(#linearGradient24973-0) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ style="color:#000000;fill:url(#linearGradient24975-9) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect24791"
+ width="4.0000744"
+ height="0.50001603"
+ x="115.50111"
+ y="986.36108" />
+ </g>
+ <g
+ transform="matrix(0.999981,0,0,1,3105,-97)"
+ id="g24793">
+ <rect
+ y="-780.63782"
+ x="217.99992"
+ height="5.0000572"
+ width="7.0000806"
+ id="rect24795"
+ style="color:#000000;fill:url(#linearGradient24979-4) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ style="color:#000000;fill:url(#linearGradient24981-5) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect24797"
+ width="5.000062"
+ height="2.9999964"
+ x="218.99994"
+ y="-779.63776" />
+ <path
+ style="color:#000000;fill:url(#linearGradient24983-4) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible"
+ d="m 220.99994,-779.13776 -2,2 0,0.5 4.99996,0 0,-0.5 -2.99996,-2 z"
+ id="path24799"
+ sodipodi:nodetypes="cccccc"
+ inkscape:connector-curvature="0" />
+ </g>
+ </g>
+ <g
+ style="display:inline"
+ transform="translate(51,64)"
+ id="g24801">
+ <g
+ id="g24803"
+ style="fill:url(#linearGradient24995-1) #000000;fill-opacity:1;display:inline"
+ transform="matrix(1.99996,0,0,2,3088,-2842.36)">
+ <rect
+ y="983.36108"
+ x="115.50111"
+ height="0.50001603"
+ width="1.5000296"
+ id="rect24805"
+ style="color:#000000;fill:url(#linearGradient24985-73) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ y="982.36108"
+ x="115.50111"
+ height="0.50001603"
+ width="1.50002"
+ id="rect24807"
+ style="color:#000000;fill:url(#linearGradient24987-1) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ y="984.36108"
+ x="115.50111"
+ height="0.50001603"
+ width="1.5000296"
+ id="rect24809"
+ style="color:#000000;fill:url(#linearGradient24989-2) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ style="color:#000000;fill:url(#linearGradient24991-63) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect24811"
+ width="5.500103"
+ height="0.50001603"
+ x="115.50111"
+ y="985.36108" />
+ <rect
+ y="986.36108"
+ x="115.50111"
+ height="0.50001603"
+ width="4.0000744"
+ id="rect24813"
+ style="color:#000000;fill:url(#linearGradient24993-2) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ </g>
+ <g
+ id="g24815"
+ transform="matrix(0.999981,0,0,1,3105,-97)">
+ <rect
+ style="color:#000000;fill:url(#linearGradient24997-47) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect24817"
+ width="7.0000806"
+ height="5.0000572"
+ x="217.99992"
+ y="-780.63782" />
+ <rect
+ y="-779.63776"
+ x="218.99994"
+ height="2.9999964"
+ width="5.000062"
+ id="rect24819"
+ style="color:#000000;fill:url(#linearGradient24999-2) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <path
+ sodipodi:nodetypes="cccccc"
+ id="path24821"
+ d="m 220.99994,-779.13776 -2,2 0,0.5 4.99996,0 0,-0.5 -2.99996,-2 z"
+ style="color:#000000;fill:url(#linearGradient25001-7) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible"
+ inkscape:connector-curvature="0" />
+ </g>
+ </g>
+ <g
+ style="display:inline"
+ id="g24823"
+ transform="translate(38,64)">
+ <g
+ transform="matrix(1.99996,0,0,2,3088,-2842.36)"
+ style="fill:url(#linearGradient25013-7) #000000;fill-opacity:1;display:inline"
+ id="g24825">
+ <rect
+ style="color:#000000;fill:url(#linearGradient25003-4) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect24827"
+ width="1.5000296"
+ height="0.50001603"
+ x="115.50111"
+ y="983.36108" />
+ <rect
+ style="color:#000000;fill:url(#linearGradient25005-0) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect24829"
+ width="1.50002"
+ height="0.50001603"
+ x="115.50111"
+ y="982.36108" />
+ <rect
+ style="color:#000000;fill:url(#linearGradient25007-8) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect24831"
+ width="1.5000296"
+ height="0.50001603"
+ x="115.50111"
+ y="984.36108" />
+ <rect
+ y="985.36108"
+ x="115.50111"
+ height="0.50001603"
+ width="5.500103"
+ id="rect24833"
+ style="color:#000000;fill:url(#linearGradient25009-4) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ style="color:#000000;fill:url(#linearGradient25011-5) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect24835"
+ width="4.0000744"
+ height="0.50001603"
+ x="115.50111"
+ y="986.36108" />
+ </g>
+ <g
+ transform="matrix(0.999981,0,0,1,3105,-97)"
+ id="g24837">
+ <rect
+ y="-780.63782"
+ x="217.99992"
+ height="5.0000572"
+ width="7.0000806"
+ id="rect24839"
+ style="color:#000000;fill:url(#linearGradient25015-1) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ style="color:#000000;fill:url(#linearGradient25017-7) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect24841"
+ width="5.000062"
+ height="2.9999964"
+ x="218.99994"
+ y="-779.63776" />
+ <path
+ style="color:#000000;fill:url(#linearGradient25019-9) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible"
+ d="m 220.99994,-779.13776 -2,2 0,0.5 4.99996,0 0,-0.5 -2.99996,-2 z"
+ id="path24843"
+ sodipodi:nodetypes="cccccc"
+ inkscape:connector-curvature="0" />
+ </g>
+ </g>
+ <rect
+ y="-824.63782"
+ x="3357"
+ height="9.0000172"
+ width="11"
+ id="rect24845"
+ style="color:#000000;fill:#023f62;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ style="color:#000000;fill:#023f62;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect24847"
+ width="11"
+ height="9.0000172"
+ x="3370"
+ y="-824.63782" />
+ <rect
+ y="-813.63782"
+ x="3370"
+ height="9.0000172"
+ width="11"
+ id="rect24849"
+ style="color:#000000;fill:#023f62;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ style="color:#000000;fill:#023f62;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect24851"
+ width="11"
+ height="9.0000172"
+ x="3357"
+ y="-813.63782" />
+ <g
+ style="display:inline"
+ id="g25101"
+ transform="translate(38,53)">
+ <g
+ transform="matrix(1.99996,0,0,2,3088,-2842.36)"
+ style="fill:#00a0fc;fill-opacity:1;display:inline"
+ id="g25103">
+ <rect
+ style="color:#000000;fill:#00a0fc;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect25105"
+ width="1.5000296"
+ height="0.50001603"
+ x="115.50111"
+ y="983.36108" />
+ <rect
+ style="color:#000000;fill:#00a0fc;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect25107"
+ width="1.50002"
+ height="0.50001603"
+ x="115.50111"
+ y="982.36108" />
+ <rect
+ style="color:#000000;fill:#00a0fc;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect25109"
+ width="1.5000296"
+ height="0.50001603"
+ x="115.50111"
+ y="984.36108" />
+ <rect
+ y="985.36108"
+ x="115.50111"
+ height="0.50001603"
+ width="5.500103"
+ id="rect25111"
+ style="color:#000000;fill:#00a0fc;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ style="color:#000000;fill:#00a0fc;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect25113"
+ width="4.0000744"
+ height="0.50001603"
+ x="115.50111"
+ y="986.36108" />
+ </g>
+ <g
+ style="fill:#00a0fc"
+ transform="matrix(0.999981,0,0,1,3105,-97)"
+ id="g25115">
+ <rect
+ y="-780.63782"
+ x="217.99992"
+ height="5.0000572"
+ width="7.0000806"
+ id="rect25117"
+ style="color:#000000;fill:#00a0fc;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible" />
+ </g>
+ <g
+ id="g25155"
+ transform="matrix(0.714281,0,0,0.599992,3168.29,-408.261)"
+ style="fill:#023f62">
+ <rect
+ style="color:#000000;fill:#023f62;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect25157"
+ width="7.0000806"
+ height="5.0000572"
+ x="217.99992"
+ y="-780.63782" />
+ </g>
+ </g>
+ <g
+ style="display:inline"
+ transform="translate(51,53)"
+ id="g25159">
+ <g
+ id="g25161"
+ style="fill:#00a0fc;fill-opacity:1;display:inline"
+ transform="matrix(1.99996,0,0,2,3088,-2842.36)">
+ <rect
+ y="983.36108"
+ x="115.50111"
+ height="0.50001603"
+ width="1.5000296"
+ id="rect25163"
+ style="color:#000000;fill:#00a0fc;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ y="982.36108"
+ x="115.50111"
+ height="0.50001603"
+ width="1.50002"
+ id="rect25165"
+ style="color:#000000;fill:#00a0fc;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ y="984.36108"
+ x="115.50111"
+ height="0.50001603"
+ width="1.5000296"
+ id="rect25167"
+ style="color:#000000;fill:#00a0fc;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ style="color:#000000;fill:#00a0fc;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect25169"
+ width="5.500103"
+ height="0.50001603"
+ x="115.50111"
+ y="985.36108" />
+ <rect
+ y="986.36108"
+ x="115.50111"
+ height="0.50001603"
+ width="4.0000744"
+ id="rect25171"
+ style="color:#000000;fill:#00a0fc;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ </g>
+ <g
+ id="g25173"
+ transform="matrix(0.999981,0,0,1,3105,-97)"
+ style="fill:#00a0fc">
+ <rect
+ style="color:#000000;fill:#00a0fc;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect25175"
+ width="7.0000806"
+ height="5.0000572"
+ x="217.99992"
+ y="-780.63782" />
+ </g>
+ <g
+ style="fill:#023f62"
+ transform="matrix(0.714281,0,0,0.599992,3168.29,-408.261)"
+ id="g25177">
+ <rect
+ y="-780.63782"
+ x="217.99992"
+ height="5.0000572"
+ width="7.0000806"
+ id="rect25179"
+ style="color:#000000;fill:#023f62;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible" />
+ </g>
+ </g>
+ <g
+ style="display:inline"
+ id="g25181"
+ transform="translate(51,64)">
+ <g
+ transform="matrix(1.99996,0,0,2,3088,-2842.36)"
+ style="fill:#00a0fc;fill-opacity:1;display:inline"
+ id="g25183">
+ <rect
+ style="color:#000000;fill:#00a0fc;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect25185"
+ width="1.5000296"
+ height="0.50001603"
+ x="115.50111"
+ y="983.36108" />
+ <rect
+ style="color:#000000;fill:#00a0fc;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect25187"
+ width="1.50002"
+ height="0.50001603"
+ x="115.50111"
+ y="982.36108" />
+ <rect
+ style="color:#000000;fill:#00a0fc;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect25189"
+ width="1.5000296"
+ height="0.50001603"
+ x="115.50111"
+ y="984.36108" />
+ <rect
+ y="985.36108"
+ x="115.50111"
+ height="0.50001603"
+ width="5.500103"
+ id="rect25191"
+ style="color:#000000;fill:#00a0fc;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ style="color:#000000;fill:#00a0fc;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect25193"
+ width="4.0000744"
+ height="0.50001603"
+ x="115.50111"
+ y="986.36108" />
+ </g>
+ <g
+ style="fill:#00a0fc"
+ transform="matrix(0.999981,0,0,1,3105,-97)"
+ id="g25195">
+ <rect
+ y="-780.63782"
+ x="217.99992"
+ height="5.0000572"
+ width="7.0000806"
+ id="rect25197"
+ style="color:#000000;fill:#00a0fc;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible" />
+ </g>
+ <g
+ id="g25199"
+ transform="matrix(0.714281,0,0,0.599992,3168.29,-408.261)"
+ style="fill:#023f62">
+ <rect
+ style="color:#000000;fill:#023f62;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect25201"
+ width="7.0000806"
+ height="5.0000572"
+ x="217.99992"
+ y="-780.63782" />
+ </g>
+ </g>
+ <g
+ style="display:inline"
+ transform="translate(38,64)"
+ id="g25203">
+ <g
+ id="g25205"
+ style="fill:#00a0fc;fill-opacity:1;display:inline"
+ transform="matrix(1.99996,0,0,2,3088,-2842.36)">
+ <rect
+ y="983.36108"
+ x="115.50111"
+ height="0.50001603"
+ width="1.5000296"
+ id="rect25207"
+ style="color:#000000;fill:#00a0fc;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ y="982.36108"
+ x="115.50111"
+ height="0.50001603"
+ width="1.50002"
+ id="rect25209"
+ style="color:#000000;fill:#00a0fc;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ y="984.36108"
+ x="115.50111"
+ height="0.50001603"
+ width="1.5000296"
+ id="rect25211"
+ style="color:#000000;fill:#00a0fc;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ style="color:#000000;fill:#00a0fc;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect25213"
+ width="5.500103"
+ height="0.50001603"
+ x="115.50111"
+ y="985.36108" />
+ <rect
+ y="986.36108"
+ x="115.50111"
+ height="0.50001603"
+ width="4.0000744"
+ id="rect25215"
+ style="color:#000000;fill:#00a0fc;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ </g>
+ <g
+ id="g25217"
+ transform="matrix(0.999981,0,0,1,3105,-97)"
+ style="fill:#00a0fc">
+ <rect
+ style="color:#000000;fill:#00a0fc;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect25219"
+ width="7.0000806"
+ height="5.0000572"
+ x="217.99992"
+ y="-780.63782" />
+ </g>
+ <g
+ style="fill:#023f62"
+ transform="matrix(0.714281,0,0,0.599992,3168.29,-408.261)"
+ id="g25221">
+ <rect
+ y="-780.63782"
+ x="217.99992"
+ height="5.0000572"
+ width="7.0000806"
+ id="rect25223"
+ style="color:#000000;fill:#023f62;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible" />
+ </g>
+ </g>
+ <g
+ style="display:inline"
+ id="g11504"
+ transform="translate(2.5e-6,1.00507e-5)">
+ <path
+ id="rect7786"
+ d="m 1520,-824.6378 0,2 24,0 0,-2 -24,0 z m 0,4 0,2 24,0 0,-2 -24,0 z m 0,4 0,2 11.0312,0 c 0.6918,-0.81226 1.5197,-1.49429 2.4688,-2 l -13.5,0 z m 21.5,0 c 0.9491,0.50571 1.777,1.18774 2.4688,2 0,0.005 0.027,-0.005 0.031,0 l 0,-2 -2.5,0 z m -21.5,4 0,2 9.1562,0 c 0.1245,-0.69988 0.3092,-1.3706 0.5938,-2 l -9.75,0 z m 0,4 0,2 9.375,0 c -0.1958,-0.6375 -0.3036,-1.30838 -0.3438,-2 l -9.0312,0 z m 0,4 0,2 12.0312,0 c -0.6785,-0.57183 -1.2776,-1.24435 -1.75,-2 l -10.2812,0 z"
+ style="color:#000000;fill:#00a0fc;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ inkscape:connector-curvature="0" />
+ <path
+ sodipodi:type="arc"
+ style="color:#000000;fill:#00a0fc;fill-opacity:1;fill-rule:nonzero;stroke:#00a0fc;stroke-width:1.08333004;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="path10346"
+ sodipodi:cx="3231.5"
+ sodipodi:cy="891.5"
+ sodipodi:rx="6.5"
+ sodipodi:ry="6.5"
+ d="m 3238,891.5 a 6.5,6.5 0 1 1 -13,0 6.5,6.5 0 1 1 13,0 z"
+ transform="matrix(0.923077,0,0,0.923077,-1445.42,-1632.06)" />
+ <g
+ transform="translate(-1571,53)"
+ id="g10332"
+ clip-path="url(#clipPath10326-0)"
+ style="stroke:#ffffff">
+ <path
+ transform="matrix(0.45376,0,0,0.45376,1718.49,-369.973)"
+ clip-path="none"
+ sodipodi:nodetypes="cz"
+ id="path10334"
+ d="m 3068.184,-1099.5366 c -15.8287,5.5755 -16.1955,20.8148 -12.4084,27.5262"
+ style="fill:none;stroke:#ffffff;stroke-width:2.20380998px;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:1"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:none;stroke:#ffffff;stroke-width:1px;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 3116,-861.6378 c -3.5797,-6.72117 -10.4412,-5.8475 -13.1941,-3.69131"
+ id="path10336"
+ sodipodi:nodetypes="cz"
+ clip-path="none"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:none;stroke:#ffffff;stroke-width:1px;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 3104.6248,-857.04228 c 1.6682,-7.43001 8.5163,-8.40743 11.7423,-7.05871"
+ id="path10338"
+ sodipodi:nodetypes="cz"
+ clip-path="none"
+ inkscape:connector-curvature="0" />
+ <path
+ clip-path="none"
+ sodipodi:nodetypes="cz"
+ id="path10340"
+ d="m 3108,-854.37352 c 0.6679,-5.78028 5.5626,-7.04501 8,-6.26428"
+ style="fill:none;stroke:#ffffff;stroke-width:1px;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:1"
+ inkscape:connector-curvature="0" />
+ <path
+ clip-path="none"
+ sodipodi:nodetypes="cz"
+ id="path10342"
+ d="m 3111,-855.6378 c 1.9186,-7.36934 -3.7212,-11.37387 -7.2069,-11.65209"
+ style="fill:none;stroke:#ffffff;stroke-width:1px;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:1"
+ inkscape:connector-curvature="0" />
+ <path
+ clip-path="none"
+ sodipodi:nodetypes="cz"
+ id="path10344"
+ d="m 3101.3791,-861.1138 c 4.6342,6.0426 11.2593,4.05476 13.6209,1.476"
+ style="fill:none;stroke:#ffffff;stroke-width:1px;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:1"
+ inkscape:connector-curvature="0" />
+ </g>
+ </g>
+ <rect
+ y="-822.63782"
+ x="4659"
+ height="9.0000172"
+ width="13.999931"
+ id="rect10690"
+ style="color:#000000;fill:#cccccc;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ y="-811.13782"
+ x="4655.5"
+ height="8"
+ width="26"
+ id="rect10692"
+ style="color:#000000;fill:#333333;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ transform="matrix(0,1,-1,0,0,0)"
+ y="-4680"
+ x="-809.63782"
+ height="3"
+ width="2.0000174"
+ id="rect10694"
+ style="color:#000000;fill:#2cee0e;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <path
+ style="color:#000000;fill:#333333;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible"
+ d="m 4657.5,-816.13777 22,0 2,4.99998 -26,0 2,-4.99998 z"
+ id="path10698"
+ sodipodi:nodetypes="ccccc"
+ inkscape:connector-curvature="0" />
+ <rect
+ style="color:#000000;fill:#e6e6e6;fill-opacity:1;fill-rule:nonzero;stroke:#808080;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect10700"
+ width="18"
+ height="11.000017"
+ x="4659.5"
+ y="-825.13782" />
+ <rect
+ y="-824.63782"
+ x="4660"
+ height="11.000055"
+ width="17"
+ id="rect10702"
+ style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <path
+ style="color:#000000;fill:#00a0fc;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ d="m 4661,-822.63779 0,1 15,0 0,-1 -15,0 z m 0,3 0,1 15,0 0,-1 -15,0 z m 0,3 0,1 15,0 0,-1 -15,0 z"
+ id="path10708"
+ sodipodi:nodetypes="ccccccccccccccc"
+ inkscape:connector-curvature="0" />
+ <use
+ style="display:inline"
+ x="0"
+ y="0"
+ xlink:href="#g11504"
+ id="use11554"
+ transform="translate(1571,0)"
+ width="5033"
+ height="1085" />
+ <g
+ transform="matrix(0.184547,0,0,0.354331,-128.064,-1192.49)"
+ id="g7433-9"
+ style="fill:#ffd5d5;display:inline">
+ <rect
+ style="color:#000000;fill:#ffd5d5;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect7435-6"
+ width="135.46666"
+ height="135.46651"
+ x="190"
+ y="987.36218" />
+ </g>
+ <text
+ xml:space="preserve"
+ style="font-size:14.13609982px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;text-anchor:middle;fill:#aa0000;fill-opacity:1;stroke:none;font-family:Sans"
+ x="810.45502"
+ y="-76.012398"
+ id="text7453-6"
+ transform="matrix(0,-1.00972,0.990375,0,0,0)"><tspan
+ sodipodi:role="line"
+ id="tspan7455-5"
+ x="810.45502"
+ y="-76.012398">HC</tspan></text>
+ <rect
+ y="-775.63782"
+ x="4657.999"
+ height="9.0000172"
+ width="13.999931"
+ id="rect10520"
+ style="color:#000000;fill:#cccccc;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ style="opacity:0.5;color:#000000;fill:url(#linearGradient24499) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect24497"
+ width="7"
+ height="6.0000319"
+ x="3352.9988"
+ y="-772.63782" />
+ <rect
+ y="-772.63782"
+ x="3361.9988"
+ height="6.0000319"
+ width="7"
+ id="rect24561"
+ style="opacity:0.5;color:#000000;fill:url(#linearGradient24563) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ style="opacity:0.5;color:#000000;fill:url(#linearGradient24567) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect24565"
+ width="7"
+ height="6.0000172"
+ x="3361.9988"
+ y="-765.63782" />
+ <rect
+ y="-765.63782"
+ x="3352.9988"
+ height="6.0000319"
+ width="7"
+ id="rect24569"
+ style="opacity:0.5;color:#000000;fill:url(#linearGradient24571) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ y="-877.63782"
+ x="3356.9988"
+ height="9.0000172"
+ width="11"
+ id="rect24363"
+ style="opacity:0.5;color:#000000;fill:url(#linearGradient24365) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ style="opacity:0.5;color:#000000;fill:url(#linearGradient24369) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect24367"
+ width="11"
+ height="9.0000172"
+ x="3369.9988"
+ y="-877.63782" />
+ <rect
+ y="-866.63782"
+ x="3369.9988"
+ height="9.0000172"
+ width="11"
+ id="rect24371"
+ style="opacity:0.5;color:#000000;fill:url(#linearGradient24373) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ style="opacity:0.5;color:#000000;fill:url(#linearGradient24377) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect24375"
+ width="11"
+ height="9.0000172"
+ x="3356.9988"
+ y="-866.63782" />
+ <path
+ id="path22931"
+ d="m 4404.3417,-760.63779 11.3142,0 c 0.19,0 0.3429,0.30162 0.3429,0.67628 l 0,0.64734 c 0,0.37466 -0.1529,0.67628 -0.3429,0.67628 l -11.3142,0 c -0.19,0 -0.3429,-0.30162 -0.3429,-0.67628 l 0,-0.64734 c 0,-0.37466 0.1529,-0.67628 0.3429,-0.67628 z"
+ style="opacity:0.6;color:#000000;fill:url(#radialGradient48341) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ inkscape:connector-curvature="0" />
+ <rect
+ style="color:#000000;fill:#333333;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect22609"
+ width="8"
+ height="6.999959"
+ x="3870.9988"
+ y="-678.63782" />
+ <rect
+ y="-699.65063"
+ x="3348.9988"
+ height="7"
+ width="7"
+ id="rect15019"
+ style="color:#000000;fill:#63bbee;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.93699998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <path
+ id="rect14949"
+ d="m 3351.9988,-699.63781 0,3 -3,0 0,1 3,0 0,3 1,0 0,-3 3,0 0,-1 -3,0 0,-3 -1,0 z"
+ style="color:#000000;fill:#023f62;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ inkscape:connector-curvature="0" />
+ <rect
+ style="color:#000000;fill:url(#linearGradient151009) #000000;fill-opacity:1;fill-rule:nonzero;stroke:#808080;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect150997"
+ width="11"
+ height="4"
+ x="4654.499"
+ y="-697.13782" />
+ <rect
+ y="-701.13788"
+ x="4656.499"
+ height="5"
+ width="7"
+ id="rect150999"
+ style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#808080;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ style="color:#000000;fill:#43c330;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect151001"
+ width="0.9999826"
+ height="1"
+ x="-695.63782"
+ y="-4664.999"
+ transform="matrix(0,1,-1,0,0,0)" />
+ <rect
+ transform="matrix(0,1,-1,0,0,0)"
+ y="-4664.999"
+ x="-696.63782"
+ height="1"
+ width="1.0000174"
+ id="rect7952"
+ style="color:#000000;fill:#92e285;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ style="color:#000000;fill:#63bbee;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect7960"
+ width="1"
+ height="4"
+ x="-699.63782"
+ y="-4661.999"
+ transform="matrix(0,1,-1,0,0,0)" />
+ <rect
+ transform="matrix(0,1,-1,0,0,0)"
+ y="-4661.999"
+ x="-697.63782"
+ height="4"
+ width="1"
+ id="rect7962"
+ style="color:#000000;fill:#63bbee;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ style="color:#000000;fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect7966"
+ width="1"
+ height="5"
+ x="4653.999"
+ y="-697.63782" />
+ <rect
+ style="color:#000000;fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect7968"
+ width="1.0000174"
+ height="1"
+ x="-697.63782"
+ y="-4655.999"
+ transform="matrix(0,1,-1,0,0,0)" />
+ <rect
+ transform="matrix(0,1,-1,0,0,0)"
+ y="-4665.999"
+ x="-697.63782"
+ height="2"
+ width="1.0000174"
+ id="rect7970"
+ style="color:#000000;fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ y="-697.63782"
+ x="3870.9988"
+ height="4.9999828"
+ width="2"
+ id="rect8164"
+ style="color:#000000;fill:#1c99e0;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ style="color:#000000;fill:#63bbee;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect8080"
+ width="1"
+ height="3.9999645"
+ x="3870.9988"
+ y="-697.63782" />
+ <rect
+ style="color:#000000;fill:#d36118;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect8166"
+ width="2"
+ height="7"
+ x="3872.9988"
+ y="-699.63782" />
+ <rect
+ y="-699.63782"
+ x="3872.9988"
+ height="5.9999619"
+ width="1"
+ id="rect8158"
+ style="color:#000000;fill:#f09e6f;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ y="-695.63782"
+ x="3874.9988"
+ height="2.9999826"
+ width="2"
+ id="rect8176"
+ style="color:#000000;fill:#e9b913;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ style="color:#000000;fill:#43c330;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect8178"
+ width="2"
+ height="3.9999826"
+ x="3876.9988"
+ y="-696.63782" />
+ <path
+ sodipodi:nodetypes="cccccccc"
+ id="path3720"
+ d="m 4397.9988,-696.63779 2,0 0,-3 4,0 0,3 2,0 -4,4.17448 -4,-4.17448 z"
+ style="color:#000000;fill:#18a303;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.75;marker:none;visibility:visible;display:inline;overflow:visible"
+ inkscape:connector-curvature="0" />
+ <g
+ transform="matrix(1.99996,0,0,2,-18.9992,-2737.36)"
+ style="fill:url(#linearGradient54076) #000000;fill-opacity:1;display:inline"
+ id="g11787">
+ <rect
+ style="color:#000000;fill:url(#linearGradient54068) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect11789"
+ width="2.5"
+ height="1"
+ x="115.00113"
+ y="984.36108" />
+ <rect
+ style="color:#000000;fill:url(#linearGradient54070) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect11791"
+ width="2.5"
+ height="1"
+ x="115.00113"
+ y="982.36108" />
+ <rect
+ style="color:#000000;fill:url(#linearGradient54072) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect11793"
+ width="8"
+ height="1"
+ x="115.00113"
+ y="986.36108" />
+ <rect
+ y="988.36108"
+ x="115.00113"
+ height="1"
+ width="6"
+ id="rect11795"
+ style="color:#000000;fill:url(#linearGradient54074) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ </g>
+ <g
+ style="display:inline"
+ transform="matrix(0.999981,0,0,1,21.0023,-12)"
+ id="g12037">
+ <g
+ id="g12059"
+ transform="translate(-19,20)">
+ <rect
+ style="color:#000000;fill:url(#linearGradient54078) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect12049"
+ width="9"
+ height="6"
+ x="216"
+ y="-780.63782" />
+ <rect
+ y="-779.63776"
+ x="217"
+ height="4"
+ width="7"
+ id="rect12051"
+ style="color:#000000;fill:url(#linearGradient54080) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <path
+ sodipodi:nodetypes="cccccccc"
+ id="path12053"
+ d="m 221,-776.6378 -2,-2.5 -2,3 0,0.5 7,0 0,-0.5 -1.5,-1.5 -1.5,1 z"
+ style="color:#000000;fill:url(#linearGradient54082) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible"
+ inkscape:connector-curvature="0" />
+ </g>
+ </g>
+ <g
+ id="g15831"
+ style="fill:#00a0fc;fill-opacity:1;display:inline"
+ transform="matrix(1.99996,0,0,2,-18.9992,-2700.36)">
+ <rect
+ y="984.36108"
+ x="115.00113"
+ height="1"
+ width="2.5"
+ id="rect15833"
+ style="color:#000000;fill:#00a0fc;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ y="982.36108"
+ x="115.00113"
+ height="1"
+ width="2.5"
+ id="rect15835"
+ style="color:#000000;fill:#00a0fc;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ y="986.36108"
+ x="115.00113"
+ height="1"
+ width="8"
+ id="rect15837"
+ style="color:#000000;fill:#00a0fc;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ style="color:#000000;fill:#00a0fc;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect15839"
+ width="6"
+ height="1"
+ x="115.00113"
+ y="988.36108" />
+ </g>
+ <g
+ id="g15841"
+ transform="matrix(0.999981,0,0,1,21.0023,25)"
+ style="fill:#00a0fc;display:inline">
+ <rect
+ style="color:#000000;fill:#00a0fc;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect15845"
+ width="9"
+ height="6"
+ x="197"
+ y="-760.63782" />
+ </g>
+ <g
+ id="g16008"
+ style="fill:#00a0fc;fill-opacity:1;display:inline"
+ transform="matrix(0.999981,0,0,1,92.001,-1661)">
+ <rect
+ y="984.36108"
+ x="115.00113"
+ height="1"
+ width="8"
+ id="rect16010"
+ style="color:#000000;fill:#00a0fc;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ y="982.36108"
+ x="115.00113"
+ height="1"
+ width="6"
+ id="rect16012"
+ style="color:#000000;fill:#00a0fc;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ y="986.36108"
+ x="115.00113"
+ height="1"
+ width="8"
+ id="rect16014"
+ style="color:#000000;fill:#00a0fc;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ style="color:#000000;fill:#00a0fc;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect16016"
+ width="6"
+ height="1"
+ x="115.00113"
+ y="988.36108" />
+ </g>
+ <use
+ x="0"
+ y="0"
+ xlink:href="#g11787"
+ id="use23646"
+ transform="translate(1571,0)"
+ width="5033"
+ height="1085"
+ style="opacity:0.75" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#g12037"
+ id="use23648-7"
+ transform="translate(1571,0)"
+ width="5033"
+ height="1085"
+ style="opacity:0.75" />
+ <g
+ transform="translate(1571,-53)"
+ id="use23802"
+ style="opacity:0.75;display:inline">
+ <rect
+ y="-824.63788"
+ x="225"
+ height="10.000088"
+ width="13.999608"
+ id="rect13865"
+ style="color:#000000;fill:url(#linearGradient13875) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ style="color:#000000;fill:url(#linearGradient13877) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect13867"
+ width="11.999997"
+ height="8.0000238"
+ x="226"
+ y="-823.63782" />
+ <path
+ style="color:#000000;fill:url(#linearGradient13879) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible"
+ d="m 233,-817.6378 -3.5,-4.5 -3.5,5.5 0,1 11.99963,0 0,-1 -2.49963,-3 -2.5,2 z"
+ id="path13869"
+ sodipodi:nodetypes="cccccccc"
+ inkscape:connector-curvature="0" />
+ <path
+ sodipodi:type="arc"
+ style="opacity:0.5;color:#000000;fill:#c99c00;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="path13871"
+ sodipodi:cx="441.1875"
+ sodipodi:cy="1099.6875"
+ sodipodi:rx="7.5845342"
+ sodipodi:ry="4.6875"
+ d="m 448.77203,1099.6875 a 7.5845342,4.6875 0 0 1 -7.58453,4.6875 l 0,-4.6875 z"
+ transform="matrix(0,0.461465,-0.746667,0,1059.1,-1027.23)"
+ sodipodi:start="0"
+ sodipodi:end="1.5707963" />
+ <path
+ sodipodi:end="1.5707963"
+ sodipodi:start="0"
+ transform="matrix(0,0.395542,-0.64,0,941.8,-998.146)"
+ d="m 448.77203,1099.6875 a 7.5845342,4.6875 0 0 1 -7.58453,4.6875 l 0,-4.6875 z"
+ sodipodi:ry="4.6875"
+ sodipodi:rx="7.5845342"
+ sodipodi:cy="1099.6875"
+ sodipodi:cx="441.1875"
+ id="path13873"
+ style="opacity:0.5;color:#000000;fill:#e9b913;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ sodipodi:type="arc" />
+ </g>
+ <g
+ transform="translate(1571,-53)"
+ style="opacity:0.75;fill:url(#linearGradient13935) #000000;fill-opacity:1;display:inline"
+ id="use23804">
+ <rect
+ style="color:#000000;fill:url(#linearGradient13923) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect13911"
+ width="7.9999743"
+ height="2.0000803"
+ x="215.00003"
+ y="-816.63788" />
+ <rect
+ style="color:#000000;fill:url(#linearGradient13925) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect13913"
+ width="7.9999743"
+ height="2.0000803"
+ x="215.00003"
+ y="-824.63788" />
+ <rect
+ style="color:#000000;fill:url(#linearGradient13927) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect13915"
+ width="23.999573"
+ height="2.0000803"
+ x="215.00003"
+ y="-812.63788" />
+ <rect
+ y="-804.63782"
+ x="215.00003"
+ height="1.9999235"
+ width="17.99968"
+ id="rect13917"
+ style="color:#000000;fill:url(#linearGradient13929) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ y="-820.63788"
+ x="215.00003"
+ height="2.0000803"
+ width="7.9999743"
+ id="rect13919"
+ style="color:#000000;fill:url(#linearGradient13931) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ y="-808.63788"
+ x="215.00003"
+ height="2.0000803"
+ width="23.999573"
+ id="rect13921"
+ style="color:#000000;fill:url(#linearGradient13933) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ </g>
+ <g
+ id="g26393-4"
+ transform="translate(-0.00120978,9.9e-6)">
+ <g
+ id="g25236-5"
+ style="fill:#00a0fc;fill-opacity:1;display:inline">
+ <rect
+ y="-816.63788"
+ x="215.00003"
+ height="2.0000803"
+ width="7.9999743"
+ id="rect25238-5"
+ style="color:#000000;fill:#00a0fc;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ y="-824.63788"
+ x="215.00003"
+ height="2.0000803"
+ width="7.9999743"
+ id="rect25240-1"
+ style="color:#000000;fill:#00a0fc;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ y="-812.63788"
+ x="215.00003"
+ height="2.0000803"
+ width="23.999573"
+ id="rect25242-0"
+ style="color:#000000;fill:#00a0fc;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ style="color:#000000;fill:#00a0fc;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect25244-3"
+ width="17.99968"
+ height="1.9999235"
+ x="215.00003"
+ y="-804.63782" />
+ <rect
+ style="color:#000000;fill:#00a0fc;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect25246-2"
+ width="7.9999743"
+ height="2.0000803"
+ x="215.00003"
+ y="-820.63788" />
+ <rect
+ style="color:#000000;fill:#00a0fc;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect25248-3"
+ width="23.999573"
+ height="2.0000803"
+ x="215.00003"
+ y="-808.63788" />
+ </g>
+ <g
+ style="fill:#00a0fc;display:inline"
+ id="g25228-7">
+ <rect
+ style="color:#000000;fill:#00a0fc;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect25230-9"
+ width="13.999608"
+ height="10.000088"
+ x="225"
+ y="-824.63788" />
+ <path
+ sodipodi:nodetypes="cccccccc"
+ id="path25234-5"
+ d="m 233,-817.6378 -3.5,-4.5 -3.5,5.5 0,1 11.99963,0 0,-1 -2.49963,-3 -2.5,2 z"
+ style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible"
+ inkscape:connector-curvature="0" />
+ </g>
+ </g>
+ <g
+ transform="matrix(0.999981,0,0,1,1663,-1661)"
+ style="fill:#00a0fc;fill-opacity:1;display:inline"
+ id="g25321">
+ <rect
+ style="color:#000000;fill:#00a0fc;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect25323"
+ width="8"
+ height="1"
+ x="115.00113"
+ y="984.36108" />
+ <rect
+ style="color:#000000;fill:#00a0fc;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect25325"
+ width="6"
+ height="1"
+ x="115.00113"
+ y="982.36108" />
+ <rect
+ style="color:#000000;fill:#00a0fc;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect25327"
+ width="8"
+ height="1"
+ x="115.00113"
+ y="986.36108" />
+ <rect
+ y="988.36108"
+ x="115.00113"
+ height="1"
+ width="6"
+ id="rect25329"
+ style="color:#000000;fill:#00a0fc;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ </g>
+ <g
+ transform="matrix(1.99996,0,0,2,1552,-2700.36)"
+ style="fill:#00a0fc;fill-opacity:1;display:inline"
+ id="g25367">
+ <rect
+ style="color:#000000;fill:#00a0fc;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect25369"
+ width="2.5"
+ height="1"
+ x="115.00113"
+ y="984.36108" />
+ <rect
+ style="color:#000000;fill:#00a0fc;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect25371"
+ width="2.5"
+ height="1"
+ x="115.00113"
+ y="982.36108" />
+ <rect
+ style="color:#000000;fill:#00a0fc;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect25373"
+ width="8"
+ height="1"
+ x="115.00113"
+ y="986.36108" />
+ <rect
+ y="988.36108"
+ x="115.00113"
+ height="1"
+ width="6"
+ id="rect25375"
+ style="color:#000000;fill:#00a0fc;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ </g>
+ <g
+ style="fill:#00a0fc;display:inline"
+ transform="matrix(0.999981,0,0,1,1592,25)"
+ id="g25377">
+ <rect
+ y="-760.63782"
+ x="197"
+ height="6"
+ width="9"
+ id="rect25379"
+ style="color:#000000;fill:#00a0fc;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible" />
+ </g>
+ <use
+ x="0"
+ y="0"
+ xlink:href="#g26393-4"
+ id="use26405-7"
+ transform="translate(1571,0)"
+ width="5033"
+ height="1085" />
+ <g
+ id="g15640"
+ transform="translate(-0.00120978,9.9e-6)">
+ <rect
+ transform="translate(-123,-1753.64)"
+ y="1054"
+ x="591"
+ height="7"
+ width="7"
+ id="rect15622"
+ style="color:#000000;fill:#ccf4c6;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <g
+ style="color:#000000;fill:url(#linearGradient54086) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="g6623">
+ <path
+ id="rect6525"
+ transform="translate(-123,-1753.64)"
+ d="m 591,1054 0,1 0,1 0,1 0,1 0,1 0,1 0,1 1,0 2,0 1,0 2,0 1,0 0,-1 0,-6 -6,0 -1,0 z m 1,1 2,0 0,1 -2,0 0,-1 z m 3,0 2,0 0,1 -2,0 0,-1 z m -3,2 2,0 0,1 -2,0 0,-1 z m 3,0 2,0 0,1 -2,0 0,-1 z m -3,2 2,0 0,1 -2,0 0,-1 z m 3,0 2,0 0,1 -2,0 0,-1 z"
+ style="color:#000000;fill:url(#linearGradient54084) #000000;marker:none;visibility:visible;display:inline;overflow:visible"
+ inkscape:connector-curvature="0" />
+ </g>
+ </g>
+ <g
+ id="g28903"
+ transform="translate(-0.00120978,9.9e-6)">
+ <g
+ transform="translate(0,21)"
+ id="g6681"
+ style="color:#000000;fill:#2cee0e;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible">
+ <path
+ style="color:#000000;fill:#2cee0e;marker:none;visibility:visible;display:inline;overflow:visible"
+ d="m 591,1054 0,1 0,1 0,1 0,1 0,1 0,1 0,1 1,0 2,0 1,0 2,0 1,0 0,-1 0,-6 -6,0 -1,0 z m 1,1 2,0 0,1 -2,0 0,-1 z m 3,0 2,0 0,1 -2,0 0,-1 z m -3,2 2,0 0,1 -2,0 0,-1 z m 3,0 2,0 0,1 -2,0 0,-1 z m -3,2 2,0 0,1 -2,0 0,-1 z m 3,0 2,0 0,1 -2,0 0,-1 z"
+ transform="translate(-123,-1753.64)"
+ id="path6683"
+ inkscape:connector-curvature="0" />
+ </g>
+ </g>
+ <g
+ id="g28891"
+ transform="translate(-0.00120978,9.9e-6)">
+ <rect
+ y="-735.63782"
+ x="472"
+ height="13"
+ width="16"
+ id="rect16231"
+ style="color:#000000;fill:#106802;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ y="-735.63782"
+ x="472"
+ height="1"
+ width="16"
+ id="rect7294"
+ style="color:#000000;fill:#2cee0e;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ transform="matrix(0,-1,1,0,0,0)"
+ y="487"
+ x="722.63776"
+ height="1"
+ width="13.000033"
+ id="rect7296"
+ style="color:#000000;fill:#2cee0e;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ style="color:#000000;fill:#2cee0e;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect7298"
+ width="13.000033"
+ height="1"
+ x="722.63782"
+ y="472"
+ transform="matrix(0,-1,1,0,0,0)" />
+ <rect
+ transform="matrix(0,-1,1,0,0,0)"
+ y="477"
+ x="722.63782"
+ height="1"
+ width="13.000033"
+ id="rect7300"
+ style="color:#000000;fill:#2cee0e;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ style="color:#000000;fill:#2cee0e;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect7302"
+ width="12.000083"
+ height="1"
+ x="723.63782"
+ y="482"
+ transform="matrix(0,-1,1,0,0,0)" />
+ <rect
+ style="color:#000000;fill:#2cee0e;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect7304"
+ width="16"
+ height="1"
+ x="472"
+ y="-732.63782" />
+ <rect
+ y="-729.63782"
+ x="472"
+ height="1"
+ width="16"
+ id="rect7306"
+ style="color:#000000;fill:#2cee0e;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ style="color:#000000;fill:#2cee0e;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect7308"
+ width="15.000021"
+ height="1"
+ x="472"
+ y="-726.63782" />
+ <rect
+ y="-723.63782"
+ x="472"
+ height="1"
+ width="16"
+ id="rect7310"
+ style="color:#000000;fill:#2cee0e;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ </g>
+ <g
+ id="g28878"
+ transform="translate(-0.00120978,9.9e-6)">
+ <g
+ id="g15626">
+ <rect
+ style="color:#000000;fill:#ccf4c6;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect15558-5"
+ width="16"
+ height="13.000028"
+ x="472"
+ y="-772.63782" />
+ <rect
+ y="-772.63782"
+ x="472"
+ height="3.9999993"
+ width="15.999989"
+ id="rect7360"
+ style="color:#000000;fill:#92e285;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <path
+ style="color:#000000;fill:url(#linearGradient54088) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ d="m 472,-772.6378 0,1 0,2 0,1 0,2 0,1 0,2 0,1 0,2 0,1 16,0 0,-1 0,-11 0,-1 -1,0 -4,0 -1,0 -4,0 -1,0 -4,0 -1,0 z m 1,1 4,0 0,2 -4,0 0,-2 z m 5,0 4,0 0,2 -4,0 0,-2 z m 5,0 4,0 0,2 -4,0 0,-2 z m -10,3 4,0 0,2 -4,0 0,-2 z m 5,0 4,0 0,2 -4,0 0,-2 z m 5,0 4,0 0,2 -4,0 0,-2 z m -10,3 4,0 0,2 -4,0 0,-2 z m 5,0 4,0 0,2 -4,0 0,-2 z m 5,0 4,0 0,2 -4,0 0,-2 z m -10,3 4,0 0,2 -4,0 0,-2 z m 5,0 4,0 0,2 -4,0 0,-2 z m 5,0 4,0 0,2 -4,0 0,-2 z"
+ id="rect6547"
+ inkscape:connector-curvature="0" />
+ <rect
+ y="-766.63782"
+ x="480"
+ height="7.9999647"
+ width="8"
+ id="rect7336"
+ style="color:#000000;fill:#808080;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ y="-765.63782"
+ x="481"
+ height="5.9999619"
+ width="6"
+ id="rect7362"
+ style="color:#000000;fill:#cccccc;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ style="color:#000000;fill:url(#linearGradient54090) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect6567"
+ width="6"
+ height="5.9999619"
+ x="481"
+ y="-765.63782" />
+ <rect
+ y="-762.63782"
+ x="482"
+ height="2.9999723"
+ width="2"
+ id="rect6585"
+ style="color:#000000;fill:#1c99e0;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ style="color:#000000;fill:#d36118;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect6587"
+ width="2"
+ height="4.9999609"
+ x="484"
+ y="-764.63782" />
+ <rect
+ style="color:#000000;fill:#63bbee;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect7350"
+ width="1"
+ height="1.9999989"
+ x="482"
+ y="-762.63782" />
+ <rect
+ y="-764.63782"
+ x="484"
+ height="3.9999883"
+ width="1"
+ id="rect7352"
+ style="color:#000000;fill:#f09e6f;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ </g>
+ </g>
+ <g
+ id="g28858-3"
+ transform="translate(-0.00120978,9.9e-6)">
+ <rect
+ style="color:#000000;fill:#106802;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect7430-3"
+ width="22"
+ height="20.999966"
+ x="476"
+ y="-824.63782" />
+ <g
+ transform="translate(0,53)"
+ id="g7722-1"
+ style="fill:#2cee0e">
+ <rect
+ style="color:#000000;fill:#2cee0e;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect7724-4"
+ width="22"
+ height="1"
+ x="476"
+ y="-877.63782" />
+ <rect
+ transform="matrix(0,-1,1,0,0,0)"
+ y="476"
+ x="856.63782"
+ height="1"
+ width="21.000053"
+ id="rect7726-6"
+ style="color:#000000;fill:#2cee0e;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ style="color:#000000;fill:#2cee0e;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect7728-8"
+ width="21.000053"
+ height="1"
+ x="856.63782"
+ y="483"
+ transform="matrix(0,-1,1,0,0,0)" />
+ <rect
+ transform="matrix(0,-1,1,0,0,0)"
+ y="490"
+ x="856.63782"
+ height="1"
+ width="21.000164"
+ id="rect7730-5"
+ style="color:#000000;fill:#2cee0e;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ y="-873.63782"
+ x="476"
+ height="1"
+ width="22"
+ id="rect7732-9"
+ style="color:#000000;fill:#2cee0e;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ style="color:#000000;fill:#2cee0e;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect7734-1"
+ width="22"
+ height="1"
+ x="476"
+ y="-869.63782" />
+ <rect
+ y="-865.63782"
+ x="476"
+ height="1"
+ width="21.999998"
+ id="rect7736-4"
+ style="color:#000000;fill:#2cee0e;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ y="-861.63782"
+ x="476"
+ height="1"
+ width="22"
+ id="rect7740-0"
+ style="color:#000000;fill:#2cee0e;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ style="color:#000000;fill:#2cee0e;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect7742-3"
+ width="22"
+ height="1"
+ x="476"
+ y="-857.63782" />
+ <rect
+ style="color:#000000;fill:#2cee0e;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect7744-7"
+ width="21.000164"
+ height="1"
+ x="856.63782"
+ y="497"
+ transform="matrix(0,-1,1,0,0,0)" />
+ </g>
+ <rect
+ y="-813.63788"
+ x="488"
+ height="11"
+ width="12"
+ id="rect7788-5"
+ style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ y="-810.63782"
+ x="490"
+ height="6.9999485"
+ width="9"
+ id="rect7790-6"
+ style="color:#000000;fill:#cccccc;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ style="color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect7792-4"
+ width="10"
+ height="9"
+ x="489"
+ y="-812.63782" />
+ <rect
+ y="-809.63782"
+ x="490"
+ height="5.999897"
+ width="2"
+ id="rect7794-9"
+ style="color:#000000;fill:#00a0fc;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ style="color:#000000;fill:#fc5c00;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect7796-7"
+ width="2"
+ height="7.999908"
+ x="493"
+ y="-811.63782" />
+ <rect
+ y="-807.63782"
+ x="496"
+ height="3.9999652"
+ width="2"
+ id="rect7798-2"
+ style="color:#000000;fill:#ffd74c;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ </g>
+ <g
+ id="g14167"
+ transform="translate(-0.00120978,9.9e-6)">
+ <rect
+ style="color:#000000;fill:#ccf4c6;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect15558"
+ width="22"
+ height="21.000017"
+ x="476"
+ y="-877.63782" />
+ <rect
+ y="-877.63782"
+ x="476"
+ height="5.0000386"
+ width="22"
+ id="rect7584"
+ style="color:#000000;fill:#92e285;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <g
+ transform="translate(0,7.8418e-5)"
+ id="g7722-2"
+ style="fill:url(#linearGradient54094) #000000;display:inline">
+ <path
+ id="rect7724-8"
+ transform="translate(-123,-1753.64)"
+ d="m 599,876 0,1 0,3 0,1 0,3 0,1 0,3 0,1 0,3 0,1 0,4 1,0 20,0 1,0 0,-1 0,-3 0,-1 0,-3 0,-1 0,-3 0,-1 0,-3 0,-1 0,-3 0,-1 -1,0 -21,0 z m 1,1 6,0 0,3 -6,0 0,-3 z m 7,0 6,0 0,3 -6,0 0,-3 z m 7,0 6,0 0,3 -6,0 0,-3 z m -14,4 6,0 0,3 -6,0 0,-3 z m 7,0 6,0 0,3 -6,0 0,-3 z m 7,0 6,0 0,3 -6,0 0,-3 z m -14,4 6,0 0,3 -6,0 0,-3 z m 7,0 6,0 0,3 -6,0 0,-3 z m 7,0 6,0 0,3 -6,0 0,-3 z m -14,4 6,0 0,3 -6,0 0,-3 z m 7,0 6,0 0,3 -6,0 0,-3 z m 7,0 6,0 0,3 -6,0 0,-3 z m -14,4 6,0 0,3 -6,0 0,-3 z m 7,0 6,0 0,3 -6,0 0,-3 z m 7,0 6,0 0,3 -6,0 0,-3 z"
+ style="color:#000000;fill:url(#linearGradient54092) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ inkscape:connector-curvature="0" />
+ </g>
+ <rect
+ style="color:#000000;fill:#808080;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect7634"
+ width="11"
+ height="11"
+ x="489"
+ y="-866.63788" />
+ <rect
+ style="color:#000000;fill:#cccccc;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect7636"
+ width="9"
+ height="9"
+ x="490"
+ y="-865.63788" />
+ <rect
+ y="-865.63782"
+ x="490"
+ height="9"
+ width="9"
+ id="rect7638"
+ style="color:#000000;fill:url(#linearGradient54096) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ style="color:#000000;fill:#1c99e0;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect7640"
+ width="3"
+ height="4.9999156"
+ x="490"
+ y="-861.63782" />
+ <rect
+ y="-864.63782"
+ x="493"
+ height="7.9998989"
+ width="3"
+ id="rect7642"
+ style="color:#000000;fill:#d36118;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ style="color:#000000;fill:#e9b913;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect7644"
+ width="3"
+ height="3"
+ x="496"
+ y="-859.63782" />
+ <rect
+ y="-860.63782"
+ x="491"
+ height="3.9999897"
+ width="1"
+ id="rect7646"
+ style="color:#000000;fill:#63bbee;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ style="color:#000000;fill:#f09e6f;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect7648"
+ width="1"
+ height="6.9999576"
+ x="494"
+ y="-863.63782" />
+ <rect
+ y="-858.63782"
+ x="497"
+ height="2.0000231"
+ width="1"
+ id="rect7650"
+ style="color:#000000;fill:#f5ce53;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ </g>
+ <g
+ id="g6425"
+ transform="translate(858.999,284.5)"
+ style="fill:#f2cbf8">
+ <path
+ sodipodi:nodetypes="cccscccc"
+ id="rect6392"
+ transform="translate(-123,-1753.64)"
+ d="m 515.5,772 0,2 c 0,0 0,0.29921 0,0.5 0,0.82843 1.567,1.5 3.5,1.5 1.933,0 3.5,-0.67157 3.5,-1.5 l 0,-0.5 0,-2 -7,0 z"
+ style="color:#000000;fill:#f2cbf8;fill-opacity:1;fill-rule:nonzero;stroke:#8e03a3;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible"
+ inkscape:connector-curvature="0" />
+ <path
+ sodipodi:type="arc"
+ style="color:#000000;fill:#f2cbf8;fill-opacity:1;fill-rule:nonzero;stroke:#8e03a3;stroke-width:4.93024015;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="path6390"
+ sodipodi:cx="519.6875"
+ sodipodi:cy="730.3125"
+ sodipodi:rx="22.4375"
+ sodipodi:ry="5.6875"
+ d="m 542.125,730.3125 a 22.4375,5.6875 0 1 1 -44.875,0 22.4375,5.6875 0 1 1 44.875,0 z"
+ transform="matrix(0.155989,0,0,0.263736,314.935,-1174.75)" />
+ </g>
+ <path
+ style="color:#000000;fill:url(#linearGradient54972) #000000;fill-opacity:1;fill-rule:nonzero;stroke:#8e03a3;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ d="m 1255.4988,-765.13779 0,4 c 0,1.10457 3.3579,2 7.5,2 4.1421,0 7.5,-0.89543 7.5,-2 l 0,-4 -15,0 z"
+ id="path9344"
+ sodipodi:nodetypes="ccsccc"
+ inkscape:connector-curvature="0" />
+ <path
+ sodipodi:nodetypes="ccsccc"
+ id="path9335"
+ d="m 1255.4988,-769.63779 0,4 c 0,1.10457 3.3579,2 7.5,2 4.1421,0 7.5,-0.89543 7.5,-2 l 0,-4 -15,0 z"
+ style="color:#000000;fill:url(#linearGradient54969) #000000;fill-opacity:1;fill-rule:nonzero;stroke:#8e03a3;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ inkscape:connector-curvature="0" />
+ <path
+ transform="matrix(0.334262,0,0,0.351648,1089.29,-1026.95)"
+ d="m 542.125,730.3125 a 22.4375,5.6875 0 1 1 -44.875,0 22.4375,5.6875 0 1 1 44.875,0 z"
+ sodipodi:ry="5.6875"
+ sodipodi:rx="22.4375"
+ sodipodi:cy="730.3125"
+ sodipodi:cx="519.6875"
+ id="path9337"
+ style="color:#000000;fill:url(#linearGradient9342) #000000;fill-opacity:1;fill-rule:nonzero;stroke:#8e03a3;stroke-width:2.91676998;marker:none;visibility:visible;display:inline;overflow:visible"
+ sodipodi:type="arc" />
+ <g
+ style="display:inline"
+ id="g13949"
+ transform="translate(-0.00120978,-53)">
+ <rect
+ style="color:#000000;fill:url(#linearGradient13985) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect13951"
+ width="13.999608"
+ height="10.000088"
+ x="225"
+ y="-824.63788" />
+ <rect
+ y="-823.63782"
+ x="226"
+ height="8.0000238"
+ width="11.999997"
+ id="rect13953"
+ style="color:#000000;fill:url(#linearGradient13987) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <path
+ sodipodi:nodetypes="cccccccc"
+ id="path13955"
+ d="m 233,-817.6378 -3.5,-4.5 -3.5,5.5 0,1 11.99963,0 0,-1 -2.49963,-3 -2.5,2 z"
+ style="color:#000000;fill:url(#linearGradient13989) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible"
+ inkscape:connector-curvature="0" />
+ <path
+ sodipodi:end="1.5707963"
+ sodipodi:start="0"
+ transform="matrix(0,0.461465,-0.746667,0,1059.1,-1027.23)"
+ d="m 448.77203,1099.6875 a 7.5845342,4.6875 0 0 1 -7.58453,4.6875 l 0,-4.6875 z"
+ sodipodi:ry="4.6875"
+ sodipodi:rx="7.5845342"
+ sodipodi:cy="1099.6875"
+ sodipodi:cx="441.1875"
+ id="path13957"
+ style="opacity:0.5;color:#000000;fill:#c99c00;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ sodipodi:type="arc" />
+ <path
+ sodipodi:type="arc"
+ style="opacity:0.5;color:#000000;fill:#e9b913;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="path13959"
+ sodipodi:cx="441.1875"
+ sodipodi:cy="1099.6875"
+ sodipodi:rx="7.5845342"
+ sodipodi:ry="4.6875"
+ d="m 448.77203,1099.6875 a 7.5845342,4.6875 0 0 1 -7.58453,4.6875 l 0,-4.6875 z"
+ transform="matrix(0,0.395542,-0.64,0,941.8,-998.146)"
+ sodipodi:start="0"
+ sodipodi:end="1.5707963" />
+ </g>
+ <g
+ id="g13961"
+ style="fill:url(#linearGradient14003) #000000;fill-opacity:1;display:inline"
+ transform="translate(-0.00120978,-53)">
+ <rect
+ y="-816.63788"
+ x="215.00003"
+ height="2.0000803"
+ width="7.9999743"
+ id="rect13963"
+ style="color:#000000;fill:url(#linearGradient13991) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ y="-824.63788"
+ x="215.00003"
+ height="2.0000803"
+ width="7.9999743"
+ id="rect13965"
+ style="color:#000000;fill:url(#linearGradient13993) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ y="-812.63788"
+ x="215.00003"
+ height="2.0000803"
+ width="23.999573"
+ id="rect13967"
+ style="color:#000000;fill:url(#linearGradient13995) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ style="color:#000000;fill:url(#linearGradient13997) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect13969"
+ width="17.99968"
+ height="1.9999235"
+ x="215.00003"
+ y="-804.63782" />
+ <rect
+ style="color:#000000;fill:url(#linearGradient13999) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect13971"
+ width="7.9999743"
+ height="2.0000803"
+ x="215.00003"
+ y="-820.63788" />
+ <rect
+ style="color:#000000;fill:url(#linearGradient14001) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect13973"
+ width="23.999573"
+ height="2.0000803"
+ x="215.00003"
+ y="-808.63788" />
+ </g>
+ <path
+ style="color:#000000;fill:url(#linearGradient54952) #000000;fill-opacity:1;fill-rule:nonzero;stroke:#8e03a3;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible"
+ d="m 1259.4988,-863.63779 0,3.5 c 0,0 0,0.338 0,0.5 0,1.933 5.1487,3.5 11.5,3.5 6.3513,0 11.5,-1.567 11.5,-3.5 l 0,-0.5 0,-3.5 -23,0 z"
+ id="path14085"
+ sodipodi:nodetypes="cccscccc"
+ inkscape:connector-curvature="0" />
+ <path
+ transform="matrix(0.512535,0,0,0.615385,1004.64,-1318.56)"
+ d="m 542.125,730.3125 a 22.4375,5.6875 0 1 1 -44.875,0 22.4375,5.6875 0 1 1 44.875,0 z"
+ sodipodi:ry="5.6875"
+ sodipodi:rx="22.4375"
+ sodipodi:cy="730.3125"
+ sodipodi:cx="519.6875"
+ id="path14087"
+ style="color:#000000;fill:url(#linearGradient14109) #000000;fill-opacity:1;fill-rule:nonzero;stroke:#8e03a3;stroke-width:1.78059006;marker:none;visibility:visible;display:inline;overflow:visible"
+ sodipodi:type="arc" />
+ <path
+ sodipodi:nodetypes="cccscccc"
+ id="path14089"
+ d="m 1259.4988,-868.13779 0,3.5 c 0,0 0,0.338 0,0.5 0,1.933 5.1487,3.5 11.5,3.5 6.3513,0 11.5,-1.567 11.5,-3.5 l 0,-0.5 0,-3.5 -23,0 z"
+ style="color:#000000;fill:url(#linearGradient54948) #000000;fill-opacity:1;fill-rule:nonzero;stroke:#8e03a3;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible"
+ inkscape:connector-curvature="0" />
+ <g
+ transform="translate(869.999,9.9e-6)"
+ id="g14091">
+ <path
+ sodipodi:nodetypes="cccscccc"
+ id="path14093"
+ d="m 389.5,-873.1378 0,3.5 c 0,0 0,0.338 0,0.5 0,1.933 5.14873,3.5 11.5,3.5 6.35127,0 11.5,-1.567 11.5,-3.5 l 0,-0.5 0,-3.5 -23,0 z"
+ style="color:#000000;fill:url(#linearGradient14113) #000000;fill-opacity:1;fill-rule:nonzero;stroke:#8e03a3;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible"
+ inkscape:connector-curvature="0" />
+ <path
+ transform="matrix(0.512535,0,0,0.615385,134.642,-1323.06)"
+ d="m 542.125,730.3125 a 22.4375,5.6875 0 1 1 -44.875,0 22.4375,5.6875 0 1 1 44.875,0 z"
+ sodipodi:ry="5.6875"
+ sodipodi:rx="22.4375"
+ sodipodi:cy="730.3125"
+ sodipodi:cx="519.6875"
+ id="path14095"
+ style="color:#000000;fill:url(#linearGradient14115) #000000;fill-opacity:1;fill-rule:nonzero;stroke:#8e03a3;stroke-width:1.78059006;marker:none;visibility:visible;display:inline;overflow:visible"
+ sodipodi:type="arc" />
+ </g>
+ <use
+ x="0"
+ y="0"
+ xlink:href="#g14167"
+ id="use15624"
+ transform="translate(1571,0)"
+ width="5033"
+ height="1085"
+ style="opacity:0.75" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#g15626"
+ id="use15638"
+ transform="translate(1571,9.9e-6)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#g15640"
+ id="use15645"
+ transform="translate(1571,0)"
+ width="5033"
+ height="1085" />
+ <g
+ style="fill:#530260"
+ transform="translate(858.999,305.5)"
+ id="g16213">
+ <path
+ style="color:#000000;fill:#530260;fill-opacity:1;fill-rule:nonzero;stroke:#e327ff;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible"
+ d="m 515.5,772 0,2 c 0,0 0,0.29921 0,0.5 0,0.82843 1.567,1.5 3.5,1.5 1.933,0 3.5,-0.67157 3.5,-1.5 l 0,-0.5 0,-2 -7,0 z"
+ transform="translate(-123,-1753.64)"
+ id="path16215"
+ sodipodi:nodetypes="cccscccc"
+ inkscape:connector-curvature="0" />
+ <path
+ transform="matrix(0.155989,0,0,0.263736,314.935,-1174.75)"
+ d="m 542.125,730.3125 a 22.4375,5.6875 0 1 1 -44.875,0 22.4375,5.6875 0 1 1 44.875,0 z"
+ sodipodi:ry="5.6875"
+ sodipodi:rx="22.4375"
+ sodipodi:cy="730.3125"
+ sodipodi:cx="519.6875"
+ id="path16217"
+ style="color:#000000;fill:#530260;fill-opacity:1;fill-rule:nonzero;stroke:#e327ff;stroke-width:4.93024015;marker:none;visibility:visible;display:inline;overflow:visible"
+ sodipodi:type="arc" />
+ </g>
+ <path
+ sodipodi:nodetypes="ccsccc"
+ id="path16219"
+ d="m 1255.4988,-728.13779 0,4 c 0,1.10457 3.3579,2 7.5,2 4.1421,0 7.5,-0.89543 7.5,-2 l 0,-4 -15,0 z"
+ style="color:#000000;fill:#530260;fill-opacity:1;fill-rule:nonzero;stroke:#e327ff;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ inkscape:connector-curvature="0" />
+ <path
+ style="color:#000000;fill:#530260;fill-opacity:1;fill-rule:nonzero;stroke:#e327ff;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ d="m 1255.4988,-732.63779 0,4 c 0,1.10457 3.3579,2 7.5,2 4.1421,0 7.5,-0.89543 7.5,-2 l 0,-4 -15,0 z"
+ id="path16221"
+ sodipodi:nodetypes="ccsccc"
+ inkscape:connector-curvature="0" />
+ <path
+ sodipodi:type="arc"
+ style="color:#000000;fill:#530260;fill-opacity:1;fill-rule:nonzero;stroke:#e327ff;stroke-width:2.91676998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="path16223"
+ sodipodi:cx="519.6875"
+ sodipodi:cy="730.3125"
+ sodipodi:rx="22.4375"
+ sodipodi:ry="5.6875"
+ d="m 542.125,730.3125 a 22.4375,5.6875 0 1 1 -44.875,0 22.4375,5.6875 0 1 1 44.875,0 z"
+ transform="matrix(0.334262,0,0,0.351648,1089.29,-989.951)" />
+ <path
+ sodipodi:type="arc"
+ style="color:#000000;fill:url(#linearGradient16245) #000000;fill-opacity:1;fill-rule:nonzero;stroke:#8e03a3;stroke-width:1.78059006;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="path16235-3"
+ sodipodi:cx="519.6875"
+ sodipodi:cy="730.3125"
+ sodipodi:rx="22.4375"
+ sodipodi:ry="5.6875"
+ d="m 542.125,730.3125 a 22.4375,5.6875 0 1 1 -44.875,0 22.4375,5.6875 0 1 1 44.875,0 z"
+ transform="matrix(0.512535,0,0,0.615385,1004.64,-1266.06)" />
+ <path
+ style="color:#000000;fill:#530260;fill-opacity:1;fill-rule:nonzero;stroke:#e327ff;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible"
+ d="m 1259.4988,-813.63779 0,6 c 0,0 0,0.338 0,0.5 0,1.933 5.1487,4 11.5,4 6.3513,0 11.5,-2.067 11.5,-4 l 0,-0.5 0,-6 -23,0 z"
+ id="path16237-2"
+ sodipodi:nodetypes="cccscccc"
+ inkscape:connector-curvature="0" />
+ <g
+ id="g16239-9"
+ transform="translate(869.999,53)">
+ <path
+ style="color:#000000;fill:#530260;fill-opacity:1;fill-rule:nonzero;stroke:#e327ff;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible"
+ d="m 389.5,-873.1378 0,6 c 0,0 0,0.338 0,0.5 0,1.933 5.14873,3.5 11.5,3.5 6.35127,0 11.5,-1.567 11.5,-3.5 l 0,-0.5 0,-6 -23,0 z"
+ id="path16241-6"
+ sodipodi:nodetypes="cccscccc"
+ inkscape:connector-curvature="0" />
+ <path
+ sodipodi:type="arc"
+ style="color:#000000;fill:#530260;fill-opacity:1;fill-rule:nonzero;stroke:#e327ff;stroke-width:1.78059006;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="path16243-3"
+ sodipodi:cx="519.6875"
+ sodipodi:cy="730.3125"
+ sodipodi:rx="22.4375"
+ sodipodi:ry="5.6875"
+ d="m 542.125,730.3125 a 22.4375,5.6875 0 1 1 -44.875,0 22.4375,5.6875 0 1 1 44.875,0 z"
+ transform="matrix(0.512535,0,0,0.615385,134.642,-1323.06)" />
+ </g>
+ <g
+ transform="matrix(0.999981,0,0,1,92.001,-1682)"
+ style="color:#000000;fill:url(#linearGradient54106) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="g6577">
+ <rect
+ style="color:#000000;fill:url(#linearGradient54098) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect6579"
+ width="8"
+ height="1"
+ x="115.00113"
+ y="984.36108" />
+ <rect
+ style="color:#000000;fill:url(#linearGradient54100) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect6581"
+ width="6"
+ height="1"
+ x="115.00113"
+ y="982.36108" />
+ <rect
+ style="color:#000000;fill:url(#linearGradient54102) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect6583"
+ width="8"
+ height="1"
+ x="115.00113"
+ y="986.36108" />
+ <rect
+ y="988.36108"
+ x="115.00113"
+ height="1"
+ width="6"
+ id="rect6586"
+ style="color:#000000;fill:url(#linearGradient54104) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ </g>
+ <use
+ x="0"
+ y="0"
+ xlink:href="#g6577"
+ id="use6740"
+ transform="translate(1571,0)"
+ width="5033"
+ height="1085"
+ style="opacity:0.75" />
+ <path
+ sodipodi:nodetypes="ccccc"
+ id="path7205"
+ d="m 749.7579,-861.38661 -7.50405,5.74882 2.92713,0 6.50404,-5.74882 -1.92712,0 z"
+ style="fill:#808080;stroke:none"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:#808080;stroke:none"
+ d="m 748.23968,-861.38661 7.50405,5.74882 -2.92713,0 -6.50404,-5.74882 1.92712,0 z"
+ id="path7207"
+ sodipodi:nodetypes="ccccc"
+ inkscape:connector-curvature="0" />
+ <rect
+ style="color:#000000;fill:#a33e03;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect7123"
+ width="24.000011"
+ height="18.000036"
+ x="736.99878"
+ y="-877.63782" />
+ <rect
+ y="-876.63782"
+ x="737.99878"
+ height="16"
+ width="22"
+ id="rect7125"
+ style="color:#000000;fill:url(#linearGradient54919) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ rx="0.99999994"
+ ry="0.99999988" />
+ <path
+ id="path7213"
+ d="m 737.68449,-857.63779 22.6286,0 c 0.37987,0 0.6857,0.3016 0.6857,0.67635 l 0,0.6473 c 0,0.37475 -0.30583,0.67635 -0.6857,0.67635 l -22.6286,0 c -0.37987,0 -0.6857,-0.3016 -0.6857,-0.67635 l 0,-0.6473 c 0,-0.37475 0.30583,-0.67635 0.6857,-0.67635 z"
+ style="opacity:0.4;color:#000000;fill:url(#radialGradient54916) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ inkscape:connector-curvature="0" />
+ <rect
+ y="-876.63782"
+ x="737.99878"
+ height="16.000017"
+ width="22"
+ id="rect7201"
+ style="color:#000000;fill:url(#linearGradient54913) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ rx="0.99999994"
+ ry="0.99999994" />
+ <rect
+ style="color:#000000;fill:#d36118;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect7147"
+ width="18"
+ height="2"
+ x="739.99878"
+ y="-874.63782" />
+ <rect
+ y="-870.63782"
+ x="743.99878"
+ height="2"
+ width="5"
+ id="rect7133"
+ style="color:#000000;fill:url(#linearGradient54909) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <path
+ sodipodi:type="arc"
+ style="color:#000000;fill:#d36118;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="path7139"
+ sodipodi:cx="895.5"
+ sodipodi:cy="651.75"
+ sodipodi:rx="5.4999981"
+ sodipodi:ry="5.250001"
+ d="m 901,651.75 a 5.4999981,5.250001 0 1 1 -11,0 5.4999981,5.250001 0 1 1 11,0 z"
+ transform="matrix(0.181818,0,0,0.190476,578.181,-993.781)" />
+ <rect
+ style="color:#000000;fill:url(#linearGradient54905) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect7217"
+ width="5"
+ height="2"
+ x="743.99878"
+ y="-867.63782" />
+ <path
+ transform="matrix(0.181818,0,0,0.190476,578.181,-990.781)"
+ d="m 901,651.75 a 5.4999981,5.250001 0 1 1 -11,0 5.4999981,5.250001 0 1 1 11,0 z"
+ sodipodi:ry="5.250001"
+ sodipodi:rx="5.4999981"
+ sodipodi:cy="651.75"
+ sodipodi:cx="895.5"
+ id="path7219"
+ style="color:#000000;fill:#d36118;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ sodipodi:type="arc" />
+ <rect
+ y="-864.63782"
+ x="743.99878"
+ height="2"
+ width="5"
+ id="rect7223"
+ style="color:#000000;fill:url(#linearGradient54901) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <path
+ sodipodi:type="arc"
+ style="color:#000000;fill:#d36118;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="path7225"
+ sodipodi:cx="895.5"
+ sodipodi:cy="651.75"
+ sodipodi:rx="5.4999981"
+ sodipodi:ry="5.250001"
+ d="m 901,651.75 a 5.4999981,5.250001 0 1 1 -11,0 5.4999981,5.250001 0 1 1 11,0 z"
+ transform="matrix(0.181818,0,0,0.190476,578.181,-987.781)" />
+ <rect
+ y="-870.63782"
+ x="749.99878"
+ height="8.0000181"
+ width="8.0000057"
+ id="rect7149"
+ style="color:#000000;fill:#808080;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ style="color:#000000;fill:url(#linearGradient54896) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect7151"
+ width="6.0000048"
+ height="6.0000181"
+ x="750.99878"
+ y="-869.63782" />
+ <rect
+ y="-869.63782"
+ x="750.99878"
+ height="6.0000153"
+ width="6"
+ id="rect7155"
+ style="color:#000000;fill:url(#linearGradient54893) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <path
+ sodipodi:nodetypes="cccc"
+ id="path7171"
+ d="m 751.49879,-864.13779 1.5,-3 2,1 1.5,-3"
+ style="fill:none;stroke:url(#linearGradient54890) #000000;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1;display:inline"
+ inkscape:connector-curvature="0" />
+ <rect
+ y="-772.63782"
+ x="732.99878"
+ height="13.999998"
+ width="16.000008"
+ id="rect7488"
+ style="color:#000000;fill:#a33e03;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ ry="1.9999999"
+ rx="1.9999999" />
+ <rect
+ ry="0.99999988"
+ rx="0.99999988"
+ style="color:#000000;fill:url(#linearGradient54886) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect7490"
+ width="14"
+ height="12.000017"
+ x="733.99878"
+ y="-771.63782" />
+ <rect
+ ry="0.99999994"
+ rx="0.99999988"
+ style="color:#000000;fill:url(#linearGradient54883) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect7494"
+ width="14"
+ height="12.000017"
+ x="733.99878"
+ y="-771.63782" />
+ <rect
+ y="-769.63782"
+ x="735.99878"
+ height="2"
+ width="10"
+ id="rect7496"
+ style="color:#000000;fill:#d36118;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ style="color:#000000;fill:url(#linearGradient54879) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect7498"
+ width="7"
+ height="2"
+ x="738.99878"
+ y="-766.63782" />
+ <path
+ transform="matrix(0.181818,0,0,0.190476,574.181,-889.781)"
+ d="m 901,651.75 a 5.4999981,5.250001 0 1 1 -11,0 5.4999981,5.250001 0 1 1 11,0 z"
+ sodipodi:ry="5.250001"
+ sodipodi:rx="5.4999981"
+ sodipodi:cy="651.75"
+ sodipodi:cx="895.5"
+ id="path7500"
+ style="color:#000000;fill:#d36118;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ sodipodi:type="arc" />
+ <rect
+ y="-763.63782"
+ x="738.99878"
+ height="2"
+ width="7"
+ id="rect7536"
+ style="color:#000000;fill:url(#linearGradient54875) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <path
+ sodipodi:type="arc"
+ style="color:#000000;fill:#d36118;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="path7538"
+ sodipodi:cx="895.5"
+ sodipodi:cy="651.75"
+ sodipodi:rx="5.4999981"
+ sodipodi:ry="5.250001"
+ d="m 901,651.75 a 5.4999981,5.250001 0 1 1 -11,0 5.4999981,5.250001 0 1 1 11,0 z"
+ transform="matrix(0.181818,0,0,0.190476,574.181,-886.781)" />
+ <rect
+ style="color:#000000;fill:#fc5c00;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect7549"
+ width="16.000008"
+ height="13.999998"
+ x="732.99878"
+ y="-735.63782"
+ rx="1.9999996"
+ ry="1.9999999" />
+ <rect
+ y="-734.63782"
+ x="733.99878"
+ height="12.000017"
+ width="14"
+ id="rect7551"
+ style="color:#000000;fill:#622502;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ rx="0.99999988"
+ ry="0.99999988" />
+ <rect
+ style="color:#000000;fill:#fc5c00;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect7555"
+ width="10"
+ height="2"
+ x="735.99878"
+ y="-732.63782" />
+ <rect
+ y="-729.63782"
+ x="738.99878"
+ height="2"
+ width="7"
+ id="rect7557"
+ style="color:#000000;fill:#fc5c00;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ style="color:#000000;fill:#fc5c00;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect7561"
+ width="7"
+ height="2"
+ x="738.99878"
+ y="-726.63782" />
+ <rect
+ style="color:#000000;fill:#fc5c00;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect7573"
+ width="2.0000017"
+ height="2"
+ x="735.99878"
+ y="-729.63782" />
+ <rect
+ y="-726.63782"
+ x="735.99878"
+ height="2"
+ width="2.0000017"
+ id="rect7576"
+ style="color:#000000;fill:#fc5c00;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ ry="1.9999999"
+ rx="1.9999996"
+ y="-823.63782"
+ x="736.99878"
+ height="19.99999"
+ width="24.000011"
+ id="rect7582-4"
+ style="color:#000000;fill:#fc5c00;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ ry="0.99999988"
+ rx="0.99999994"
+ style="color:#000000;fill:#622502;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect7585-0"
+ width="22"
+ height="18.000017"
+ x="737.99878"
+ y="-822.63782" />
+ <rect
+ y="-820.63782"
+ x="739.99878"
+ height="2"
+ width="18"
+ id="rect7590-8"
+ style="color:#000000;fill:#fc5c00;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ style="color:#000000;fill:#fc5c00;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect7592-1"
+ width="14"
+ height="2"
+ x="743.99878"
+ y="-816.63782" />
+ <rect
+ y="-812.63782"
+ x="743.99878"
+ height="2"
+ width="14"
+ id="rect7596-0"
+ style="color:#000000;fill:#fc5c00;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ style="color:#000000;fill:#fc5c00;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect7600-4"
+ width="14"
+ height="2"
+ x="743.99878"
+ y="-808.63782" />
+ <rect
+ style="color:#000000;fill:#f9cfb5;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect4777"
+ width="8"
+ height="7"
+ x="728.99878"
+ y="-699.63782" />
+ <rect
+ y="-678.63782"
+ x="728.99878"
+ height="7"
+ width="8"
+ id="rect7733"
+ style="color:#000000;fill:#622502;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <g
+ style="fill:url(#linearGradient54152) #000000;fill-opacity:1"
+ id="g13999"
+ transform="translate(574.999,-1722)">
+ <g
+ id="g14296"
+ style="fill:url(#linearGradient54150) #000000">
+ <path
+ id="path20542-3-8-2"
+ d="m 154.03125,1022.375 0,0.4688 c -0.0119,1.9999 -0.0196,3.9999 -0.0312,6 l 0,0.5312 0.5,0 7,0 0.5,0 0,-0.5 c -6e-5,-1.9921 0,-4.0081 0,-6 l 0,-0.5 -0.5,0 c -2.32275,-0.012 -4.64771,0.01 -6.96875,0 l -0.5,0 z m 1,1 c 1.98885,0.01 3.98117,-0.01 5.96875,0 0,1.6599 -4e-5,3.3399 0,5 l -6,0 c 0.01,-1.6668 0.0214,-3.3334 0.0312,-5 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:url(#linearGradient54134) #000000;fill-opacity:1;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono"
+ inkscape:connector-curvature="0" />
+ <g
+ id="g13956"
+ style="fill:url(#linearGradient54148) #000000;fill-opacity:1">
+ <g
+ id="g13948"
+ style="fill:url(#linearGradient54144) #000000;fill-opacity:1">
+ <rect
+ y="1024.3622"
+ x="158"
+ height="1"
+ width="2"
+ id="rect13803"
+ style="color:#000000;fill:url(#linearGradient54136) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ style="color:#000000;fill:url(#linearGradient54138) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect13805"
+ width="2"
+ height="1"
+ x="158"
+ y="1026.3622" />
+ <rect
+ style="color:#000000;fill:url(#linearGradient54140) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect13815"
+ width="1"
+ height="1"
+ x="156"
+ y="1024.3622" />
+ <rect
+ y="1026.3622"
+ x="156"
+ height="1"
+ width="1"
+ id="rect13817"
+ style="color:#000000;fill:url(#linearGradient54142) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <g
+ id="g14026"
+ style="fill:#f09e6f"
+ transform="translate(3,0)">
+ <rect
+ style="color:#000000;fill:#f09e6f;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect14018"
+ width="1"
+ height="1"
+ x="157"
+ y="1024.3622" />
+ <rect
+ y="1026.3622"
+ x="157"
+ height="1"
+ width="1"
+ id="rect14022"
+ style="color:#000000;fill:#f09e6f;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ </g>
+ </g>
+ <g
+ transform="translate(20,20)"
+ id="g14154"
+ style="fill:url(#linearGradient54146) #000000;fill-opacity:1" />
+ </g>
+ </g>
+ </g>
+ <g
+ transform="translate(574.999,-1701)"
+ id="g7741"
+ style="fill:#fc5c00;fill-opacity:1">
+ <g
+ style="fill:#fc5c00"
+ id="g7743">
+ <path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:#fc5c00;fill-opacity:1;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono"
+ d="m 154.03125,1022.375 0,0.4688 c -0.0119,1.9999 -0.0196,3.9999 -0.0312,6 l 0,0.5312 0.5,0 7,0 0.5,0 0,-0.5 c -6e-5,-1.9921 0,-4.0081 0,-6 l 0,-0.5 -0.5,0 c -2.32275,-0.012 -4.64771,0.01 -6.96875,0 l -0.5,0 z m 1,1 c 1.98885,0.01 3.98117,-0.01 5.96875,0 0,1.6599 -4e-5,3.3399 0,5 l -6,0 c 0.01,-1.6668 0.0214,-3.3334 0.0312,-5 z"
+ id="path7745"
+ inkscape:connector-curvature="0" />
+ <g
+ style="fill:#fc5c00;fill-opacity:1"
+ id="g7747">
+ <g
+ style="fill:#fc5c00;fill-opacity:1"
+ id="g7749">
+ <rect
+ style="color:#000000;fill:#fc5c00;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect7751"
+ width="2"
+ height="1"
+ x="158"
+ y="1024.3622" />
+ <rect
+ y="1026.3622"
+ x="158"
+ height="1"
+ width="2"
+ id="rect7753"
+ style="color:#000000;fill:#fc5c00;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ y="1024.3622"
+ x="156"
+ height="1"
+ width="1"
+ id="rect7755"
+ style="color:#000000;fill:#fc5c00;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ style="color:#000000;fill:#fc5c00;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect7757"
+ width="1"
+ height="1"
+ x="156"
+ y="1026.3622" />
+ </g>
+ <g
+ style="fill:#fc5c00;fill-opacity:1"
+ id="g7765"
+ transform="translate(20,20)" />
+ </g>
+ </g>
+ </g>
+ <path
+ style="fill:none;stroke:url(#linearGradient54833) #000000;stroke-width:1px;stroke-linecap:square;stroke-linejoin:round;stroke-opacity:1"
+ d="m 3617.4988,-698.63789 0,-0.5 -5,0 -1,6.00007 -0.25,-2.99997 -0.75,0"
+ id="path6045"
+ sodipodi:nodetypes="cccccc"
+ inkscape:connector-curvature="0" />
+ <path
+ sodipodi:nodetypes="cc"
+ id="path6070"
+ d="m 3616.9988,-696.63779 -3,2.9999"
+ style="fill:none;stroke:url(#linearGradient54830) #000000;stroke-width:1px;stroke-linecap:square;stroke-linejoin:round;stroke-opacity:1"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:none;stroke:url(#linearGradient54827) #000000;stroke-width:1px;stroke-linecap:square;stroke-linejoin:round;stroke-opacity:1"
+ d="m 3613.9988,-696.63779 3,2.9999"
+ id="path6072"
+ sodipodi:nodetypes="cc"
+ inkscape:connector-curvature="0" />
+ <path
+ sodipodi:nodetypes="cccccc"
+ id="path8279"
+ d="m 3617.4988,-677.63789 0,-0.5 -5,0 -1,6.00007 -0.25,-2.99997 -0.75,0"
+ style="fill:none;stroke:#ffffff;stroke-width:1px;stroke-linecap:square;stroke-linejoin:round;stroke-opacity:1"
+ inkscape:connector-curvature="0" />
+ <path
+ sodipodi:nodetypes="cc"
+ id="path8281"
+ d="m 3613.9988,-675.63779 3,2.9999"
+ style="fill:none;stroke:#ffffff;stroke-width:1px;stroke-linecap:square;stroke-linejoin:round;stroke-opacity:1"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:none;stroke:#ffffff;stroke-width:1px;stroke-linecap:square;stroke-linejoin:round;stroke-opacity:1"
+ d="m 3616.9988,-675.63779 -3,2.9999"
+ id="path8287"
+ sodipodi:nodetypes="cc"
+ inkscape:connector-curvature="0" />
+ <rect
+ style="color:#000000;fill:url(#linearGradient54821) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect8291"
+ width="16"
+ height="14.000002"
+ x="3613.9988"
+ y="-772.63782" />
+ <rect
+ y="-759.63782"
+ x="3613.9988"
+ height="1"
+ width="16"
+ id="rect8297"
+ style="color:#000000;fill:#f09e6f;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ style="color:#000000;fill:#f09e6f;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect8377"
+ width="16"
+ height="1"
+ x="3613.9988"
+ y="-772.63782" />
+ <rect
+ y="-3614.9988"
+ x="-772.63782"
+ height="1"
+ width="14"
+ id="rect8379"
+ style="color:#000000;fill:#f09e6f;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ transform="matrix(0,1,-1,0,0,0)" />
+ <rect
+ transform="matrix(0,1,-1,0,0,0)"
+ style="color:#000000;fill:#f09e6f;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect8381"
+ width="14"
+ height="1"
+ x="-772.63782"
+ y="-3629.9988" />
+ <g
+ style="font-size:8px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;fill:url(#linearGradient8365) #000000;fill-opacity:1;stroke:none;display:inline;font-family:Vegur"
+ id="g8331"
+ transform="matrix(1.50411,0,0,1.50411,-1968.9,-1815.17)">
+ <path
+ d="m 3721.0651,694.44959 0,1.32969 -0.6648,0 0,-0.59836 -3.6568,0 -1.3962,5.91711 -0.9308,0 -1.3296,-3.32422 -0.6649,-10e-6 0,-0.66485 1.3297,2e-5 1.0637,2.65937 1.2633,-5.31876"
+ style="fill:url(#linearGradient8363) #000000;fill-opacity:1;font-family:Symbol"
+ id="path8333"
+ sodipodi:nodetypes="ccccccccccccc"
+ inkscape:connector-curvature="0" />
+ </g>
+ <path
+ sodipodi:nodetypes="cc"
+ id="path8383"
+ d="m 3626.9988,-766.13779 -5,5"
+ style="fill:none;stroke:url(#linearGradient54812) #000000;stroke-width:1.29999995;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:none;stroke:url(#linearGradient54809) #000000;stroke-width:1.29999995;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ d="m 3621.9988,-766.13779 5,5"
+ id="path8387"
+ sodipodi:nodetypes="cc"
+ inkscape:connector-curvature="0" />
+ <rect
+ y="-877.63782"
+ x="3617.9988"
+ height="22.000021"
+ width="24"
+ id="rect8463"
+ style="color:#000000;fill:url(#linearGradient54806) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ style="color:#000000;fill:#f09e6f;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect8465"
+ width="24"
+ height="1"
+ x="3617.9988"
+ y="-858.63782" />
+ <rect
+ y="-875.63782"
+ x="3617.9988"
+ height="1"
+ width="24"
+ id="rect8467"
+ style="color:#000000;fill:#f09e6f;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ transform="matrix(0,1,-1,0,0,0)"
+ style="color:#000000;fill:#f09e6f;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect8469"
+ width="22"
+ height="1"
+ x="-877.63782"
+ y="-3619.9988" />
+ <rect
+ y="-3640.9988"
+ x="-877.63782"
+ height="1"
+ width="22"
+ id="rect8471"
+ style="color:#000000;fill:#f09e6f;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ transform="matrix(0,1,-1,0,0,0)" />
+ <g
+ transform="matrix(1.50411,0,0,1.50411,-1963.9,-1914.17)"
+ id="g8473"
+ style="font-size:8px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;fill:url(#linearGradient8485) #000000;fill-opacity:1;stroke:none;display:inline;font-family:Vegur">
+ <path
+ sodipodi:nodetypes="ccccccccccccc"
+ id="path8475"
+ style="fill:url(#linearGradient8483) #000000;fill-opacity:1;font-family:Symbol"
+ d="m 3725.0541,691.79021 0,1.99453 -0.9972,0 0,-0.93078 -6.1831,0 -1.3962,8.24407 -1.5956,0 -1.3297,-4.18852 -0.7979,0 0,-1.13024 1.6622,2e-5 1.1634,3.32421 1.1635,-7.3133"
+ inkscape:connector-curvature="0" />
+ </g>
+ <path
+ style="fill:none;stroke:url(#linearGradient54797) #000000;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ d="m 3636.9988,-867.63779 -7,7"
+ id="path8477"
+ sodipodi:nodetypes="cc"
+ inkscape:connector-curvature="0" />
+ <path
+ sodipodi:nodetypes="cc"
+ id="path8479"
+ d="m 3629.9988,-867.63779 7,7"
+ style="fill:none;stroke:url(#linearGradient54794) #000000;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ inkscape:connector-curvature="0" />
+ <rect
+ y="-735.63782"
+ x="3613.9988"
+ height="14.000002"
+ width="16"
+ id="rect8491"
+ style="color:#000000;fill:#333333;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <g
+ transform="matrix(1.50411,0,0,1.50411,-1968.9,-1778.17)"
+ id="g8501"
+ style="font-size:8px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;fill:#ffffff;fill-opacity:1;stroke:none;display:inline;font-family:Vegur">
+ <path
+ sodipodi:nodetypes="ccccccccccccc"
+ id="path8503"
+ style="fill:#ffffff;fill-opacity:1;font-family:Symbol"
+ d="m 3721.0651,694.44959 0,1.32969 -0.6648,0 0,-0.59836 -3.6568,0 -1.3962,5.91711 -0.9308,0 -1.3296,-3.32422 -0.6649,-10e-6 0,-0.66485 1.3297,2e-5 1.0637,2.65937 1.2633,-5.31876"
+ inkscape:connector-curvature="0" />
+ </g>
+ <rect
+ style="color:#000000;fill:#333333;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect8605-9"
+ width="24"
+ height="22.000021"
+ x="3617.9988"
+ y="-824.63782" />
+ <rect
+ y="-803.63782"
+ x="3617.9988"
+ height="1"
+ width="24"
+ id="rect8607-5"
+ style="color:#000000;fill:#808080;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ style="color:#000000;fill:#808080;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect8609-7"
+ width="24"
+ height="1"
+ x="3617.9988"
+ y="-824.63782" />
+ <rect
+ y="-3618.9988"
+ x="-824.63782"
+ height="1"
+ width="22"
+ id="rect8611-2"
+ style="color:#000000;fill:#808080;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ transform="matrix(0,1,-1,0,0,0)" />
+ <rect
+ transform="matrix(0,1,-1,0,0,0)"
+ style="color:#000000;fill:#808080;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect8613-2"
+ width="22"
+ height="1"
+ x="-824.63782"
+ y="-3641.9988" />
+ <path
+ sodipodi:nodetypes="cc"
+ id="path8619-5"
+ d="m 3636.9988,-814.63779 -7,7"
+ style="fill:none;stroke:#ffffff;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:#ffffff;stroke:#ffffff;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ d="m 3629.9988,-814.63779 7,7"
+ id="path8621-0"
+ sodipodi:nodetypes="cc"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:none;stroke:#ffffff;stroke-width:1.29999995;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ d="m 3626.9988,-729.13779 -5,5"
+ id="path8633"
+ sodipodi:nodetypes="cc"
+ inkscape:connector-curvature="0" />
+ <path
+ sodipodi:nodetypes="cc"
+ id="path8635"
+ d="m 3621.9988,-729.13779 5,5"
+ style="fill:none;stroke:#ffffff;stroke-width:1.29999995;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ inkscape:connector-curvature="0" />
+ <g
+ style="font-size:8px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;fill:#ffffff;fill-opacity:1;stroke:none;display:inline;font-family:Vegur"
+ id="g8641-9"
+ transform="matrix(1.50411,0,0,1.50411,-1963.9,-1861.17)">
+ <path
+ d="m 3725.0541,691.79021 0,1.99453 -0.9972,0 0,-0.93078 -6.1831,0 -1.3962,8.24407 -1.5956,0 -1.3297,-4.18852 -0.7979,0 0,-1.13024 1.6622,2e-5 1.1634,3.32421 1.1635,-7.3133"
+ style="fill:#ffffff;fill-opacity:1;font-family:Symbol"
+ id="path8643-6"
+ sodipodi:nodetypes="ccccccccccccc"
+ inkscape:connector-curvature="0" />
+ </g>
+ <rect
+ y="-816.63782"
+ x="739.99878"
+ height="2"
+ width="2"
+ id="rect8674-3"
+ style="color:#000000;fill:#fc5c00;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ style="color:#000000;fill:#fc5c00;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect8676-4"
+ width="2"
+ height="2"
+ x="739.99878"
+ y="-812.63782" />
+ <rect
+ y="-808.63782"
+ x="739.99878"
+ height="2"
+ width="2"
+ id="rect8678-8"
+ style="color:#000000;fill:#fc5c00;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#path7205"
+ id="use10311"
+ transform="translate(1571,0)"
+ width="5033"
+ height="1085"
+ style="opacity:0.75" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#path7207"
+ id="use10313"
+ transform="translate(1571,0)"
+ width="5033"
+ height="1085"
+ style="opacity:0.75" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect7123"
+ id="use10315"
+ transform="translate(1571,0)"
+ width="5033"
+ height="1085"
+ style="opacity:0.75" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect7125"
+ id="use10317"
+ transform="translate(1571,0)"
+ width="5033"
+ height="1085"
+ style="opacity:0.75" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#path7213"
+ id="use10319"
+ transform="translate(1571,0)"
+ width="5033"
+ height="1085"
+ style="opacity:0.75" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect7201"
+ id="use10321"
+ transform="translate(1571,0)"
+ width="5033"
+ height="1085"
+ style="opacity:0.75" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect7147"
+ id="use10323"
+ transform="translate(1571,0)"
+ width="5033"
+ height="1085"
+ style="opacity:0.75" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect7133"
+ id="use10325"
+ transform="translate(1571,0)"
+ width="5033"
+ height="1085"
+ style="opacity:0.75" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#path7139"
+ id="use10327"
+ transform="translate(1571,0)"
+ width="5033"
+ height="1085"
+ style="opacity:0.75" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect7217"
+ id="use10329"
+ transform="translate(1571,0)"
+ width="5033"
+ height="1085"
+ style="opacity:0.75" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#path7219"
+ id="use10331"
+ transform="translate(1571,0)"
+ width="5033"
+ height="1085"
+ style="opacity:0.75" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect7223"
+ id="use10333"
+ transform="translate(1571,0)"
+ width="5033"
+ height="1085"
+ style="opacity:0.75" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#path7225"
+ id="use10335"
+ transform="translate(1571,0)"
+ width="5033"
+ height="1085"
+ style="opacity:0.75" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect7149"
+ id="use10337"
+ transform="translate(1571,0)"
+ width="5033"
+ height="1085"
+ style="opacity:0.75" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect7151"
+ id="use10339"
+ transform="translate(1571,0)"
+ width="5033"
+ height="1085"
+ style="opacity:0.75" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect7155"
+ id="use10341"
+ transform="translate(1571,0)"
+ width="5033"
+ height="1085"
+ style="opacity:0.75" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#path7171"
+ id="use10343"
+ transform="translate(1571,0)"
+ width="5033"
+ height="1085"
+ style="opacity:0.75" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect7488"
+ id="use10345"
+ transform="translate(1571,0)"
+ width="5033"
+ height="1085"
+ style="opacity:0.75" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect7490"
+ id="use10347"
+ transform="translate(1571,0)"
+ width="5033"
+ height="1085"
+ style="opacity:0.75" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect7494"
+ id="use10349"
+ transform="translate(1571,0)"
+ width="5033"
+ height="1085"
+ style="opacity:0.75" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect7496"
+ id="use10351"
+ transform="translate(1571,0)"
+ width="5033"
+ height="1085"
+ style="opacity:0.75" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect7498"
+ id="use10353"
+ transform="translate(1571,0)"
+ width="5033"
+ height="1085"
+ style="opacity:0.75" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#path7500"
+ id="use10355"
+ transform="translate(1571,0)"
+ width="5033"
+ height="1085"
+ style="opacity:0.75" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect7536"
+ id="use10357"
+ transform="translate(1571,0)"
+ width="5033"
+ height="1085"
+ style="opacity:0.75" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#path7538"
+ id="use10359"
+ transform="translate(1571,0)"
+ width="5033"
+ height="1085"
+ style="opacity:0.75" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect7549"
+ id="use10361"
+ transform="translate(1571,0)"
+ width="5033"
+ height="1085"
+ style="opacity:0.75" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect7551"
+ id="use10363"
+ transform="translate(1571,0)"
+ width="5033"
+ height="1085"
+ style="opacity:0.75" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect7555"
+ id="use10365"
+ transform="translate(1571,0)"
+ width="5033"
+ height="1085"
+ style="opacity:0.75" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect7557"
+ id="use10367"
+ transform="translate(1571,0)"
+ width="5033"
+ height="1085"
+ style="opacity:0.75" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect7561"
+ id="use10369"
+ transform="translate(1571,0)"
+ width="5033"
+ height="1085"
+ style="opacity:0.75" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect7573"
+ id="use10371"
+ transform="translate(1571,0)"
+ width="5033"
+ height="1085"
+ style="opacity:0.75" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect7576"
+ id="use10373"
+ transform="translate(1571,0)"
+ width="5033"
+ height="1085"
+ style="opacity:0.75" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect7582-4"
+ id="use10375-6"
+ transform="translate(1573,0)"
+ width="5033"
+ height="1085"
+ style="opacity:0.75" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect7585-0"
+ id="use10377-3"
+ transform="translate(1573,0)"
+ width="5033"
+ height="1085"
+ style="opacity:0.75" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect7590-8"
+ id="use10379-6"
+ transform="translate(1573,0)"
+ width="5033"
+ height="1085"
+ style="opacity:0.75" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect7592-1"
+ id="use10381-5"
+ transform="translate(1573,0)"
+ width="5033"
+ height="1085"
+ style="opacity:0.75" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect7596-0"
+ id="use10383-7"
+ transform="translate(1573,0)"
+ width="5033"
+ height="1085"
+ style="opacity:0.75" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect7600-4"
+ id="use10385-5"
+ transform="translate(1573,0)"
+ width="5033"
+ height="1085"
+ style="opacity:0.75" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect4777"
+ id="use10387"
+ transform="translate(1571,0)"
+ width="5033"
+ height="1085"
+ style="opacity:0.89600004" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect7733"
+ id="use10389"
+ transform="translate(1571,0)"
+ width="5033"
+ height="1085"
+ style="opacity:0.89600004" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#g13999"
+ id="use10391"
+ transform="translate(1571,0)"
+ width="5033"
+ height="1085"
+ style="opacity:0.89600004" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#g7741"
+ id="use10393"
+ transform="translate(1571,0)"
+ width="5033"
+ height="1085"
+ style="opacity:0.89600004" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect8674-3"
+ id="use10395-2"
+ transform="translate(1573,0)"
+ width="5033"
+ height="1085"
+ style="opacity:0.75" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect8676-4"
+ id="use10397-1"
+ transform="translate(1573,0)"
+ width="5033"
+ height="1085"
+ style="opacity:0.75" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect8678-8"
+ id="use10399-0"
+ transform="translate(1573,0)"
+ width="5033"
+ height="1085"
+ style="opacity:0.75" />
+ <rect
+ y="-859.63782"
+ x="746.99878"
+ height="1.0000274"
+ width="4"
+ id="rect8672"
+ style="color:#000000;fill:#808080;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.29999995;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect8672"
+ id="use10443"
+ transform="translate(1571,0)"
+ width="5033"
+ height="1085"
+ style="opacity:0.75" />
+ <g
+ id="g12758"
+ transform="translate(-0.00120978,9.9e-6)">
+ <path
+ sodipodi:nodetypes="cccc"
+ d="m 997.5,-698.1378 -5.5,5 5.5,0 0,-5 z"
+ style="fill:#e9b913;stroke:#e9b913;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1"
+ id="path12760"
+ inkscape:connector-curvature="0" />
+ <path
+ id="path10642"
+ d="m 997.34375,-698.625 a 0.50005,0.50005 0 0 0 -0.1875,0.125 l -5.5,5 A 0.50005,0.50005 0 0 0 992,-692.625 l 5.5,0 a 0.50005,0.50005 0 0 0 0.5,-0.5 l 0,-5 a 0.50005,0.50005 0 0 0 -0.65625,-0.5 z M 997,-697 l 0,3.375 -3.71875,0 L 997,-697 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:url(#linearGradient54154) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono"
+ inkscape:connector-curvature="0" />
+ <path
+ sodipodi:open="true"
+ sodipodi:end="5.7595865"
+ sodipodi:start="2.3561945"
+ transform="matrix(1.05634,-0.0723819,0.0723819,1.05634,-261.636,-1731.79)"
+ d="m 1113.6781,1058.0121 a 2.3685112,2.3685112 0 1 1 3.726,-2.8591"
+ sodipodi:ry="2.3685112"
+ sodipodi:rx="2.3685112"
+ sodipodi:cy="1056.3373"
+ sodipodi:cx="1115.3529"
+ id="path10667"
+ style="color:#000000;fill:#f09e6f;fill-opacity:1;fill-rule:nonzero;stroke:#a33e03;stroke-width:0.94444901;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible"
+ sodipodi:type="arc" />
+ </g>
+ <g
+ id="g12743"
+ transform="translate(-0.00120978,9.9e-6)">
+ <path
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="path12513.png"
+ transform="matrix(0.272727,0,0,0.272727,675.955,-951.865)"
+ d="m 1201,675.5 a 16.5,16.5 0 1 1 -33,0 16.5,16.5 0 1 1 33,0 z"
+ sodipodi:ry="16.5"
+ sodipodi:rx="16.5"
+ sodipodi:cy="675.5"
+ sodipodi:cx="1184.5"
+ id="path12572"
+ style="color:#000000;fill:url(#linearGradient54156) #000000;fill-opacity:1;fill-rule:nonzero;stroke:#a33e03;stroke-width:3.66666007;marker:none;visibility:visible;display:inline;overflow:visible"
+ sodipodi:type="arc" />
+ <path
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="path12513.png"
+ sodipodi:type="arc"
+ style="opacity:0.6;color:#000000;fill:#f09e6f;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.94117999;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="path12574"
+ sodipodi:cx="1184.5"
+ sodipodi:cy="675.5"
+ sodipodi:rx="16.5"
+ sodipodi:ry="16.5"
+ d="m 1201,675.5 a 16.5,16.5 0 1 1 -33,0 16.5,16.5 0 1 1 33,0 z"
+ transform="matrix(0.181818,0,0,0.181818,783.636,-890.456)" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="path12513.png"
+ transform="scale(1,-1)"
+ y="763.13782"
+ x="1002.5"
+ height="5.9999828"
+ width="7.0000014"
+ id="rect12576"
+ style="color:#000000;fill:#c99c00;fill-opacity:1;fill-rule:nonzero;stroke:#876900;stroke-width:0.99999899;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <path
+ style="color:#000000;fill:url(#linearGradient54158) #000000;fill-opacity:1;fill-rule:nonzero;stroke:#876900;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible"
+ d="m 1005.5,-760.13778 -11,0 5,-9 6,9 z"
+ id="path12580"
+ sodipodi:nodetypes="cccc"
+ inkscape:connector-curvature="0" />
+ <path
+ style="opacity:0.6;color:#000000;fill:#f5ce53;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.85005301;marker:none;visibility:visible;display:inline;overflow:visible"
+ d="m 1003,-761.6378 -6,0 2.5,-5 3.5,5 z"
+ id="path12584"
+ sodipodi:nodetypes="cccc"
+ inkscape:connector-curvature="0" />
+ <rect
+ style="opacity:0.75;color:#000000;fill:#92e285;fill-opacity:1;fill-rule:nonzero;stroke:#18a303;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect12598"
+ width="2"
+ height="2"
+ x="998.5"
+ y="-769.13782"
+ inkscape:export-filename="path12513.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="path12513.png"
+ y="-761.13782"
+ x="1003.5"
+ height="2"
+ width="2"
+ id="rect12600"
+ style="opacity:0.75;color:#000000;fill:#92e285;fill-opacity:1;fill-rule:nonzero;stroke:#18a303;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ style="opacity:0.75;color:#000000;fill:#92e285;fill-opacity:1;fill-rule:nonzero;stroke:#18a303;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect12602"
+ width="2"
+ height="2"
+ x="994.5"
+ y="-761.13782"
+ inkscape:export-filename="path12513.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ </g>
+ <g
+ id="g12715"
+ transform="translate(-0.00120978,9.9e-6)">
+ <path
+ sodipodi:type="arc"
+ style="color:#000000;fill:url(#linearGradient54160) #000000;fill-opacity:1;fill-rule:nonzero;stroke:#a33e03;stroke-width:2.35714006;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="path12515"
+ sodipodi:cx="1184.5"
+ sodipodi:cy="675.5"
+ sodipodi:rx="16.5"
+ sodipodi:ry="16.5"
+ d="m 1201,675.5 a 16.5,16.5 0 1 1 -33,0 16.5,16.5 0 1 1 33,0 z"
+ transform="matrix(0.424242,0,0,0.424242,502.985,-1156.71)"
+ inkscape:export-filename="path12513.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ <path
+ transform="matrix(0.333333,0,0,0.333333,610.667,-1095.3)"
+ d="m 1201,675.5 a 16.5,16.5 0 1 1 -33,0 16.5,16.5 0 1 1 33,0 z"
+ sodipodi:ry="16.5"
+ sodipodi:rx="16.5"
+ sodipodi:cy="675.5"
+ sodipodi:cx="1184.5"
+ id="path12517"
+ style="opacity:0.6;color:#000000;fill:#f09e6f;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.94117999;marker:none;visibility:visible;display:inline;overflow:visible"
+ sodipodi:type="arc"
+ inkscape:export-filename="path12513.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ <rect
+ style="color:#000000;fill:url(#linearGradient54162) #000000;fill-opacity:1;fill-rule:nonzero;stroke:#876900;stroke-width:0.99999899;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect12519"
+ width="11.000001"
+ height="11.000001"
+ x="1010.5"
+ y="862.13782"
+ transform="scale(1,-1)"
+ inkscape:export-filename="path12513.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ <rect
+ y="-871.63782"
+ x="1012"
+ height="8.0000019"
+ width="8.000001"
+ id="rect12521"
+ style="opacity:0.6;color:#000000;fill:#c99c00;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible"
+ inkscape:export-filename="path12513.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ <path
+ sodipodi:nodetypes="cccc"
+ id="path12523"
+ d="m 1015.5,-857.1378 -15.99999,0 7.99999,-13 8,13 z"
+ style="color:#000000;fill:url(#linearGradient54164) #000000;fill-opacity:1;fill-rule:nonzero;stroke:#c99c00;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible"
+ inkscape:connector-curvature="0" />
+ <rect
+ style="opacity:0.75;color:#000000;fill:#92e285;fill-opacity:1;fill-rule:nonzero;stroke:#18a303;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect12529"
+ width="2"
+ height="2"
+ x="998.5"
+ y="-858.13782"
+ inkscape:export-filename="path12513.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ <path
+ sodipodi:nodetypes="cccc"
+ id="path12531"
+ d="m 1013.3309,-858.1378 -11.6618,0 5.8309,-9.5 5.8309,9.5 z"
+ style="opacity:0.6;color:#000000;fill:#f5ce53;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.85005301;marker:none;visibility:visible;display:inline;overflow:visible"
+ inkscape:connector-curvature="0" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="path12513.png"
+ y="-858.13782"
+ x="1014.5"
+ height="2"
+ width="2"
+ id="rect12566"
+ style="opacity:0.75;color:#000000;fill:#92e285;fill-opacity:1;fill-rule:nonzero;stroke:#18a303;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ style="opacity:0.75;color:#000000;fill:#92e285;fill-opacity:1;fill-rule:nonzero;stroke:#18a303;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect12568"
+ width="2"
+ height="2"
+ x="1006.5"
+ y="-871.13782"
+ inkscape:export-filename="path12513.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ <path
+ sodipodi:nodetypes="cccccc"
+ id="rect12622"
+ d="m 1012.43,862.1378 9.07,2e-5 0,11 -11,0 0.07,-8 1.86,-3.00002 z"
+ style="color:#000000;fill:none;stroke:#876900;stroke-width:0.99999899;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible"
+ transform="scale(1,-1)"
+ inkscape:connector-curvature="0" />
+ </g>
+ <g
+ id="g12764"
+ transform="translate(-0.00120978,9.9e-6)">
+ <path
+ id="path12627"
+ style="fill:#876900;stroke:#e9b913;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1"
+ d="m 997.5,-677.1378 -5.5,5 5.5,0 0,-5 z"
+ sodipodi:nodetypes="cccc"
+ inkscape:connector-curvature="0" />
+ <path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:#ffd74c;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono"
+ d="m 997.3437,-677.625 a 0.50005,0.50005 0 0 0 -0.1875,0.125 l -5.5,5 a 0.50005,0.50005 0 0 0 0.3438,0.875 l 5.5,0 a 0.50005,0.50005 0 0 0 0.5,-0.5 l 0,-5 a 0.50005,0.50005 0 0 0 -0.6563,-0.5 z M 997,-676 l 0,3.375 -3.7188,0 L 997,-676 z"
+ id="path12629"
+ inkscape:connector-curvature="0" />
+ <path
+ sodipodi:type="arc"
+ style="color:#000000;fill:#622502;fill-opacity:1;fill-rule:nonzero;stroke:#fc5c00;stroke-width:0.94444901;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="path12631"
+ sodipodi:cx="1115.3529"
+ sodipodi:cy="1056.3373"
+ sodipodi:rx="2.3685112"
+ sodipodi:ry="2.3685112"
+ d="m 1113.6781,1058.0121 a 2.3685112,2.3685112 0 1 1 3.726,-2.8591"
+ transform="matrix(1.05634,-0.0723819,0.0723819,1.05634,-261.636,-1710.79)"
+ sodipodi:start="2.3561945"
+ sodipodi:end="5.7595865"
+ sodipodi:open="true" />
+ </g>
+ <g
+ id="g12753"
+ transform="translate(-0.00120978,9.9e-6)">
+ <path
+ sodipodi:type="arc"
+ style="color:#000000;fill:#a33e03;fill-opacity:1;fill-rule:nonzero;stroke:#fc5c00;stroke-width:3.66666007;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="path12655"
+ sodipodi:cx="1184.5"
+ sodipodi:cy="675.5"
+ sodipodi:rx="16.5"
+ sodipodi:ry="16.5"
+ d="m 1201,675.5 a 16.5,16.5 0 1 1 -33,0 16.5,16.5 0 1 1 33,0 z"
+ transform="matrix(0.272727,0,0,0.272727,675.955,-914.865)"
+ inkscape:export-filename="path12513.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ <rect
+ style="color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#876900;stroke-width:0.99999899;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect12659"
+ width="7.0000014"
+ height="5.9999828"
+ x="1002.5"
+ y="726.13782"
+ transform="scale(1,-1)"
+ inkscape:export-filename="path12513.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ <path
+ sodipodi:nodetypes="cccc"
+ id="path12661"
+ d="m 1005.5,-722.13778 -11,0 5,-9 6,9 z"
+ style="color:#000000;fill:#876900;fill-opacity:1;fill-rule:nonzero;stroke:#ffd74c;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible"
+ inkscape:connector-curvature="0" />
+ </g>
+ <g
+ id="g12727-7"
+ transform="translate(-0.00120978,9.9e-6)">
+ <path
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="path12513.png"
+ transform="matrix(0.424242,0,0,0.424242,502.985,-1103.71)"
+ d="m 1201,675.5 a 16.5,16.5 0 1 1 -33,0 16.5,16.5 0 1 1 33,0 z"
+ sodipodi:ry="16.5"
+ sodipodi:rx="16.5"
+ sodipodi:cy="675.5"
+ sodipodi:cx="1184.5"
+ id="path12677-0"
+ style="color:#000000;fill:#622502;fill-opacity:1;fill-rule:nonzero;stroke:#fc5c00;stroke-width:2.35714006;marker:none;visibility:visible;display:inline;overflow:visible"
+ sodipodi:type="arc" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="path12513.png"
+ transform="scale(1,-1)"
+ y="809.13782"
+ x="1010.5"
+ height="11.000001"
+ width="11.000001"
+ id="rect12681-8"
+ style="color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#876900;stroke-width:0.99999899;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <path
+ style="color:#000000;fill:#876900;fill-opacity:1;fill-rule:nonzero;stroke:#ffd74c;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible"
+ d="m 1015.5,-804.1378 -15.99999,0 7.99999,-13 8,13 z"
+ id="path12685-2"
+ sodipodi:nodetypes="cccc"
+ inkscape:connector-curvature="0" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="path12513.png"
+ y="-805.13782"
+ x="998.5"
+ height="2"
+ width="2"
+ id="rect12687-5"
+ style="color:#000000;fill:#2cee0e;fill-opacity:1;fill-rule:nonzero;stroke:#2cee0e;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ style="color:#000000;fill:#2cee0e;fill-opacity:1;fill-rule:nonzero;stroke:#2cee0e;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect12691-1"
+ width="2"
+ height="2"
+ x="1014.5"
+ y="-805.13782"
+ inkscape:export-filename="path12513.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="path12513.png"
+ y="-818.13782"
+ x="1006.5"
+ height="2"
+ width="2"
+ id="rect12693-0"
+ style="color:#000000;fill:#2cee0e;fill-opacity:1;fill-rule:nonzero;stroke:#2cee0e;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible" />
+ </g>
+ <use
+ x="0"
+ y="0"
+ xlink:href="#g12758"
+ id="use12769"
+ transform="translate(1571,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#g12743"
+ id="use12771"
+ transform="translate(1571,0)"
+ width="5033"
+ height="1085"
+ style="opacity:0.75" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#g12715"
+ id="use12775"
+ transform="translate(1571,0)"
+ width="5033"
+ height="1085"
+ style="opacity:0.75" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#g12764"
+ id="use12777"
+ transform="translate(1571,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#g12753"
+ id="use12779"
+ transform="translate(1571,0)"
+ width="5033"
+ height="1085"
+ style="opacity:0.75" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#g12727-7"
+ id="use12781-8"
+ transform="translate(1571,0)"
+ width="5033"
+ height="1085"
+ style="opacity:0.75" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#g28903"
+ id="use28907"
+ transform="translate(1571,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#g28891"
+ id="use28909"
+ transform="translate(1571,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#g28858-3"
+ id="use28911-1"
+ transform="translate(1571,0)"
+ width="5033"
+ height="1085" />
+ <path
+ style="color:#000000;fill:#2cee0e;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.75;marker:none;visibility:visible;display:inline;overflow:visible"
+ d="m 4397.9988,-674.63779 2,0 0,-4 4,0 0,4 2,0 -4,3.17448 -4,-3.17448 z"
+ id="path10307"
+ sodipodi:nodetypes="cccccccc"
+ inkscape:connector-curvature="0" />
+ <g
+ transform="translate(-1.00121,0.0022249)"
+ style="display:inline"
+ id="g20517">
+ <rect
+ y="-877.64001"
+ x="4141"
+ height="2"
+ width="6"
+ id="rect19547-1-7-5-6"
+ style="color:#000000;fill:url(#linearGradient13552) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ y="-877.64001"
+ x="4149"
+ height="2"
+ width="12"
+ id="rect19547-1-7-1-1-41"
+ style="color:#000000;fill:#18a303;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ y="-869.64001"
+ x="4149"
+ height="2"
+ width="8"
+ id="rect19547-1-7-1-1-8-5"
+ style="color:#000000;fill:#18a303;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ y="-873.64001"
+ x="4153"
+ height="2"
+ width="4"
+ id="rect19547-1-7-4-2-0-10"
+ style="color:#000000;fill:url(#linearGradient11801-7) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ y="-861.64001"
+ x="4159"
+ height="2"
+ width="4"
+ id="rect19547-1-7-4-2-0-3-1"
+ style="color:#000000;fill:#18a303;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ y="-861.64001"
+ x="4147"
+ height="2"
+ width="8"
+ id="rect19545-9-2-4"
+ style="color:#000000;fill:url(#linearGradient11886-3) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ y="-873.64001"
+ x="4141"
+ height="2"
+ width="6"
+ id="rect19545-9-2-6-1-2"
+ style="color:#000000;fill:url(#linearGradient11988-159) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ y="-873.64001"
+ x="4149"
+ height="2"
+ width="2"
+ id="rect19547-1-7-4-2-0-3-4-8"
+ style="color:#000000;fill:#18a303;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ y="-869.64001"
+ x="4159"
+ height="2"
+ width="6"
+ id="rect19547-1-7-4-2-4-9-1"
+ style="color:#000000;fill:#a33e03;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ y="-869.64221"
+ x="4159"
+ height="2"
+ width="2"
+ id="rect19547-1-7-4-2-0-1-5-9"
+ style="color:#000000;fill:url(#linearGradient12179-6) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ y="-865.64001"
+ x="4145"
+ height="2"
+ width="8"
+ id="rect19547-1-7-1-1-8-4-3"
+ style="color:#000000;fill:#18a303;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ y="-865.64001"
+ x="4159"
+ height="2"
+ width="2"
+ id="rect19547-1-7-4-2-0-1-5-5-86"
+ style="color:#000000;fill:url(#linearGradient12179-3-1) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ y="-857.64001"
+ x="4147"
+ height="2"
+ width="12"
+ id="rect19547-1-7-1-1-41-7"
+ style="color:#000000;fill:#18a303;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ y="-865.64001"
+ x="4155"
+ height="2"
+ width="4"
+ id="rect19547-1-7-4-2-0-10-7"
+ style="color:#000000;fill:url(#linearGradient13779) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ y="-857.64001"
+ x="4141"
+ height="2"
+ width="4"
+ id="rect19547-1-7-4-2-0-3-1-9"
+ style="color:#000000;fill:url(#linearGradient13683-9) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ y="-861.64001"
+ x="4141"
+ height="2"
+ width="4"
+ id="rect19547-1-7-4-2-0-3-1-9-4"
+ style="color:#000000;fill:url(#linearGradient20606) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <g
+ style="color:#000000;fill:url(#linearGradient21568-4-5) #000000;fill-opacity:1;fill-rule:nonzero;stroke:#e6e6e6;stroke-width:2.14590001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="g35932-5"
+ transform="matrix(0.466006,0,0,0.466006,2139.27,-1180.46)">
+ <path
+ id="path4580-5-7-0-5-6-2-8"
+ d="m 4318.1728,654.58023 c -2.9763,0.93246 -5.6684,2.50704 -7.9091,4.56747 l 2.9413,6.69304 c -0.7963,1.02254 -1.4517,2.15793 -1.9476,3.37617 l -7.2714,0.79584 c -0.3265,1.46963 -0.4993,2.99956 -0.4993,4.56748 0,1.56836 0.1726,3.09766 0.4993,4.56747 l 7.2714,0.79585 c 0.4959,1.21824 1.1513,2.35363 1.9476,3.37618 l -2.9413,6.69303 c 2.2406,2.05891 4.9332,3.63523 7.9091,4.56747 l 4.3253,-5.89719 c 0.6364,0.087 1.2873,0.13347 1.9476,0.13347 0.6603,0 1.3111,-0.0464 1.9476,-0.13347 l 4.3253,5.89719 c 2.9763,-0.93247 5.6683,-2.50704 7.9089,-4.56747 l -2.9411,-6.69303 c 0.7962,-1.02255 1.4516,-2.15794 1.9476,-3.37618 l 7.2713,-0.79585 c 0.3265,-1.46962 0.4993,-2.99956 0.4993,-4.56747 0,-1.56792 -0.1727,-3.09785 -0.4993,-4.56748 l -7.2713,-0.79584 c -0.496,-1.21824 -1.1514,-2.35363 -1.9476,-3.37617 l 2.9411,-6.69304 c -2.2406,-2.06043 -4.9326,-3.63501 -7.9089,-4.56747 l -4.3253,5.89718 c -0.6365,-0.087 -1.2873,-0.13346 -1.9476,-0.13346 -0.6603,0 -1.3112,0.0464 -1.9476,0.13346 l -4.3253,-5.89718 z m 6.2729,14.54275 c 3.014,0 5.4572,2.4433 5.4572,5.45725 0,3.01395 -2.4432,5.45724 -5.4572,5.45724 -3.014,0 -5.4572,-2.44329 -5.4572,-5.45724 0,-3.01395 2.4432,-5.45725 5.4572,-5.45725 z"
+ style="color:#000000;fill:url(#linearGradient72246) #000000;fill-opacity:1;fill-rule:nonzero;stroke:#e6e6e6;stroke-width:2.14590001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible"
+ inkscape:connector-curvature="0" />
+ <path
+ id="path4580-5-7-0-5-6-1-9"
+ d="m 4318.1728,654.58023 c -2.9763,0.93246 -5.6684,2.50704 -7.9091,4.56747 l 2.9413,6.69304 c -0.7963,1.02254 -1.4517,2.15793 -1.9476,3.37617 l -7.2714,0.79584 c -0.3265,1.46963 -0.4993,2.99956 -0.4993,4.56748 0,1.56836 0.1726,3.09766 0.4993,4.56747 l 7.2714,0.79585 c 0.4959,1.21824 1.1513,2.35363 1.9476,3.37618 l -2.9413,6.69303 c 2.2406,2.05891 4.9332,3.63523 7.9091,4.56747 l 4.3253,-5.89719 c 0.6364,0.087 1.2873,0.13347 1.9476,0.13347 0.6603,0 1.3111,-0.0464 1.9476,-0.13347 l 4.3253,5.89719 c 2.9763,-0.93247 5.6683,-2.50704 7.9089,-4.56747 l -2.9411,-6.69303 c 0.7962,-1.02255 1.4516,-2.15794 1.9476,-3.37618 l 7.2713,-0.79585 c 0.3265,-1.46962 0.4993,-2.99956 0.4993,-4.56747 0,-1.56792 -0.1727,-3.09785 -0.4993,-4.56748 l -7.2713,-0.79584 c -0.496,-1.21824 -1.1514,-2.35363 -1.9476,-3.37617 l 2.9411,-6.69304 c -2.2406,-2.06043 -4.9326,-3.63501 -7.9089,-4.56747 l -4.3253,5.89718 c -0.6365,-0.087 -1.2873,-0.13346 -1.9476,-0.13346 -0.6603,0 -1.3112,0.0464 -1.9476,0.13346 l -4.3253,-5.89718 z m 6.2729,14.54275 c 3.014,0 5.4572,2.4433 5.4572,5.45725 0,3.01395 -2.4432,5.45724 -5.4572,5.45724 -3.014,0 -5.4572,-2.44329 -5.4572,-5.45724 0,-3.01395 2.4432,-5.45725 5.4572,-5.45725 z"
+ style="color:#000000;fill:url(#linearGradient72228) #000000;fill-opacity:1;fill-rule:nonzero;stroke:#e6e6e6;stroke-width:2.14590001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible"
+ inkscape:connector-curvature="0" />
+ </g>
+ </g>
+ <rect
+ y="-675.63782"
+ x="3870.9988"
+ height="3.9999483"
+ width="2"
+ id="rect22585"
+ style="color:#000000;fill:#00a0fc;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ style="color:#000000;fill:#ffd74c;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect22591"
+ width="2"
+ height="3.9999826"
+ x="3876.9988"
+ y="-675.63782" />
+ <rect
+ style="color:#000000;fill:#f5ce53;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect8160"
+ width="1"
+ height="1.9999826"
+ x="3874.9988"
+ y="-695.63782" />
+ <rect
+ y="-696.63782"
+ x="3876.9988"
+ height="2.9999826"
+ width="1"
+ id="rect8162"
+ style="color:#000000;fill:#92e285;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ y="-677.63782"
+ x="3873.9988"
+ height="5.9999352"
+ width="2"
+ id="rect22613"
+ style="color:#000000;fill:#fc5c00;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ y="-877.63782"
+ x="3878.9988"
+ height="21.999905"
+ width="23"
+ id="rect22663"
+ style="color:#000000;fill:#808080;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ style="color:#000000;fill:url(#linearGradient54645) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect22665"
+ width="21"
+ height="19.999949"
+ x="3879.9988"
+ y="-876.63782" />
+ <rect
+ y="-876.63782"
+ x="3879.9988"
+ height="19.99995"
+ width="21"
+ id="rect22667"
+ style="color:#000000;fill:url(#linearGradient54642) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <path
+ style="opacity:0.5;color:#000000;fill:url(#radialGradient54639) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ d="m 3880.5989,-859.59509 19.7998,0 c 0.3325,0 0.6001,0.446 0.6001,1 l 0,0.9572 c 0,0.554 -0.2676,1 -0.6001,1 l -19.7998,0 c -0.3325,0 -0.6001,-0.446 -0.6001,-1 l 0,-0.9572 c 0,-0.554 0.2676,-1 0.6001,-1 z"
+ id="path22669"
+ inkscape:connector-curvature="0" />
+ <g
+ id="g22671"
+ transform="matrix(0.6,0,0,1,3566.2,210)">
+ <rect
+ style="color:#000000;fill:#e6e6e6;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect22673"
+ width="35"
+ height="1"
+ x="523"
+ y="-1081.6378" />
+ <rect
+ y="-1085.6378"
+ x="523"
+ height="1"
+ width="35"
+ id="rect22675"
+ style="color:#000000;fill:#e6e6e6;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ y="-1077.6378"
+ x="523"
+ height="1"
+ width="35"
+ id="rect22677"
+ style="color:#000000;fill:#e6e6e6;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ style="color:#000000;fill:#e6e6e6;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect22679"
+ width="35"
+ height="1"
+ x="523"
+ y="-1073.6378" />
+ </g>
+ <rect
+ y="-870.63782"
+ x="3880.9988"
+ height="12.999887"
+ width="4"
+ id="rect22681"
+ style="color:#000000;fill:#0369a3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ transform="scale(1,-1)"
+ style="color:#000000;fill:url(#linearGradient54630) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect22683"
+ width="2"
+ height="10.999983"
+ x="3881.9988"
+ y="858.63782" />
+ <rect
+ style="color:#000000;fill:#a33e03;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect22685"
+ width="4"
+ height="17.999849"
+ x="3885.9988"
+ y="-875.63782" />
+ <rect
+ y="858.63782"
+ x="3886.9988"
+ height="15.999983"
+ width="2"
+ id="rect22687"
+ style="color:#000000;fill:url(#linearGradient54626) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ transform="scale(1,-1)" />
+ <rect
+ y="-865.63782"
+ x="3890.9988"
+ height="7.9998188"
+ width="4"
+ id="rect22689"
+ style="color:#000000;fill:#c99c00;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ transform="scale(1,-1)"
+ style="color:#000000;fill:url(#linearGradient54622) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect22691"
+ width="2"
+ height="5.9999008"
+ x="3891.9988"
+ y="858.63788" />
+ <rect
+ style="color:#000000;fill:#43c330;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect22693"
+ width="4"
+ height="11.00001"
+ x="3895.9988"
+ y="-868.63782" />
+ <rect
+ y="858.63788"
+ x="3896.9988"
+ height="8.9999027"
+ width="2"
+ id="rect22695"
+ style="color:#000000;fill:url(#linearGradient54618) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ transform="scale(1,-1)" />
+ <rect
+ style="color:#000000;fill:#808080;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect22807-9"
+ width="23"
+ height="21.999905"
+ x="3878.9988"
+ y="-824.63782" />
+ <rect
+ y="-823.63782"
+ x="3879.9988"
+ height="19.999949"
+ width="21"
+ id="rect22809-8"
+ style="color:#000000;fill:#333333;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <path
+ id="path22813-3"
+ d="m 3880.656,-806.59509 21.6856,0 c 0.3641,0 0.6572,0.446 0.6572,1 l 0,0.9572 c 0,0.554 -0.2931,1 -0.6572,1 l -21.6856,0 c -0.3641,0 -0.6572,-0.446 -0.6572,-1 l 0,-0.9572 c 0,-0.554 0.2931,-1 0.6572,-1 z"
+ style="opacity:0.5;color:#000000;fill:url(#radialGradient54613) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ inkscape:connector-curvature="0" />
+ <rect
+ style="color:#000000;fill:#00a0fc;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect22825-1"
+ width="4"
+ height="12.999887"
+ x="3880.9988"
+ y="-817.63782" />
+ <rect
+ y="-822.63782"
+ x="3885.9988"
+ height="17.999849"
+ width="4"
+ id="rect22829-0"
+ style="color:#000000;fill:#fc5c00;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ style="color:#000000;fill:#ffd74c;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect22833-8"
+ width="4"
+ height="7.9998188"
+ x="3890.9988"
+ y="-812.63782" />
+ <rect
+ y="-815.63782"
+ x="3895.9988"
+ height="11.00001"
+ width="4"
+ id="rect22837-3"
+ style="color:#000000;fill:#2cee0e;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ style="color:#000000;fill:#808080;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect22855"
+ width="16"
+ height="14.000006"
+ x="3874.9988"
+ y="-772.63782" />
+ <rect
+ y="-771.63782"
+ x="3875.9988"
+ height="11.999945"
+ width="14"
+ id="rect22857"
+ style="color:#000000;fill:url(#linearGradient54605) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ style="color:#000000;fill:url(#linearGradient54602) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect22859"
+ width="14.1"
+ height="12"
+ x="3875.9988"
+ y="-771.63788" />
+ <path
+ id="path22861"
+ d="m 3875.7604,-761.63779 13.8196,0 c 0.232,0 0.4188,0.30164 0.4188,0.67632 l 0,0.64736 c 0,0.37468 -0.1868,0.67632 -0.4188,0.67632 l -13.8196,0 c -0.232,0 -0.4188,-0.30164 -0.4188,-0.67632 l 0,-0.64736 c 0,-0.37468 0.1868,-0.67632 0.4188,-0.67632 z"
+ style="opacity:0.5;color:#000000;fill:url(#radialGradient54599) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ inkscape:connector-curvature="0" />
+ <g
+ transform="matrix(0.399999,0,0,1,3666.8,315)"
+ id="g22863">
+ <rect
+ y="-1082.6378"
+ x="523"
+ height="1"
+ width="35"
+ id="rect22865"
+ style="color:#000000;fill:#e6e6e6;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ style="color:#000000;fill:#e6e6e6;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect22867"
+ width="35"
+ height="1"
+ x="523"
+ y="-1085.6378" />
+ <rect
+ style="color:#000000;fill:#e6e6e6;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect22869"
+ width="35"
+ height="1"
+ x="523"
+ y="-1079.6378" />
+ </g>
+ <rect
+ style="color:#000000;fill:#0369a3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect22873"
+ width="3"
+ height="7.9999022"
+ x="3876.9988"
+ y="-767.63782" />
+ <rect
+ y="759.63782"
+ x="3876.9988"
+ height="6.9999628"
+ width="2"
+ id="rect22875"
+ style="opacity:0.7;color:#000000;fill:url(#linearGradient54591) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ transform="scale(1,-1)" />
+ <rect
+ y="-770.63782"
+ x="3879.9988"
+ height="10.999904"
+ width="3"
+ id="rect22877"
+ style="color:#000000;fill:#a33e03;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ transform="scale(1,-1)"
+ style="opacity:0.7;color:#000000;fill:url(#linearGradient54587) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect22879"
+ width="2"
+ height="9.9998617"
+ x="3879.9988"
+ y="759.63794" />
+ <rect
+ style="color:#000000;fill:#c99c00;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect22881"
+ width="3"
+ height="4.9998212"
+ x="3882.9988"
+ y="-764.63782" />
+ <rect
+ y="759.63782"
+ x="3882.9988"
+ height="3.9999731"
+ width="2"
+ id="rect22883"
+ style="opacity:0.7;color:#000000;fill:url(#linearGradient54583) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ transform="scale(1,-1)" />
+ <rect
+ y="-766.63782"
+ x="3885.9988"
+ height="7.0000319"
+ width="3"
+ id="rect22885"
+ style="color:#000000;fill:#43c330;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ transform="scale(1,-1)"
+ style="opacity:0.7;color:#000000;fill:url(#linearGradient54579) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect22887"
+ width="2"
+ height="6.09373"
+ x="3885.9988"
+ y="759.63782" />
+ <path
+ sodipodi:nodetypes="cccccccc"
+ id="path22907"
+ d="m 4403.4988,-766.13779 3,0 0,-6 7,0 0,6 3,0 -6.5,6 -6.5,-6 z"
+ style="color:#000000;fill:url(#linearGradient54574) #000000;fill-opacity:1;fill-rule:nonzero;stroke:url(#linearGradient54576) #000000;stroke-width:1;stroke-linejoin:round;marker:none;visibility:visible;display:inline;overflow:visible"
+ inkscape:connector-curvature="0" />
+ <path
+ style="opacity:0.6;color:#000000;fill:url(#radialGradient54571) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ d="m 4404.3417,-760.63779 11.3142,0 c 0.19,0 0.3429,0.30162 0.3429,0.67628 l 0,0.64734 c 0,0.37466 -0.1529,0.67628 -0.3429,0.67628 l -11.3142,0 c -0.19,0 -0.3429,-0.30162 -0.3429,-0.67628 l 0,-0.64734 c 0,-0.37466 0.1529,-0.67628 0.3429,-0.67628 z"
+ id="path22941"
+ inkscape:connector-curvature="0" />
+ <path
+ style="color:#000000;fill:url(#linearGradient54566) #000000;fill-opacity:1;fill-rule:nonzero;stroke:url(#linearGradient54568) #000000;stroke-width:1;stroke-linejoin:round;marker:none;visibility:visible;display:inline;overflow:visible"
+ d="m 4403.4988,-766.13779 3,0 0,-6 7,0 0,6 3,0 -6.5,6 -6.5,-6 z"
+ id="path22943"
+ sodipodi:nodetypes="cccccccc"
+ inkscape:connector-curvature="0" />
+ <path
+ id="path22955"
+ d="m 4408.5703,-859.63779 18.8569,0 c 0.3168,0 0.5716,0.60326 0.5716,1.35263 l 0,1.29474 c 0,0.74935 -0.2548,1.35263 -0.5716,1.35263 l -18.8569,0 c -0.3167,0 -0.5715,-0.60328 -0.5715,-1.35263 l 0,-1.29474 c 0,-0.74937 0.2548,-1.35263 0.5715,-1.35263 z"
+ style="opacity:0.6;color:#000000;fill:url(#radialGradient54563) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ inkscape:connector-curvature="0" />
+ <path
+ sodipodi:nodetypes="cccccccc"
+ id="path22957"
+ d="m 4407.4988,-867.13779 5,0 0,-10.00006 11,0 0,10.00006 5.0001,0 -10.5,9.3847 -10.5001,-9.3847 z"
+ style="color:#000000;fill:url(#linearGradient54558) #000000;fill-opacity:1;fill-rule:nonzero;stroke:url(#linearGradient54560) #000000;stroke-width:1;stroke-linejoin:round;marker:none;visibility:visible;display:inline;overflow:visible"
+ inkscape:connector-curvature="0" />
+ <path
+ style="color:#000000;fill:#2cee0e;fill-opacity:1;fill-rule:nonzero;stroke:#106802;stroke-width:1;stroke-linejoin:round;marker:none;visibility:visible;display:inline;overflow:visible"
+ d="m 4407.4988,-813.13779 5,0 0,-10.00006 11,0 0,10.00006 5.0001,0 -10.5,9.3847 -10.5001,-9.3847 z"
+ id="path23331-2"
+ sodipodi:nodetypes="cccccccc"
+ inkscape:connector-curvature="0" />
+ <path
+ sodipodi:nodetypes="cccccccc"
+ id="path23337"
+ d="m 4403.4988,-766.13779 3,0 0,-6 7,0 0,6 3,0 -6.5,6 -6.5,-6 z"
+ style="color:#000000;fill:url(#linearGradient54552) #000000;fill-opacity:1;fill-rule:nonzero;stroke:url(#linearGradient54554) #000000;stroke-width:1;stroke-linejoin:round;marker:none;visibility:visible;display:inline;overflow:visible"
+ inkscape:connector-curvature="0" />
+ <path
+ style="color:#000000;fill:#2cee0e;fill-opacity:1;fill-rule:nonzero;stroke:#106802;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible"
+ d="m 4403.4988,-728.13779 3,0 0,-6 7,0 0,6 3,0 -6.5,6 -6.5,-6 z"
+ id="path23339"
+ sodipodi:nodetypes="cccccccc"
+ inkscape:connector-curvature="0" />
+ <g
+ id="g23545"
+ style="color:#000000;fill:url(#linearGradient23627) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ transform="matrix(0.999981,0,0,1,3238,-1756)">
+ <rect
+ y="983.36108"
+ x="115.00113"
+ height="1"
+ width="6.9989481"
+ id="rect23549"
+ style="color:#000000;fill:url(#linearGradient23621) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ y="985.36108"
+ x="115.00113"
+ height="1"
+ width="6.998951"
+ id="rect23551"
+ style="color:#000000;fill:url(#linearGradient23623) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ style="color:#000000;fill:url(#linearGradient23625) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect23553"
+ width="4.9989138"
+ height="1"
+ x="115.00113"
+ y="987.36108" />
+ <rect
+ style="color:#000000;fill:url(#linearGradient24531) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect24525"
+ width="6.9989481"
+ height="1"
+ x="124.00129"
+ y="983.36108" />
+ <rect
+ style="color:#000000;fill:url(#linearGradient24533) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect24527"
+ width="6.998951"
+ height="1"
+ x="124.00129"
+ y="985.36108" />
+ <rect
+ y="987.36108"
+ x="124.00129"
+ height="1"
+ width="4.9989138"
+ id="rect24529"
+ style="color:#000000;fill:url(#linearGradient24535) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ style="color:#000000;fill:url(#linearGradient24543) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect24537"
+ width="6.9989481"
+ height="1"
+ x="115.00113"
+ y="990.36108" />
+ <rect
+ style="color:#000000;fill:url(#linearGradient24545) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect24539"
+ width="6.998951"
+ height="1"
+ x="115.00113"
+ y="992.36108" />
+ <rect
+ y="994.36108"
+ x="115.00113"
+ height="1"
+ width="4.9989138"
+ id="rect24541"
+ style="color:#000000;fill:url(#linearGradient24547) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ y="990.36108"
+ x="124.00129"
+ height="1"
+ width="6.9989481"
+ id="rect24549"
+ style="color:#000000;fill:url(#linearGradient24555) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ y="992.36108"
+ x="124.00129"
+ height="1"
+ width="6.998951"
+ id="rect24551"
+ style="color:#000000;fill:url(#linearGradient24557) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ style="color:#000000;fill:url(#linearGradient24559) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect24553"
+ width="4.9989138"
+ height="1"
+ x="124.00129"
+ y="994.36108" />
+ </g>
+ <g
+ id="g24181"
+ transform="translate(37.9988,9.9e-6)">
+ <g
+ transform="matrix(1.99996,0,0,2,3088,-2842.36)"
+ style="fill:url(#linearGradient24213) #000000;fill-opacity:1;display:inline"
+ id="g24183">
+ <rect
+ style="color:#000000;fill:url(#linearGradient24203) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect24185"
+ width="1.5000296"
+ height="0.50001603"
+ x="115.50111"
+ y="983.36108" />
+ <rect
+ style="color:#000000;fill:url(#linearGradient24205) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect24187"
+ width="1.50002"
+ height="0.50001603"
+ x="115.50111"
+ y="982.36108" />
+ <rect
+ style="color:#000000;fill:url(#linearGradient24207) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect24189"
+ width="1.5000296"
+ height="0.50001603"
+ x="115.50111"
+ y="984.36108" />
+ <rect
+ y="985.36108"
+ x="115.50111"
+ height="0.50001603"
+ width="5.500103"
+ id="rect24191"
+ style="color:#000000;fill:url(#linearGradient24209) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ style="color:#000000;fill:url(#linearGradient24211) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect24193"
+ width="4.0000744"
+ height="0.50001603"
+ x="115.50111"
+ y="986.36108" />
+ </g>
+ <g
+ transform="matrix(0.999981,0,0,1,3105,-97)"
+ id="g24195">
+ <rect
+ y="-780.63782"
+ x="217.99992"
+ height="5.0000572"
+ width="7.0000806"
+ id="rect24197"
+ style="color:#000000;fill:url(#linearGradient24215) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ style="color:#000000;fill:url(#linearGradient24217) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect24199"
+ width="5.000062"
+ height="2.9999964"
+ x="218.99994"
+ y="-779.63776" />
+ <path
+ style="color:#000000;fill:url(#linearGradient24219) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible"
+ d="m 220.99994,-779.13776 -2,2 0,0.5 4.99996,0 0,-0.5 -2.99996,-2 z"
+ id="path24201"
+ sodipodi:nodetypes="cccccc"
+ inkscape:connector-curvature="0" />
+ </g>
+ </g>
+ <g
+ transform="translate(50.9988,9.9e-6)"
+ id="g24221">
+ <g
+ id="g24223"
+ style="fill:url(#linearGradient24253) #000000;fill-opacity:1;display:inline"
+ transform="matrix(1.99996,0,0,2,3088,-2842.36)">
+ <rect
+ y="983.36108"
+ x="115.50111"
+ height="0.50001603"
+ width="1.5000296"
+ id="rect24225"
+ style="color:#000000;fill:url(#linearGradient24243) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ y="982.36108"
+ x="115.50111"
+ height="0.50001603"
+ width="1.50002"
+ id="rect24227"
+ style="color:#000000;fill:url(#linearGradient24245) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ y="984.36108"
+ x="115.50111"
+ height="0.50001603"
+ width="1.5000296"
+ id="rect24229"
+ style="color:#000000;fill:url(#linearGradient24247) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ style="color:#000000;fill:url(#linearGradient24249) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect24231"
+ width="5.500103"
+ height="0.50001603"
+ x="115.50111"
+ y="985.36108" />
+ <rect
+ y="986.36108"
+ x="115.50111"
+ height="0.50001603"
+ width="4.0000744"
+ id="rect24233"
+ style="color:#000000;fill:url(#linearGradient24251) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ </g>
+ <g
+ id="g24235"
+ transform="matrix(0.999981,0,0,1,3105,-97)">
+ <rect
+ style="color:#000000;fill:url(#linearGradient24255) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect24237"
+ width="7.0000806"
+ height="5.0000572"
+ x="217.99992"
+ y="-780.63782" />
+ <rect
+ y="-779.63776"
+ x="218.99994"
+ height="2.9999964"
+ width="5.000062"
+ id="rect24239"
+ style="color:#000000;fill:url(#linearGradient24257) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <path
+ sodipodi:nodetypes="cccccc"
+ id="path24241"
+ d="m 220.99994,-779.13776 -2,2 0,0.5 4.99996,0 0,-0.5 -2.99996,-2 z"
+ style="color:#000000;fill:url(#linearGradient24259) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible"
+ inkscape:connector-curvature="0" />
+ </g>
+ </g>
+ <g
+ id="g24261"
+ transform="translate(50.9988,11)">
+ <g
+ transform="matrix(1.99996,0,0,2,3088,-2842.36)"
+ style="fill:url(#linearGradient24293) #000000;fill-opacity:1;display:inline"
+ id="g24263">
+ <rect
+ style="color:#000000;fill:url(#linearGradient24283) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect24265"
+ width="1.5000296"
+ height="0.50001603"
+ x="115.50111"
+ y="983.36108" />
+ <rect
+ style="color:#000000;fill:url(#linearGradient24285) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect24267"
+ width="1.50002"
+ height="0.50001603"
+ x="115.50111"
+ y="982.36108" />
+ <rect
+ style="color:#000000;fill:url(#linearGradient24287) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect24269"
+ width="1.5000296"
+ height="0.50001603"
+ x="115.50111"
+ y="984.36108" />
+ <rect
+ y="985.36108"
+ x="115.50111"
+ height="0.50001603"
+ width="5.500103"
+ id="rect24271"
+ style="color:#000000;fill:url(#linearGradient24289) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ style="color:#000000;fill:url(#linearGradient24291) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect24273"
+ width="4.0000744"
+ height="0.50001603"
+ x="115.50111"
+ y="986.36108" />
+ </g>
+ <g
+ transform="matrix(0.999981,0,0,1,3105,-97)"
+ id="g24275">
+ <rect
+ y="-780.63782"
+ x="217.99992"
+ height="5.0000572"
+ width="7.0000806"
+ id="rect24277"
+ style="color:#000000;fill:url(#linearGradient24295) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ style="color:#000000;fill:url(#linearGradient24297) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect24279"
+ width="5.000062"
+ height="2.9999964"
+ x="218.99994"
+ y="-779.63776" />
+ <path
+ style="color:#000000;fill:url(#linearGradient24299) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible"
+ d="m 220.99994,-779.13776 -2,2 0,0.5 4.99996,0 0,-0.5 -2.99996,-2 z"
+ id="path24281"
+ sodipodi:nodetypes="cccccc"
+ inkscape:connector-curvature="0" />
+ </g>
+ </g>
+ <g
+ transform="translate(37.9988,11)"
+ id="g24301">
+ <g
+ id="g24303"
+ style="fill:url(#linearGradient24333) #000000;fill-opacity:1;display:inline"
+ transform="matrix(1.99996,0,0,2,3088,-2842.36)">
+ <rect
+ y="983.36108"
+ x="115.50111"
+ height="0.50001603"
+ width="1.5000296"
+ id="rect24305"
+ style="color:#000000;fill:url(#linearGradient24323) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ y="982.36108"
+ x="115.50111"
+ height="0.50001603"
+ width="1.50002"
+ id="rect24307"
+ style="color:#000000;fill:url(#linearGradient24325) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ y="984.36108"
+ x="115.50111"
+ height="0.50001603"
+ width="1.5000296"
+ id="rect24309"
+ style="color:#000000;fill:url(#linearGradient24327) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ style="color:#000000;fill:url(#linearGradient24329) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect24311"
+ width="5.500103"
+ height="0.50001603"
+ x="115.50111"
+ y="985.36108" />
+ <rect
+ y="986.36108"
+ x="115.50111"
+ height="0.50001603"
+ width="4.0000744"
+ id="rect24313"
+ style="color:#000000;fill:url(#linearGradient24331) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ </g>
+ <g
+ id="g24315"
+ transform="matrix(0.999981,0,0,1,3105,-97)">
+ <rect
+ style="color:#000000;fill:url(#linearGradient24335) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect24317"
+ width="7.0000806"
+ height="5.0000572"
+ x="217.99992"
+ y="-780.63782" />
+ <rect
+ y="-779.63776"
+ x="218.99994"
+ height="2.9999964"
+ width="5.000062"
+ id="rect24319"
+ style="color:#000000;fill:url(#linearGradient24337) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <path
+ sodipodi:nodetypes="cccccc"
+ id="path24321"
+ d="m 220.99994,-779.13776 -2,2 0,0.5 4.99996,0 0,-0.5 -2.99996,-2 z"
+ style="color:#000000;fill:url(#linearGradient24339) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible"
+ inkscape:connector-curvature="0" />
+ </g>
+ </g>
+ <rect
+ style="color:#000000;fill:#00a0fc;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.93699998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect24379"
+ width="8"
+ height="7"
+ x="3348.9988"
+ y="-678.65063" />
+ <path
+ style="color:#000000;fill:#023f62;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ d="m 3351.9988,-678.63781 0,3 -3,0 0,1 3,0 0,3 2,0 0,-3 3,0 0,-1 -3,0 0,-3 -2,0 z"
+ id="path24381"
+ sodipodi:nodetypes="ccccccccccccc"
+ inkscape:connector-curvature="0" />
+ <rect
+ y="-735.63782"
+ x="3874.9988"
+ height="14.000006"
+ width="16"
+ id="rect24385"
+ style="color:#000000;fill:#808080;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ style="color:#000000;fill:#333333;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect24387"
+ width="14"
+ height="11.999945"
+ x="3875.9988"
+ y="-734.63782" />
+ <path
+ style="opacity:0.5;color:#000000;fill:url(#radialGradient54487) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ d="m 3875.7604,-724.63779 13.8196,0 c 0.232,0 0.4188,0.30164 0.4188,0.67632 l 0,0.64736 c 0,0.37468 -0.1868,0.67632 -0.4188,0.67632 l -13.8196,0 c -0.232,0 -0.4188,-0.30164 -0.4188,-0.67632 l 0,-0.64736 c 0,-0.37468 0.1868,-0.67632 0.4188,-0.67632 z"
+ id="path24391"
+ inkscape:connector-curvature="0" />
+ <rect
+ y="-730.63782"
+ x="3876.9988"
+ height="7.9999022"
+ width="3"
+ id="rect24401"
+ style="color:#000000;fill:#00a0fc;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ transform="scale(1,-1)"
+ style="color:#000000;fill:#0369a3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect24403"
+ width="1"
+ height="7.9998798"
+ x="3878.9988"
+ y="722.63794" />
+ <rect
+ style="color:#000000;fill:#fc5c00;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect24405"
+ width="3"
+ height="10.999904"
+ x="3879.9988"
+ y="-733.63782" />
+ <rect
+ y="722.638"
+ x="3881.9988"
+ height="10.999784"
+ width="1"
+ id="rect24407"
+ style="color:#000000;fill:#a33e03;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ transform="scale(1,-1)" />
+ <rect
+ y="-727.63782"
+ x="3882.9988"
+ height="4.9998212"
+ width="3"
+ id="rect24409"
+ style="color:#000000;fill:#ffd74c;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ transform="scale(1,-1)"
+ style="color:#000000;fill:#c99c00;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect24411"
+ width="1"
+ height="4.9997783"
+ x="3884.9988"
+ y="722.638" />
+ <rect
+ style="color:#000000;fill:#2cee0e;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect24413"
+ width="3"
+ height="7.0000319"
+ x="3885.9988"
+ y="-729.63782" />
+ <rect
+ y="722.638"
+ x="3887.9988"
+ height="6.9997797"
+ width="1"
+ id="rect24415"
+ style="color:#000000;fill:#18a303;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ transform="scale(1,-1)" />
+ <rect
+ style="opacity:0.5;color:#000000;fill:url(#linearGradient54476) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect24573"
+ width="11"
+ height="9.0000172"
+ x="3356.9988"
+ y="-877.63782" />
+ <rect
+ y="-877.63782"
+ x="3369.9988"
+ height="9.0000172"
+ width="11"
+ id="rect24575"
+ style="opacity:0.5;color:#000000;fill:url(#linearGradient54473) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ style="opacity:0.5;color:#000000;fill:url(#linearGradient54470) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect24577"
+ width="11"
+ height="9.0000172"
+ x="3369.9988"
+ y="-866.63782" />
+ <rect
+ y="-866.63782"
+ x="3356.9988"
+ height="9.0000172"
+ width="11"
+ id="rect24579"
+ style="opacity:0.5;color:#000000;fill:url(#linearGradient54467) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <g
+ transform="translate(37.9988,9.9e-6)"
+ id="g24581">
+ <g
+ id="g24583"
+ style="fill:url(#linearGradient24733) #000000;fill-opacity:1;display:inline"
+ transform="matrix(1.99996,0,0,2,3088,-2842.36)">
+ <rect
+ y="983.36108"
+ x="115.50111"
+ height="0.50001603"
+ width="1.5000296"
+ id="rect24585"
+ style="color:#000000;fill:url(#linearGradient24723) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ y="982.36108"
+ x="115.50111"
+ height="0.50001603"
+ width="1.50002"
+ id="rect24587"
+ style="color:#000000;fill:url(#linearGradient24725) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ y="984.36108"
+ x="115.50111"
+ height="0.50001603"
+ width="1.5000296"
+ id="rect24589"
+ style="color:#000000;fill:url(#linearGradient24727) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ style="color:#000000;fill:url(#linearGradient24729-8) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect24591"
+ width="5.500103"
+ height="0.50001603"
+ x="115.50111"
+ y="985.36108" />
+ <rect
+ y="986.36108"
+ x="115.50111"
+ height="0.50001603"
+ width="4.0000744"
+ id="rect24593"
+ style="color:#000000;fill:url(#linearGradient24731) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ </g>
+ <g
+ id="g24595"
+ transform="matrix(0.999981,0,0,1,3105,-97)">
+ <rect
+ style="color:#000000;fill:url(#linearGradient24735) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect24597"
+ width="7.0000806"
+ height="5.0000572"
+ x="217.99992"
+ y="-780.63782" />
+ <rect
+ y="-779.63776"
+ x="218.99994"
+ height="2.9999964"
+ width="5.000062"
+ id="rect24599"
+ style="color:#000000;fill:url(#linearGradient24737-2) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <path
+ sodipodi:nodetypes="cccccc"
+ id="path24601"
+ d="m 220.99994,-779.13776 -2,2 0,0.5 4.99996,0 0,-0.5 -2.99996,-2 z"
+ style="color:#000000;fill:url(#linearGradient24739-0) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible"
+ inkscape:connector-curvature="0" />
+ </g>
+ </g>
+ <g
+ id="g24603"
+ transform="translate(50.9988,9.9e-6)">
+ <g
+ transform="matrix(1.99996,0,0,2,3088,-2842.36)"
+ style="fill:url(#linearGradient24715) #000000;fill-opacity:1;display:inline"
+ id="g24605">
+ <rect
+ style="color:#000000;fill:url(#linearGradient24705-4) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect24607"
+ width="1.5000296"
+ height="0.50001603"
+ x="115.50111"
+ y="983.36108" />
+ <rect
+ style="color:#000000;fill:url(#linearGradient24707-7) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect24609"
+ width="1.50002"
+ height="0.50001603"
+ x="115.50111"
+ y="982.36108" />
+ <rect
+ style="color:#000000;fill:url(#linearGradient24709) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect24611"
+ width="1.5000296"
+ height="0.50001603"
+ x="115.50111"
+ y="984.36108" />
+ <rect
+ y="985.36108"
+ x="115.50111"
+ height="0.50001603"
+ width="5.500103"
+ id="rect24613"
+ style="color:#000000;fill:url(#linearGradient24711) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ style="color:#000000;fill:url(#linearGradient24713-7) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect24615"
+ width="4.0000744"
+ height="0.50001603"
+ x="115.50111"
+ y="986.36108" />
+ </g>
+ <g
+ transform="matrix(0.999981,0,0,1,3105,-97)"
+ id="g24617">
+ <rect
+ y="-780.63782"
+ x="217.99992"
+ height="5.0000572"
+ width="7.0000806"
+ id="rect24619"
+ style="color:#000000;fill:url(#linearGradient24717) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ style="color:#000000;fill:url(#linearGradient24719) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect24621"
+ width="5.000062"
+ height="2.9999964"
+ x="218.99994"
+ y="-779.63776" />
+ <path
+ style="color:#000000;fill:url(#linearGradient24721-3) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible"
+ d="m 220.99994,-779.13776 -2,2 0,0.5 4.99996,0 0,-0.5 -2.99996,-2 z"
+ id="path24623"
+ sodipodi:nodetypes="cccccc"
+ inkscape:connector-curvature="0" />
+ </g>
+ </g>
+ <g
+ transform="translate(50.9988,11)"
+ id="g24625">
+ <g
+ id="g24627"
+ style="fill:url(#linearGradient24697-6) #000000;fill-opacity:1;display:inline"
+ transform="matrix(1.99996,0,0,2,3088,-2842.36)">
+ <rect
+ y="983.36108"
+ x="115.50111"
+ height="0.50001603"
+ width="1.5000296"
+ id="rect24629"
+ style="color:#000000;fill:url(#linearGradient24687) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ y="982.36108"
+ x="115.50111"
+ height="0.50001603"
+ width="1.50002"
+ id="rect24631"
+ style="color:#000000;fill:url(#linearGradient24689-0) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ y="984.36108"
+ x="115.50111"
+ height="0.50001603"
+ width="1.5000296"
+ id="rect24633"
+ style="color:#000000;fill:url(#linearGradient24691) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ style="color:#000000;fill:url(#linearGradient24693) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect24635"
+ width="5.500103"
+ height="0.50001603"
+ x="115.50111"
+ y="985.36108" />
+ <rect
+ y="986.36108"
+ x="115.50111"
+ height="0.50001603"
+ width="4.0000744"
+ id="rect24637"
+ style="color:#000000;fill:url(#linearGradient24695) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ </g>
+ <g
+ id="g24639"
+ transform="matrix(0.999981,0,0,1,3105,-97)">
+ <rect
+ style="color:#000000;fill:url(#linearGradient24699-3) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect24641"
+ width="7.0000806"
+ height="5.0000572"
+ x="217.99992"
+ y="-780.63782" />
+ <rect
+ y="-779.63776"
+ x="218.99994"
+ height="2.9999964"
+ width="5.000062"
+ id="rect24643"
+ style="color:#000000;fill:url(#linearGradient24701) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <path
+ sodipodi:nodetypes="cccccc"
+ id="path24645"
+ d="m 220.99994,-779.13776 -2,2 0,0.5 4.99996,0 0,-0.5 -2.99996,-2 z"
+ style="color:#000000;fill:url(#linearGradient24703) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible"
+ inkscape:connector-curvature="0" />
+ </g>
+ </g>
+ <g
+ id="g24647"
+ transform="translate(37.9988,11)">
+ <g
+ transform="matrix(1.99996,0,0,2,3088,-2842.36)"
+ style="fill:url(#linearGradient24679) #000000;fill-opacity:1;display:inline"
+ id="g24649">
+ <rect
+ style="color:#000000;fill:url(#linearGradient24669) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect24651"
+ width="1.5000296"
+ height="0.50001603"
+ x="115.50111"
+ y="983.36108" />
+ <rect
+ style="color:#000000;fill:url(#linearGradient24671) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect24653"
+ width="1.50002"
+ height="0.50001603"
+ x="115.50111"
+ y="982.36108" />
+ <rect
+ style="color:#000000;fill:url(#linearGradient24673-3) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect24655"
+ width="1.5000296"
+ height="0.50001603"
+ x="115.50111"
+ y="984.36108" />
+ <rect
+ y="985.36108"
+ x="115.50111"
+ height="0.50001603"
+ width="5.500103"
+ id="rect24657"
+ style="color:#000000;fill:url(#linearGradient24675) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ style="color:#000000;fill:url(#linearGradient24677) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect24659"
+ width="4.0000744"
+ height="0.50001603"
+ x="115.50111"
+ y="986.36108" />
+ </g>
+ <g
+ transform="matrix(0.999981,0,0,1,3105,-97)"
+ id="g24661">
+ <rect
+ y="-780.63782"
+ x="217.99992"
+ height="5.0000572"
+ width="7.0000806"
+ id="rect24663"
+ style="color:#000000;fill:url(#linearGradient24681-5) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ style="color:#000000;fill:url(#linearGradient24683) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect24665"
+ width="5.000062"
+ height="2.9999964"
+ x="218.99994"
+ y="-779.63776" />
+ <path
+ style="color:#000000;fill:url(#linearGradient24685) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible"
+ d="m 220.99994,-779.13776 -2,2 0,0.5 4.99996,0 0,-0.5 -2.99996,-2 z"
+ id="path24667"
+ sodipodi:nodetypes="cccccc"
+ inkscape:connector-curvature="0" />
+ </g>
+ </g>
+ <rect
+ style="opacity:0.5;color:#000000;fill:url(#linearGradient54420) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect24749-6"
+ width="11"
+ height="9.0000172"
+ x="3356.9988"
+ y="-824.63782" />
+ <rect
+ y="-824.63782"
+ x="3369.9988"
+ height="9.0000172"
+ width="11"
+ id="rect24751-6"
+ style="opacity:0.5;color:#000000;fill:url(#linearGradient54417) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ style="opacity:0.5;color:#000000;fill:url(#linearGradient54414) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect24753-6"
+ width="11"
+ height="9.0000172"
+ x="3369.9988"
+ y="-813.63782" />
+ <rect
+ y="-813.63782"
+ x="3356.9988"
+ height="9.0000172"
+ width="11"
+ id="rect24755-5"
+ style="opacity:0.5;color:#000000;fill:url(#linearGradient54411) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <g
+ transform="translate(37.9988,53)"
+ id="g24757-5">
+ <g
+ id="g24759-1"
+ style="fill:url(#linearGradient24959-8) #000000;fill-opacity:1;display:inline"
+ transform="matrix(1.99996,0,0,2,3088,-2842.36)">
+ <rect
+ y="983.36108"
+ x="115.50111"
+ height="0.50001603"
+ width="1.5000296"
+ id="rect24761-1"
+ style="color:#000000;fill:url(#linearGradient24949) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ y="982.36108"
+ x="115.50111"
+ height="0.50001603"
+ width="1.50002"
+ id="rect24763-0"
+ style="color:#000000;fill:url(#linearGradient24951) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ y="984.36108"
+ x="115.50111"
+ height="0.50001603"
+ width="1.5000296"
+ id="rect24765-8"
+ style="color:#000000;fill:url(#linearGradient24953-4) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ style="color:#000000;fill:url(#linearGradient24955) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect24767-8"
+ width="5.500103"
+ height="0.50001603"
+ x="115.50111"
+ y="985.36108" />
+ <rect
+ y="986.36108"
+ x="115.50111"
+ height="0.50001603"
+ width="4.0000744"
+ id="rect24769-2"
+ style="color:#000000;fill:url(#linearGradient24957) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ </g>
+ <g
+ id="g24771-2"
+ transform="matrix(0.999981,0,0,1,3105,-97)">
+ <rect
+ style="color:#000000;fill:url(#linearGradient24961-5) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect24773-8"
+ width="7.0000806"
+ height="5.0000572"
+ x="217.99992"
+ y="-780.63782" />
+ <rect
+ y="-779.63776"
+ x="218.99994"
+ height="2.9999964"
+ width="5.000062"
+ id="rect24775-1"
+ style="color:#000000;fill:url(#linearGradient24963-3) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <path
+ sodipodi:nodetypes="cccccc"
+ id="path24777-2"
+ d="m 220.99994,-779.13776 -2,2 0,0.5 4.99996,0 0,-0.5 -2.99996,-2 z"
+ style="color:#000000;fill:url(#linearGradient24965) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible"
+ inkscape:connector-curvature="0" />
+ </g>
+ </g>
+ <g
+ id="g24779-8"
+ transform="translate(50.9988,53)">
+ <g
+ transform="matrix(1.99996,0,0,2,3088,-2842.36)"
+ style="fill:url(#linearGradient24977-1) #000000;fill-opacity:1;display:inline"
+ id="g24781-3">
+ <rect
+ style="color:#000000;fill:url(#linearGradient24967) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect24783-9"
+ width="1.5000296"
+ height="0.50001603"
+ x="115.50111"
+ y="983.36108" />
+ <rect
+ style="color:#000000;fill:url(#linearGradient24969-3) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect24785-9"
+ width="1.50002"
+ height="0.50001603"
+ x="115.50111"
+ y="982.36108" />
+ <rect
+ style="color:#000000;fill:url(#linearGradient24971) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect24787-4"
+ width="1.5000296"
+ height="0.50001603"
+ x="115.50111"
+ y="984.36108" />
+ <rect
+ y="985.36108"
+ x="115.50111"
+ height="0.50001603"
+ width="5.500103"
+ id="rect24789-0"
+ style="color:#000000;fill:url(#linearGradient24973) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ style="color:#000000;fill:url(#linearGradient24975) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect24791-2"
+ width="4.0000744"
+ height="0.50001603"
+ x="115.50111"
+ y="986.36108" />
+ </g>
+ <g
+ transform="matrix(0.999981,0,0,1,3105,-97)"
+ id="g24793-0">
+ <rect
+ y="-780.63782"
+ x="217.99992"
+ height="5.0000572"
+ width="7.0000806"
+ id="rect24795-1"
+ style="color:#000000;fill:url(#linearGradient24979) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ style="color:#000000;fill:url(#linearGradient24981) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect24797-1"
+ width="5.000062"
+ height="2.9999964"
+ x="218.99994"
+ y="-779.63776" />
+ <path
+ style="color:#000000;fill:url(#linearGradient24983) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible"
+ d="m 220.99994,-779.13776 -2,2 0,0.5 4.99996,0 0,-0.5 -2.99996,-2 z"
+ id="path24799-4"
+ sodipodi:nodetypes="cccccc"
+ inkscape:connector-curvature="0" />
+ </g>
+ </g>
+ <g
+ transform="translate(50.9988,64)"
+ id="g24801-3">
+ <g
+ id="g24803-3"
+ style="fill:url(#linearGradient24995-5) #000000;fill-opacity:1;display:inline"
+ transform="matrix(1.99996,0,0,2,3088,-2842.36)">
+ <rect
+ y="983.36108"
+ x="115.50111"
+ height="0.50001603"
+ width="1.5000296"
+ id="rect24805-4"
+ style="color:#000000;fill:url(#linearGradient24985-1) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ y="982.36108"
+ x="115.50111"
+ height="0.50001603"
+ width="1.50002"
+ id="rect24807-6"
+ style="color:#000000;fill:url(#linearGradient24987) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ y="984.36108"
+ x="115.50111"
+ height="0.50001603"
+ width="1.5000296"
+ id="rect24809-5"
+ style="color:#000000;fill:url(#linearGradient24989) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ style="color:#000000;fill:url(#linearGradient24991) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect24811-1"
+ width="5.500103"
+ height="0.50001603"
+ x="115.50111"
+ y="985.36108" />
+ <rect
+ y="986.36108"
+ x="115.50111"
+ height="0.50001603"
+ width="4.0000744"
+ id="rect24813-5"
+ style="color:#000000;fill:url(#linearGradient24993-3) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ </g>
+ <g
+ id="g24815-3"
+ transform="matrix(0.999981,0,0,1,3105,-97)">
+ <rect
+ style="color:#000000;fill:url(#linearGradient24997) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect24817-8"
+ width="7.0000806"
+ height="5.0000572"
+ x="217.99992"
+ y="-780.63782" />
+ <rect
+ y="-779.63776"
+ x="218.99994"
+ height="2.9999964"
+ width="5.000062"
+ id="rect24819-0"
+ style="color:#000000;fill:url(#linearGradient24999) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <path
+ sodipodi:nodetypes="cccccc"
+ id="path24821-4"
+ d="m 220.99994,-779.13776 -2,2 0,0.5 4.99996,0 0,-0.5 -2.99996,-2 z"
+ style="color:#000000;fill:url(#linearGradient25001-3) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible"
+ inkscape:connector-curvature="0" />
+ </g>
+ </g>
+ <g
+ id="g24823-1"
+ transform="translate(37.9988,64)">
+ <g
+ transform="matrix(1.99996,0,0,2,3088,-2842.36)"
+ style="fill:url(#linearGradient25013-79) #000000;fill-opacity:1;display:inline"
+ id="g24825-0">
+ <rect
+ style="color:#000000;fill:url(#linearGradient25003-0) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect24827-5"
+ width="1.5000296"
+ height="0.50001603"
+ x="115.50111"
+ y="983.36108" />
+ <rect
+ style="color:#000000;fill:url(#linearGradient25005) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect24829-9"
+ width="1.50002"
+ height="0.50001603"
+ x="115.50111"
+ y="982.36108" />
+ <rect
+ style="color:#000000;fill:url(#linearGradient25007) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect24831-4"
+ width="1.5000296"
+ height="0.50001603"
+ x="115.50111"
+ y="984.36108" />
+ <rect
+ y="985.36108"
+ x="115.50111"
+ height="0.50001603"
+ width="5.500103"
+ id="rect24833-7"
+ style="color:#000000;fill:url(#linearGradient25009-2) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ style="color:#000000;fill:url(#linearGradient25011) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect24835-9"
+ width="4.0000744"
+ height="0.50001603"
+ x="115.50111"
+ y="986.36108" />
+ </g>
+ <g
+ transform="matrix(0.999981,0,0,1,3105,-97)"
+ id="g24837-6">
+ <rect
+ y="-780.63782"
+ x="217.99992"
+ height="5.0000572"
+ width="7.0000806"
+ id="rect24839-1"
+ style="color:#000000;fill:url(#linearGradient25015) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ style="color:#000000;fill:url(#linearGradient25017-3) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect24841-7"
+ width="5.000062"
+ height="2.9999964"
+ x="218.99994"
+ y="-779.63776" />
+ <path
+ style="color:#000000;fill:url(#linearGradient25019) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible"
+ d="m 220.99994,-779.13776 -2,2 0,0.5 4.99996,0 0,-0.5 -2.99996,-2 z"
+ id="path24843-9"
+ sodipodi:nodetypes="cccccc"
+ inkscape:connector-curvature="0" />
+ </g>
+ </g>
+ <rect
+ y="-824.63782"
+ x="3356.9988"
+ height="9.0000172"
+ width="11"
+ id="rect24845-1"
+ style="color:#000000;fill:#023f62;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ style="color:#000000;fill:#023f62;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect24847-7"
+ width="11"
+ height="9.0000172"
+ x="3369.9988"
+ y="-824.63782" />
+ <rect
+ y="-813.63782"
+ x="3369.9988"
+ height="9.0000172"
+ width="11"
+ id="rect24849-5"
+ style="color:#000000;fill:#023f62;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ style="color:#000000;fill:#023f62;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect24851-3"
+ width="11"
+ height="9.0000172"
+ x="3356.9988"
+ y="-813.63782" />
+ <g
+ id="g25101-9"
+ transform="translate(37.9988,53)">
+ <g
+ transform="matrix(1.99996,0,0,2,3088,-2842.36)"
+ style="fill:#00a0fc;fill-opacity:1;display:inline"
+ id="g25103-6">
+ <rect
+ style="color:#000000;fill:#00a0fc;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect25105-4"
+ width="1.5000296"
+ height="0.50001603"
+ x="115.50111"
+ y="983.36108" />
+ <rect
+ style="color:#000000;fill:#00a0fc;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect25107-2"
+ width="1.50002"
+ height="0.50001603"
+ x="115.50111"
+ y="982.36108" />
+ <rect
+ style="color:#000000;fill:#00a0fc;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect25109-0"
+ width="1.5000296"
+ height="0.50001603"
+ x="115.50111"
+ y="984.36108" />
+ <rect
+ y="985.36108"
+ x="115.50111"
+ height="0.50001603"
+ width="5.500103"
+ id="rect25111-9"
+ style="color:#000000;fill:#00a0fc;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ style="color:#000000;fill:#00a0fc;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect25113-6"
+ width="4.0000744"
+ height="0.50001603"
+ x="115.50111"
+ y="986.36108" />
+ </g>
+ <g
+ style="fill:#00a0fc"
+ transform="matrix(0.999981,0,0,1,3105,-97)"
+ id="g25115-6">
+ <rect
+ y="-780.63782"
+ x="217.99992"
+ height="5.0000572"
+ width="7.0000806"
+ id="rect25117-8"
+ style="color:#000000;fill:#00a0fc;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible" />
+ </g>
+ <g
+ id="g25155-3"
+ transform="matrix(0.714281,0,0,0.599992,3168.29,-408.261)"
+ style="fill:#023f62">
+ <rect
+ style="color:#000000;fill:#023f62;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect25157-9"
+ width="7.0000806"
+ height="5.0000572"
+ x="217.99992"
+ y="-780.63782" />
+ </g>
+ </g>
+ <g
+ transform="translate(50.9988,53)"
+ id="g25159-3">
+ <g
+ id="g25161-7"
+ style="fill:#00a0fc;fill-opacity:1;display:inline"
+ transform="matrix(1.99996,0,0,2,3088,-2842.36)">
+ <rect
+ y="983.36108"
+ x="115.50111"
+ height="0.50001603"
+ width="1.5000296"
+ id="rect25163-7"
+ style="color:#000000;fill:#00a0fc;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ y="982.36108"
+ x="115.50111"
+ height="0.50001603"
+ width="1.50002"
+ id="rect25165-3"
+ style="color:#000000;fill:#00a0fc;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ y="984.36108"
+ x="115.50111"
+ height="0.50001603"
+ width="1.5000296"
+ id="rect25167-1"
+ style="color:#000000;fill:#00a0fc;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ style="color:#000000;fill:#00a0fc;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect25169-0"
+ width="5.500103"
+ height="0.50001603"
+ x="115.50111"
+ y="985.36108" />
+ <rect
+ y="986.36108"
+ x="115.50111"
+ height="0.50001603"
+ width="4.0000744"
+ id="rect25171-3"
+ style="color:#000000;fill:#00a0fc;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ </g>
+ <g
+ id="g25173-6"
+ transform="matrix(0.999981,0,0,1,3105,-97)"
+ style="fill:#00a0fc">
+ <rect
+ style="color:#000000;fill:#00a0fc;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect25175-1"
+ width="7.0000806"
+ height="5.0000572"
+ x="217.99992"
+ y="-780.63782" />
+ </g>
+ <g
+ style="fill:#023f62"
+ transform="matrix(0.714281,0,0,0.599992,3168.29,-408.261)"
+ id="g25177-9">
+ <rect
+ y="-780.63782"
+ x="217.99992"
+ height="5.0000572"
+ width="7.0000806"
+ id="rect25179-3"
+ style="color:#000000;fill:#023f62;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible" />
+ </g>
+ </g>
+ <g
+ id="g25181-0"
+ transform="translate(50.9988,64)">
+ <g
+ transform="matrix(1.99996,0,0,2,3088,-2842.36)"
+ style="fill:#00a0fc;fill-opacity:1;display:inline"
+ id="g25183-5">
+ <rect
+ style="color:#000000;fill:#00a0fc;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect25185-5"
+ width="1.5000296"
+ height="0.50001603"
+ x="115.50111"
+ y="983.36108" />
+ <rect
+ style="color:#000000;fill:#00a0fc;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect25187-0"
+ width="1.50002"
+ height="0.50001603"
+ x="115.50111"
+ y="982.36108" />
+ <rect
+ style="color:#000000;fill:#00a0fc;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect25189-7"
+ width="1.5000296"
+ height="0.50001603"
+ x="115.50111"
+ y="984.36108" />
+ <rect
+ y="985.36108"
+ x="115.50111"
+ height="0.50001603"
+ width="5.500103"
+ id="rect25191-8"
+ style="color:#000000;fill:#00a0fc;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ style="color:#000000;fill:#00a0fc;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect25193-7"
+ width="4.0000744"
+ height="0.50001603"
+ x="115.50111"
+ y="986.36108" />
+ </g>
+ <g
+ style="fill:#00a0fc"
+ transform="matrix(0.999981,0,0,1,3105,-97)"
+ id="g25195-2">
+ <rect
+ y="-780.63782"
+ x="217.99992"
+ height="5.0000572"
+ width="7.0000806"
+ id="rect25197-3"
+ style="color:#000000;fill:#00a0fc;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible" />
+ </g>
+ <g
+ id="g25199-8"
+ transform="matrix(0.714281,0,0,0.599992,3168.29,-408.261)"
+ style="fill:#023f62">
+ <rect
+ style="color:#000000;fill:#023f62;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect25201-0"
+ width="7.0000806"
+ height="5.0000572"
+ x="217.99992"
+ y="-780.63782" />
+ </g>
+ </g>
+ <g
+ transform="translate(37.9988,64)"
+ id="g25203-7">
+ <g
+ id="g25205-3"
+ style="fill:#00a0fc;fill-opacity:1;display:inline"
+ transform="matrix(1.99996,0,0,2,3088,-2842.36)">
+ <rect
+ y="983.36108"
+ x="115.50111"
+ height="0.50001603"
+ width="1.5000296"
+ id="rect25207-2"
+ style="color:#000000;fill:#00a0fc;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ y="982.36108"
+ x="115.50111"
+ height="0.50001603"
+ width="1.50002"
+ id="rect25209-7"
+ style="color:#000000;fill:#00a0fc;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ y="984.36108"
+ x="115.50111"
+ height="0.50001603"
+ width="1.5000296"
+ id="rect25211-9"
+ style="color:#000000;fill:#00a0fc;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ style="color:#000000;fill:#00a0fc;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect25213-9"
+ width="5.500103"
+ height="0.50001603"
+ x="115.50111"
+ y="985.36108" />
+ <rect
+ y="986.36108"
+ x="115.50111"
+ height="0.50001603"
+ width="4.0000744"
+ id="rect25215-5"
+ style="color:#000000;fill:#00a0fc;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ </g>
+ <g
+ id="g25217-2"
+ transform="matrix(0.999981,0,0,1,3105,-97)"
+ style="fill:#00a0fc">
+ <rect
+ style="color:#000000;fill:#00a0fc;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect25219-8"
+ width="7.0000806"
+ height="5.0000572"
+ x="217.99992"
+ y="-780.63782" />
+ </g>
+ <g
+ style="fill:#023f62"
+ transform="matrix(0.714281,0,0,0.599992,3168.29,-408.261)"
+ id="g25221-8">
+ <rect
+ y="-780.63782"
+ x="217.99992"
+ height="5.0000572"
+ width="7.0000806"
+ id="rect25223-9"
+ style="color:#000000;fill:#023f62;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible" />
+ </g>
+ </g>
+ <rect
+ y="-735.63782"
+ x="3352.9988"
+ height="6.0000319"
+ width="7"
+ id="rect25261"
+ style="color:#000000;fill:#023f62;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ style="color:#000000;fill:#023f62;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect25263"
+ width="7"
+ height="6.0000319"
+ x="3361.9988"
+ y="-735.63782" />
+ <rect
+ y="-728.63782"
+ x="3361.9988"
+ height="6.0000172"
+ width="7"
+ id="rect25265"
+ style="color:#000000;fill:#023f62;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ style="color:#000000;fill:#023f62;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect25267"
+ width="7"
+ height="6.0000319"
+ x="3352.9988"
+ y="-728.63782" />
+ <g
+ transform="matrix(0.999981,0,0,1,3238,-1719)"
+ style="color:#000000;fill:#00a0fc;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="g25269">
+ <rect
+ style="color:#000000;fill:#00a0fc;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect25271"
+ width="6.9989481"
+ height="1"
+ x="115.00113"
+ y="983.36108" />
+ <rect
+ style="color:#000000;fill:#00a0fc;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect25273"
+ width="6.998951"
+ height="1"
+ x="115.00113"
+ y="985.36108" />
+ <rect
+ y="987.36108"
+ x="115.00113"
+ height="1"
+ width="4.9989138"
+ id="rect25275"
+ style="color:#000000;fill:#00a0fc;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ y="983.36108"
+ x="124.00129"
+ height="1"
+ width="6.9989481"
+ id="rect25277"
+ style="color:#000000;fill:#00a0fc;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ y="985.36108"
+ x="124.00129"
+ height="1"
+ width="6.998951"
+ id="rect25279"
+ style="color:#000000;fill:#00a0fc;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ style="color:#000000;fill:#00a0fc;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect25281"
+ width="4.9989138"
+ height="1"
+ x="124.00129"
+ y="987.36108" />
+ <rect
+ y="990.36108"
+ x="115.00113"
+ height="1"
+ width="6.9989481"
+ id="rect25283"
+ style="color:#000000;fill:#00a0fc;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ y="992.36108"
+ x="115.00113"
+ height="1"
+ width="6.998951"
+ id="rect25285"
+ style="color:#000000;fill:#00a0fc;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ style="color:#000000;fill:#00a0fc;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect25287"
+ width="4.9989138"
+ height="1"
+ x="115.00113"
+ y="994.36108" />
+ <rect
+ style="color:#000000;fill:#00a0fc;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect25289"
+ width="6.9989481"
+ height="1"
+ x="124.00129"
+ y="990.36108" />
+ <rect
+ style="color:#000000;fill:#00a0fc;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect25291"
+ width="6.998951"
+ height="1"
+ x="124.00129"
+ y="992.36108" />
+ <rect
+ y="994.36108"
+ x="124.00129"
+ height="1"
+ width="4.9989138"
+ id="rect25293"
+ style="color:#000000;fill:#00a0fc;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ </g>
+ <g
+ id="g11522"
+ transform="translate(-0.00120978,9.9e-6)">
+ <path
+ style="color:#000000;fill:#00a0fc;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ d="m 1516,-735.6378 0,2 16,0 0,-2 -16,0 z m 0,4 0,2 9.3438,0 c 0.8952,-0.6314 1.9773,-1 3.1562,-1 1.1789,0 2.261,0.3686 3.1562,1 l 0.3438,0 0,-2 -16,0 z m 0,4 0,2 7.0312,0 c 0.064,-0.7124 0.2527,-1.3921 0.5626,-2 l -7.5938,0 z m 0,4 0,2 8.25,0 c -0.4748,-0.5753 -0.8209,-1.2633 -1.0312,-2 l -7.2188,0 z"
+ id="rect7760"
+ inkscape:connector-curvature="0" />
+ <path
+ sodipodi:type="arc"
+ style="color:#000000;fill:#00a0fc;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="path10026"
+ sodipodi:cx="3198"
+ sodipodi:cy="1021"
+ sodipodi:rx="6"
+ sodipodi:ry="6"
+ d="m 3204,1021 a 6,6 0 1 1 -12,0 6,6 0 1 1 12,0 z"
+ transform="matrix(0.583333,0,0,0.583333,-337,-1320.72)" />
+ </g>
+ <g
+ id="g11515"
+ transform="translate(-0.00120978,9.9e-6)">
+ <path
+ id="rect7739"
+ d="m 1516,-772.6378 0,2 16,0 0,-2 -16,0 z m 0,4 0,2 8.25,0 c 0.9838,-0.92312 2.2945,-1.5 3.75,-1.5 1.4555,0 2.7662,0.57688 3.75,1.5 l 0.25,0 0,-2 -16,0 z m 0,4 0,2 6.5,0 c 0,-0.70273 0.1348,-1.3822 0.375,-2 l -6.875,0 z m 0,4 0,2 8.25,0 c -0.5943,-0.5577 -1.0744,-1.22694 -1.375,-2 l -6.875,0 z"
+ style="color:#000000;fill:url(#linearGradient54166) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ inkscape:connector-curvature="0" />
+ <path
+ sodipodi:type="arc"
+ style="color:#000000;fill:url(#radialGradient54168) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="path10034"
+ sodipodi:cx="3187.5"
+ sodipodi:cy="1000"
+ sodipodi:rx="2.5"
+ sodipodi:ry="5"
+ d="m 3190,1000 a 2.5,5 0 1 1 -5,0 2.5,5 0 1 1 5,0 z"
+ transform="matrix(1.6,0,0,0.8,-3572,-1562.64)" />
+ <path
+ transform="translate(-1571,0)"
+ sodipodi:nodetypes="cz"
+ id="path10071"
+ d="m 3101.9891,-759.13777 c 0.4771,-4.78935 -3.8794,-6.32872 -6.3191,-5.94341"
+ style="fill:none;stroke:url(#linearGradient54170) #000000;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:1"
+ clip-path="url(#clipPath10191)"
+ inkscape:connector-curvature="0" />
+ <path
+ transform="translate(-1570.5,0)"
+ clip-path="url(#clipPath10187)"
+ style="fill:none;stroke:url(#linearGradient54172) #000000;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 3097.2189,-758.89094 c -2.0787,-3.89165 1.0775,-6.71996 3.2811,-7.24686"
+ id="path10139"
+ sodipodi:nodetypes="cz"
+ inkscape:connector-curvature="0" />
+ <path
+ transform="translate(-1571,0)"
+ sodipodi:nodetypes="cz"
+ id="path10143"
+ d="m 3095.6533,-760.40883 c 2.5855,0.42254 6.4431,-2.21706 7.8467,-3.72897"
+ style="fill:none;stroke:url(#linearGradient54174) #000000;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:1"
+ clip-path="url(#clipPath10183)"
+ inkscape:connector-curvature="0" />
+ </g>
+ <g
+ id="g11526"
+ transform="translate(-0.00120978,9.9e-6)">
+ <g
+ transform="matrix(0.999981,0,0,1,1397,-1682)"
+ style="color:#000000;fill:url(#linearGradient54184) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="g7885">
+ <rect
+ style="color:#000000;fill:url(#linearGradient54176) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect7887"
+ width="2.9988763"
+ height="1"
+ x="115.00113"
+ y="984.36108" />
+ <rect
+ style="color:#000000;fill:url(#linearGradient54178) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect7889"
+ width="6"
+ height="1"
+ x="115.00113"
+ y="982.36108" />
+ <rect
+ style="color:#000000;fill:url(#linearGradient54180) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect7891"
+ width="1.9988576"
+ height="1"
+ x="115.00113"
+ y="986.36108" />
+ <rect
+ y="988.36108"
+ x="115.00113"
+ height="1"
+ width="2.9988763"
+ id="rect7893"
+ style="color:#000000;fill:url(#linearGradient54182) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ </g>
+ <path
+ transform="matrix(1.25,0,0,1.25,-2497.5,-2018.89)"
+ d="m 3214,1059 a 2,2 0 1 1 -4,0 2,2 0 1 1 4,0 z"
+ sodipodi:ry="2"
+ sodipodi:rx="2"
+ sodipodi:cy="1059"
+ sodipodi:cx="3212"
+ id="path10197"
+ style="color:#000000;fill:url(#linearGradient54186) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ sodipodi:type="arc" />
+ </g>
+ <g
+ id="g11534"
+ transform="translate(-0.00120978,9.9e-6)">
+ <g
+ id="g10203"
+ style="color:#000000;fill:#00a0fc;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ transform="matrix(0.999981,0,0,1,1397,-1661)">
+ <rect
+ y="984.36108"
+ x="115.00113"
+ height="1"
+ width="2.9988763"
+ id="rect10205"
+ style="color:#000000;fill:#00a0fc;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ y="982.36108"
+ x="115.00113"
+ height="1"
+ width="6"
+ id="rect10207"
+ style="color:#000000;fill:#00a0fc;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ y="986.36108"
+ x="115.00113"
+ height="1"
+ width="1.9988576"
+ id="rect10209"
+ style="color:#000000;fill:#00a0fc;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ style="color:#000000;fill:#00a0fc;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect10211"
+ width="2.9988763"
+ height="1"
+ x="115.00113"
+ y="988.36108" />
+ </g>
+ <path
+ sodipodi:type="arc"
+ style="color:#000000;fill:#00a0fc;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="path10213"
+ sodipodi:cx="3212"
+ sodipodi:cy="1059"
+ sodipodi:rx="2"
+ sodipodi:ry="2"
+ d="m 3214,1059 a 2,2 0 1 1 -4,0 2,2 0 1 1 4,0 z"
+ transform="matrix(1.25,0,0,1.25,-2497.5,-1997.89)" />
+ </g>
+ <g
+ id="g11493"
+ transform="translate(-0.00120978,9.9e-6)">
+ <path
+ id="rect7873"
+ d="m 1520,-877.6378 0,2 24,0 0,-2 -24,0 z m 0,4 0,2 24,0 0,-2 -24,0 z m 0,4 0,2 11.0312,0 c 0.6918,-0.81226 1.5197,-1.49429 2.4688,-2 l -13.5,0 z m 21.5,0 c 0.9491,0.50571 1.777,1.18774 2.4688,2 0,0.005 0.027,-0.005 0.031,0 l 0,-2 -2.5,0 z m -21.5,4 0,2 9.1562,0 c 0.1245,-0.69988 0.3092,-1.3706 0.5938,-2 l -9.75,0 z m 0,4 0,2 9.375,0 c -0.1958,-0.6375 -0.3036,-1.30838 -0.3438,-2 l -9.0312,0 z m 0,4 0,2 12.0312,0 c -0.6785,-0.57183 -1.2776,-1.24435 -1.75,-2 l -10.2812,0 z"
+ style="color:#000000;fill:url(#linearGradient54188) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ inkscape:connector-curvature="0" />
+ <path
+ transform="matrix(0.923077,0,0,0.923077,-1445.42,-1685.06)"
+ d="m 3238,891.5 a 6.5,6.5 0 1 1 -13,0 6.5,6.5 0 1 1 13,0 z"
+ sodipodi:ry="6.5"
+ sodipodi:rx="6.5"
+ sodipodi:cy="891.5"
+ sodipodi:cx="3231.5"
+ id="path10227"
+ style="color:#000000;fill:url(#radialGradient54190) #000000;fill-opacity:1;fill-rule:nonzero;stroke:#023f62;stroke-width:1.08333004;marker:none;visibility:visible;display:inline;overflow:visible"
+ sodipodi:type="arc" />
+ <g
+ transform="translate(-1571,0)"
+ style="stroke:#aadcf7"
+ clip-path="url(#clipPath10326)"
+ id="g10316">
+ <path
+ style="fill:none;stroke:#aadcf7;stroke-width:2.20380998px;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 3068.184,-1099.5366 c -15.8287,5.5755 -16.1955,20.8148 -12.4084,27.5262"
+ id="path10253"
+ sodipodi:nodetypes="cz"
+ clip-path="none"
+ transform="matrix(0.45376,0,0,0.45376,1718.49,-369.973)"
+ inkscape:connector-curvature="0" />
+ <path
+ clip-path="none"
+ sodipodi:nodetypes="cz"
+ id="path10261"
+ d="m 3116,-861.6378 c -3.5797,-6.72117 -10.4412,-5.8475 -13.1941,-3.69131"
+ style="fill:none;stroke:#aadcf7;stroke-width:1px;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:1"
+ inkscape:connector-curvature="0" />
+ <path
+ clip-path="none"
+ sodipodi:nodetypes="cz"
+ id="path10269"
+ d="m 3104.6248,-857.04228 c 1.6682,-7.43001 8.5163,-8.40743 11.7423,-7.05871"
+ style="fill:none;stroke:#aadcf7;stroke-width:1px;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:1"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:none;stroke:#aadcf7;stroke-width:1px;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 3108,-854.37352 c 0.6679,-5.78028 5.5626,-7.04501 8,-6.26428"
+ id="path10277"
+ sodipodi:nodetypes="cz"
+ clip-path="none"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:none;stroke:#aadcf7;stroke-width:1px;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 3111,-855.6378 c 1.9186,-7.36934 -3.7212,-11.37387 -7.2069,-11.65209"
+ id="path10312"
+ sodipodi:nodetypes="cz"
+ clip-path="none"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:none;stroke:#aadcf7;stroke-width:1px;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 3101.3791,-861.1138 c 4.6342,6.0426 11.2593,4.05476 13.6209,1.476"
+ id="path10265"
+ sodipodi:nodetypes="cz"
+ clip-path="none"
+ inkscape:connector-curvature="0" />
+ </g>
+ </g>
+ <g
+ id="g11504-8"
+ transform="translate(-0.00120978,9.9e-6)">
+ <path
+ id="rect7786-3"
+ d="m 1520,-824.6378 0,2 24,0 0,-2 -24,0 z m 0,4 0,2 24,0 0,-2 -24,0 z m 0,4 0,2 11.0312,0 c 0.6918,-0.81226 1.5197,-1.49429 2.4688,-2 l -13.5,0 z m 21.5,0 c 0.9491,0.50571 1.777,1.18774 2.4688,2 0,0.005 0.027,-0.005 0.031,0 l 0,-2 -2.5,0 z m -21.5,4 0,2 9.1562,0 c 0.1245,-0.69988 0.3092,-1.3706 0.5938,-2 l -9.75,0 z m 0,4 0,2 9.375,0 c -0.1958,-0.6375 -0.3036,-1.30838 -0.3438,-2 l -9.0312,0 z m 0,4 0,2 12.0312,0 c -0.6785,-0.57183 -1.2776,-1.24435 -1.75,-2 l -10.2812,0 z"
+ style="color:#000000;fill:#00a0fc;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ inkscape:connector-curvature="0" />
+ <path
+ sodipodi:type="arc"
+ style="color:#000000;fill:#00a0fc;fill-opacity:1;fill-rule:nonzero;stroke:#00a0fc;stroke-width:1.08333004;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="path10346-3"
+ sodipodi:cx="3231.5"
+ sodipodi:cy="891.5"
+ sodipodi:rx="6.5"
+ sodipodi:ry="6.5"
+ d="m 3238,891.5 a 6.5,6.5 0 1 1 -13,0 6.5,6.5 0 1 1 13,0 z"
+ transform="matrix(0.923077,0,0,0.923077,-1445.42,-1632.06)" />
+ <g
+ transform="translate(-1571,53)"
+ id="g10332-0"
+ clip-path="url(#clipPath10326)"
+ style="stroke:#ffffff">
+ <path
+ transform="matrix(0.45376,0,0,0.45376,1718.49,-369.973)"
+ clip-path="none"
+ sodipodi:nodetypes="cz"
+ id="path10334-6"
+ d="m 3068.184,-1099.5366 c -15.8287,5.5755 -16.1955,20.8148 -12.4084,27.5262"
+ style="fill:none;stroke:#ffffff;stroke-width:2.20380998px;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:1"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:none;stroke:#ffffff;stroke-width:1px;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 3116,-861.6378 c -3.5797,-6.72117 -10.4412,-5.8475 -13.1941,-3.69131"
+ id="path10336-1"
+ sodipodi:nodetypes="cz"
+ clip-path="none"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:none;stroke:#ffffff;stroke-width:1px;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 3104.6248,-857.04228 c 1.6682,-7.43001 8.5163,-8.40743 11.7423,-7.05871"
+ id="path10338-2"
+ sodipodi:nodetypes="cz"
+ clip-path="none"
+ inkscape:connector-curvature="0" />
+ <path
+ clip-path="none"
+ sodipodi:nodetypes="cz"
+ id="path10340-7"
+ d="m 3108,-854.37352 c 0.6679,-5.78028 5.5626,-7.04501 8,-6.26428"
+ style="fill:none;stroke:#ffffff;stroke-width:1px;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:1"
+ inkscape:connector-curvature="0" />
+ <path
+ clip-path="none"
+ sodipodi:nodetypes="cz"
+ id="path10342-5"
+ d="m 3111,-855.6378 c 1.9186,-7.36934 -3.7212,-11.37387 -7.2069,-11.65209"
+ style="fill:none;stroke:#ffffff;stroke-width:1px;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:1"
+ inkscape:connector-curvature="0" />
+ <path
+ clip-path="none"
+ sodipodi:nodetypes="cz"
+ id="path10344-4"
+ d="m 3101.3791,-861.1138 c 4.6342,6.0426 11.2593,4.05476 13.6209,1.476"
+ style="fill:none;stroke:#ffffff;stroke-width:1px;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:1"
+ inkscape:connector-curvature="0" />
+ </g>
+ </g>
+ <rect
+ y="-765.13776"
+ x="4654.499"
+ height="5.9531446"
+ width="23"
+ id="rect10382"
+ style="color:#000000;fill:url(#linearGradient54254) #000000;fill-opacity:1;fill-rule:nonzero;stroke:url(#linearGradient54256) #000000;stroke-width:1;stroke-linejoin:round;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ transform="matrix(0,1,-1,0,0,0)"
+ y="-4675.999"
+ x="-763.63782"
+ height="3"
+ width="1.000012"
+ id="rect10386"
+ style="color:#000000;fill:#43c330;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ style="color:#000000;fill:#92e285;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect10388"
+ width="1.0000174"
+ height="1"
+ x="-763.63782"
+ y="-4675.999"
+ transform="matrix(0,1,-1,0,0,0)" />
+ <path
+ style="color:#000000;fill:url(#linearGradient54247) #000000;fill-opacity:1;fill-rule:nonzero;stroke:url(#linearGradient54249) #000000;stroke-width:1;stroke-linejoin:round;marker:none;visibility:visible;display:inline;overflow:visible"
+ d="m 4656.4988,-768.13777 19,0 2,2.99998 -23,0 2,-2.99998 z"
+ id="rect10402"
+ sodipodi:nodetypes="ccccc"
+ inkscape:connector-curvature="0" />
+ <rect
+ style="color:#000000;fill:#e6e6e6;fill-opacity:1;fill-rule:nonzero;stroke:#808080;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect10384"
+ width="17"
+ height="7.9999042"
+ x="4657.499"
+ y="-775.13782" />
+ <rect
+ y="-774.63782"
+ x="4657.999"
+ height="8"
+ width="15.999922"
+ id="rect10522"
+ style="color:#000000;fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ style="color:#000000;fill:url(#linearGradient54242) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect10516"
+ width="15.999922"
+ height="8"
+ x="4657.999"
+ y="-774.63782" />
+ <path
+ style="color:#000000;fill:url(#linearGradient54239) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ d="m 4659.9988,-772.63779 0,1 12,0 0,-1 -12,0 z m 0,2 0,1 12,0 0,-1 -12,0 z m 0,2 0,1 12,0 0,-1 -12,0 z"
+ id="rect10390"
+ sodipodi:nodetypes="ccccccccccccccc"
+ inkscape:connector-curvature="0" />
+ <rect
+ transform="matrix(0,1,-1,0,0,0)"
+ y="-4671.999"
+ x="-763.63782"
+ height="16.000177"
+ width="1"
+ id="rect10482"
+ style="color:#000000;fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ y="-676.13782"
+ x="4654.499"
+ height="5.0000176"
+ width="11"
+ id="rect10553"
+ style="color:#000000;fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:#808080;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#808080;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect10555"
+ width="7"
+ height="5"
+ x="4656.499"
+ y="-680.13788" />
+ <rect
+ style="color:#000000;fill:#cccccc;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect10579"
+ width="13.999931"
+ height="9.0000172"
+ x="4657.999"
+ y="-738.63782" />
+ <rect
+ style="color:#000000;fill:#333333;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:1;stroke-linejoin:round;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect10581"
+ width="23"
+ height="5.9531446"
+ x="4654.499"
+ y="-728.13776" />
+ <rect
+ style="color:#000000;fill:#2cee0e;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect10583"
+ width="1.000012"
+ height="3"
+ x="-726.63782"
+ y="-4675.999"
+ transform="matrix(0,1,-1,0,0,0)" />
+ <path
+ sodipodi:nodetypes="ccccc"
+ id="path10587"
+ d="m 4656.4988,-731.13777 19,0 2,2.99998 -23,0 2,-2.99998 z"
+ style="color:#000000;fill:#333333;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:1;stroke-linejoin:round;marker:none;visibility:visible;display:inline;overflow:visible"
+ inkscape:connector-curvature="0" />
+ <rect
+ y="-738.13782"
+ x="4657.499"
+ height="7.9999042"
+ width="17"
+ id="rect10589"
+ style="color:#000000;fill:#e6e6e6;fill-opacity:1;fill-rule:nonzero;stroke:#808080;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect10591"
+ width="15.999922"
+ height="8"
+ x="4657.999"
+ y="-737.63782" />
+ <path
+ sodipodi:nodetypes="ccccccccccccccc"
+ id="path10595"
+ d="m 4659.9988,-735.63779 0,1 12,0 0,-1 -12,0 z m 0,2 0,1 12,0 0,-1 -12,0 z m 0,2 0,1 12,0 0,-1 -12,0 z"
+ style="color:#000000;fill:#00a0fc;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ inkscape:connector-curvature="0" />
+ <rect
+ style="color:#000000;fill:#cccccc;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect10613"
+ width="13.999931"
+ height="9.0000172"
+ x="4658.999"
+ y="-875.63782" />
+ <rect
+ style="color:#000000;fill:url(#linearGradient54223) #000000;fill-opacity:1;fill-rule:nonzero;stroke:url(#linearGradient54225) #000000;stroke-width:1;stroke-linejoin:round;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect10615"
+ width="26"
+ height="8"
+ x="4655.499"
+ y="-864.13782" />
+ <rect
+ style="color:#000000;fill:#43c330;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect10617"
+ width="2.0000174"
+ height="3"
+ x="-862.63782"
+ y="-4679.999"
+ transform="matrix(0,1,-1,0,0,0)" />
+ <rect
+ transform="matrix(0,1,-1,0,0,0)"
+ y="-4679.999"
+ x="-862.63782"
+ height="2"
+ width="1.0000174"
+ id="rect10619"
+ style="color:#000000;fill:#92e285;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <path
+ sodipodi:nodetypes="ccccc"
+ id="path10621"
+ d="m 4657.4988,-869.13777 22,0 2,4.99998 -26,0 2,-4.99998 z"
+ style="color:#000000;fill:url(#linearGradient54216) #000000;fill-opacity:1;fill-rule:nonzero;stroke:url(#linearGradient54218) #000000;stroke-width:1;stroke-linejoin:round;marker:none;visibility:visible;display:inline;overflow:visible"
+ inkscape:connector-curvature="0" />
+ <rect
+ y="-878.13782"
+ x="4659.499"
+ height="11.000017"
+ width="18"
+ id="rect10623"
+ style="color:#000000;fill:#e6e6e6;fill-opacity:1;fill-rule:nonzero;stroke:#808080;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ style="color:#000000;fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect10625"
+ width="17"
+ height="11.000055"
+ x="4659.999"
+ y="-877.63782" />
+ <rect
+ y="-877.63782"
+ x="4659.999"
+ height="11.000069"
+ width="16.999918"
+ id="rect10627"
+ style="color:#000000;fill:url(#linearGradient54211) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ transform="matrix(0,1,-1,0,0,0)"
+ y="-4675.999"
+ x="-876.63782"
+ height="15.000148"
+ width="9"
+ id="rect10688"
+ style="opacity:0.25;color:#000000;fill:#63bbee;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <path
+ sodipodi:nodetypes="ccccccccccccccc"
+ id="path10629"
+ d="m 4660.9988,-875.63779 0,1 15,0 0,-1 -15,0 z m 0,3 0,1 15,0 0,-1 -15,0 z m 0,3 0,1 15,0 0,-1 -15,0 z"
+ style="color:#000000;fill:url(#linearGradient54207) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ inkscape:connector-curvature="0" />
+ <rect
+ style="color:#000000;fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect10631"
+ width="2.0000174"
+ height="18.000177"
+ x="-862.63782"
+ y="-4674.999"
+ transform="matrix(0,1,-1,0,0,0)" />
+ <rect
+ y="-822.63782"
+ x="4658.999"
+ height="9.0000172"
+ width="13.999931"
+ id="rect10690-5"
+ style="color:#000000;fill:#cccccc;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ y="-811.13782"
+ x="4655.499"
+ height="8"
+ width="26"
+ id="rect10692-2"
+ style="color:#000000;fill:#333333;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ transform="matrix(0,1,-1,0,0,0)"
+ y="-4679.999"
+ x="-809.63782"
+ height="3"
+ width="2.0000174"
+ id="rect10694-4"
+ style="color:#000000;fill:#2cee0e;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <path
+ style="color:#000000;fill:#333333;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible"
+ d="m 4657.4988,-816.13777 22,0 2,4.99998 -26,0 2,-4.99998 z"
+ id="path10698-2"
+ sodipodi:nodetypes="ccccc"
+ inkscape:connector-curvature="0" />
+ <rect
+ style="color:#000000;fill:#e6e6e6;fill-opacity:1;fill-rule:nonzero;stroke:#808080;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect10700-2"
+ width="18"
+ height="11.000017"
+ x="4659.499"
+ y="-825.13782" />
+ <rect
+ y="-824.63782"
+ x="4659.999"
+ height="11.000055"
+ width="17"
+ id="rect10702-3"
+ style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <path
+ style="color:#000000;fill:#00a0fc;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ d="m 4660.9988,-822.63779 0,1 15,0 0,-1 -15,0 z m 0,3 0,1 15,0 0,-1 -15,0 z m 0,3 0,1 15,0 0,-1 -15,0 z"
+ id="path10708-6"
+ sodipodi:nodetypes="ccccccccccccccc"
+ inkscape:connector-curvature="0" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#g11522"
+ id="use11542"
+ transform="translate(1571,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#g11515"
+ id="use11546"
+ transform="translate(1571,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#g11526"
+ id="use11548"
+ transform="translate(1571,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#g11534"
+ id="use11550"
+ transform="translate(1571,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#g11493"
+ id="use11552"
+ transform="translate(1571,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#g11504-8"
+ id="use11554-5"
+ transform="translate(1571,0)"
+ width="5033"
+ height="1085" />
+ <path
+ sodipodi:nodetypes="scccccccccscccccccc"
+ inkscape:connector-curvature="0"
+ id="path55568"
+ d="m 4450.25,-988.6378 c -1.5569,0 -2.2569,1.3075 -2.25,2.25 l 0,43.5 c 2e-4,1.5705 0.6793,2.2498 2.25,2.25 l 34.5,0 c 1.5707,-2e-4 2.2499,-0.6795 2.25,-2.25 l 0,-26.9375 c 0.018,-0.792 -0.2926,-1.5871 -0.8438,-2.1563 l -15.8124,-15.8125 c -0.5694,-0.551 -1.3641,-0.862 -2.1563,-0.8437 z m 26.2969,0.031 c -0.9985,0.3198 -1.3322,1.8163 -0.5625,2.5312 l 8.4844,8.4532 c 0.8347,0.7957 2.4871,0.1244 2.5312,-1.0313 l 0,-8.4531 c -2e-4,-0.7927 -0.7114,-1.4999 -1.5,-1.5 l -8.4844,0 c -0.1557,-0.024 -0.3131,-0.024 -0.4687,0 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:url(#linearGradient56512) #000000;fill-opacity:1;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono" />
+ <path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono"
+ d="m 4451,-985.6378 0,0.7241 0,40.5518 0,0.7241 0.7174,0 31.5652,0 0.7174,0 0,-0.7241 0,-25.3449 0,-0.3169 -0.2242,-0.2262 -14.9755,-15.2069 -0.1794,-0.181 -0.3138,0 -16.5897,0 -0.7174,0 z"
+ id="path55574"
+ sodipodi:nodetypes="cccccccccccccccc"
+ inkscape:connector-curvature="0" />
+ <rect
+ style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect55624"
+ width="2"
+ height="2"
+ x="4185"
+ y="-963.6377" />
+ <rect
+ style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect55650"
+ width="2"
+ height="2"
+ x="4185"
+ y="-947.6355" />
+ <rect
+ style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect55654"
+ width="2"
+ height="2"
+ x="4185"
+ y="-943.6355" />
+ <g
+ id="g57948">
+ <path
+ inkscape:connector-curvature="0"
+ style="color:#000000;fill:#530260;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible"
+ d="m 1278,-988.6378 0,3 14,0 0,-3 -14,0 z m 16,0 0,3 15,0 0,-3 -15,0 z m 17,0 0,3 15,0 0,-3 -15,0 z m 17,0 0,3 14,0 0,-3 -14,0 z m -50,5 0,4 14,0 0,-4 -14,0 z m 16,0 0,4 15,0 0,-4 -15,0 z m 17,0 0,4 15,0 0,-4 -15,0 z m 17,0 0,4 14,0 0,-4 -14,0 z m -50,6 0,4 14,0 0,-4 -14,0 z m 16,0 0,4 15,0 0,-4 -15,0 z m 17,0 0,4 15,0 0,-4 -15,0 z m 17,0 0,4 14,0 0,-4 -14,0 z m -50,6 0,4 14,0 0,-4 -14,0 z m 16,0 0,4 15,0 0,-4 -15,0 z m 17,0 0,4 15,0 0,-4 -15,0 z m 17,0 0,4 14,0 0,-4 -14,0 z m -50,6 0,4 14,0 0,-4 -14,0 z m 16,0 0,4 15,0 0,-4 -15,0 z m 17,0 0,4 15,0 0,-4 -15,0 z m 17,0 0,4 14,0 0,-4 -14,0 z m -50,6 0,4 14,0 0,-4 -14,0 z m 16,0 0,4 15,0 0,-4 -15,0 z m 17,0 0,4 15,0 0,-4 -15,0 z m 17,0 0,4 14,0 0,-4 -14,0 z m -50,6 0,4 14,0 0,-4 -14,0 z m 16,0 0,4 15,0 0,-4 -15,0 z m 17,0 0,4 15,0 0,-4 -15,0 z m 17,0 0,4 14,0 0,-4 -14,0 z m -50,6 0,4 14,0 0,-4 -14,0 z m 16,0 0,4 15,0 0,-4 -15,0 z m 17,0 0,4 15,0 0,-4 -15,0 z m 17,0 0,4 14,0 0,-4 -14,0 z m -50,6 0,4 14,0 0,-4 -14,0 z m 16,0 0,4 15,0 0,-4 -15,0 z m 17,0 0,4 15,0 0,-4 -15,0 z m 17,0 0,4 14,0 0,-4 -14,0 z m -50,6 0,3 14,0 0,-3 -14,0 z m 16,0 0,3 15,0 0,-3 -15,0 z m 17,0 0,3 15,0 0,-3 -15,0 z m 17,0 0,3 14,0 0,-3 -14,0 z"
+ id="path55674"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ <path
+ style="color:#000000;fill:#530260;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible"
+ d="m 1286,-955.6378 0,8 c 0,0 0,0.3688 0,0.5 0,3.5898 10.7452,6.5 24,6.5 13.2548,0 24,-2.9102 24,-6.5 l 0,-0.5 0,-8 -48,0 z"
+ id="path55682"
+ sodipodi:nodetypes="cccscccc"
+ inkscape:connector-curvature="0"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ <path
+ sodipodi:nodetypes="cccscccc"
+ id="path55684"
+ d="m 1286,-964.6378 0,8 c 0,0 0,0.3688 0,0.5 0,3.5898 10.7452,6.5 24,6.5 13.2548,0 24,-2.9102 24,-6.5 l 0,-0.5 0,-8 -48,0 z"
+ style="color:#000000;fill:#530260;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible"
+ inkscape:connector-curvature="0"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ <path
+ sodipodi:nodetypes="cccscccc"
+ id="path55686"
+ d="m 1334,-973.1378 0,7.5 c 0,0 0,0.3688 0,0.5 0,3.5898 -10.7452,6.5 -24,6.5 -13.2548,0 -24,-2.9102 -24,-6.5 l 0,-0.5 0,-7.5 48,0 z"
+ style="color:#000000;fill:#530260;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible"
+ inkscape:connector-curvature="0"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ <path
+ transform="matrix(1.04735,0,0,1.05495,765.703,-1744.58)"
+ d="m 542.125,730.3125 a 22.4375,5.6875 0 1 1 -44.875,0 22.4375,5.6875 0 1 1 44.875,0 z"
+ sodipodi:ry="5.6875"
+ sodipodi:rx="22.4375"
+ sodipodi:cy="730.3125"
+ sodipodi:cx="519.6875"
+ id="path55690"
+ style="color:#000000;fill:#530260;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.90445203;marker:none;visibility:visible;display:inline;overflow:visible"
+ sodipodi:type="arc"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ <path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:url(#linearGradient57731) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Sans"
+ d="m 1310,-981.6691 c -6.6937,0 -12.762,0.7304 -17.2188,1.9375 -2.2282,0.6036 -4.0271,1.2932 -5.375,2.1563 -1.3477,0.863 -2.375,1.9891 -2.375,3.4375 l -0.031,0 0,26.5 0,0.5 c 0,1.3963 0.9899,2.5081 2.3438,3.375 1.3536,0.8669 3.2039,1.5826 5.4374,2.1875 4.4672,1.2098 10.5182,1.9375 17.2188,1.9375 6.7006,0 12.7517,-0.7277 17.2188,-1.9375 2.2335,-0.6049 4.0837,-1.3206 5.4374,-2.1875 1.3539,-0.8669 2.3438,-1.9787 2.3438,-3.375 l 0,-27 -0.031,0 c 0,-1.4484 -1.0273,-2.5745 -2.375,-3.4375 -1.3478,-0.8631 -3.1466,-1.5527 -5.375,-2.1563 -4.4568,-1.2071 -10.5251,-1.9375 -17.2188,-1.9375 z m 0,2.0625 c 6.5612,0 12.5205,0.7295 16.75,1.875 2.1148,0.5728 3.7938,1.2452 4.875,1.9375 1.0811,0.6924 1.4062,1.3098 1.4062,1.6563 0,0.3465 -0.3251,0.9639 -1.4062,1.6562 -1.0812,0.6924 -2.7602,1.3648 -4.875,1.9375 -4.2295,1.1456 -10.1888,1.875 -16.75,1.875 -6.5611,0 -12.5205,-0.7294 -16.75,-1.875 -2.1148,-0.5727 -3.7939,-1.2451 -4.875,-1.9375 -1.0812,-0.6923 -1.4063,-1.3097 -1.4062,-1.6562 0,-0.3465 0.325,-0.9639 1.4062,-1.6563 1.0811,-0.6923 2.7602,-1.3647 4.875,-1.9375 4.2295,-1.1455 10.1889,-1.875 16.75,-1.875 z m -23,8.5938 c 0.1377,0.1 0.2601,0.2189 0.4062,0.3125 1.3479,0.863 3.1467,1.5527 5.375,2.1562 4.4568,1.207 10.5251,1.9375 17.2188,1.9375 6.6937,0 12.762,-0.7305 17.2188,-1.9375 2.2283,-0.6035 4.0272,-1.2932 5.375,-2.1562 0.1461,-0.094 0.2685,-0.2128 0.4062,-0.3125 l 0,5.375 0,0.5 c 0,0.3986 -0.3624,0.9991 -1.4375,1.6875 -1.0751,0.6884 -2.7341,1.3661 -4.8437,1.9375 -4.2193,1.1427 -10.1646,1.875 -16.7188,1.875 -6.5542,0 -12.4994,-0.7323 -16.7188,-1.875 -2.1096,-0.5714 -3.7686,-1.2491 -4.8437,-1.9375 -1.0751,-0.6884 -1.4375,-1.2889 -1.4375,-1.6875 l 0,-0.5 z m 0,9 c 0.1172,0.083 0.22,0.1708 0.3438,0.25 1.3536,0.8669 3.2039,1.5826 5.4374,2.1875 4.4672,1.2098 10.5182,1.9375 17.2188,1.9375 6.7006,0 12.7517,-0.7277 17.2188,-1.9375 2.2335,-0.6049 4.0837,-1.3206 5.4374,-2.1875 0.1238,-0.079 0.2266,-0.1666 0.3438,-0.25 l 0,5.375 0,0.5 c 0,0.3986 -0.3624,0.9991 -1.4375,1.6875 -1.0751,0.6884 -2.7341,1.3661 -4.8437,1.9375 -4.2193,1.1427 -10.1646,1.875 -16.7188,1.875 -6.5542,0 -12.4994,-0.7323 -16.7188,-1.875 -2.1096,-0.5714 -3.7686,-1.2491 -4.8437,-1.9375 -1.0751,-0.6884 -1.4375,-1.2889 -1.4375,-1.6875 l 0,-0.5 z m 0,9 c 0.1172,0.083 0.22,0.1708 0.3438,0.25 1.3536,0.8669 3.2039,1.5826 5.4374,2.1875 4.4672,1.2098 10.5182,1.9375 17.2188,1.9375 6.7006,0 12.7517,-0.7277 17.2188,-1.9375 2.2335,-0.6049 4.0837,-1.3206 5.4374,-2.1875 0.1238,-0.079 0.2266,-0.1666 0.3438,-0.25 l 0,5.375 0,0.5 c 0,0.3986 -0.3624,0.9991 -1.4375,1.6875 -1.0751,0.6884 -2.7341,1.3661 -4.8437,1.9375 -4.2193,1.1427 -10.1646,1.875 -16.7188,1.875 -6.5542,0 -12.4994,-0.7323 -16.7188,-1.875 -2.1096,-0.5714 -3.7686,-1.2491 -4.8437,-1.9375 -1.0751,-0.6884 -1.4375,-1.2889 -1.4375,-1.6875 l 0,-0.5 z"
+ id="path55692"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="ssccccsccssccccccssccsccscccccscccsccccsscscsscccccsscccsscscsscccccsscccsscscsscc"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ <path
+ sodipodi:nodetypes="sscccsccsscccccssccsccscccccscccsccccsscscsscccccsscccsscscsscccccsscccsscscssccc"
+ inkscape:connector-curvature="0"
+ id="path55696"
+ d="m 1310,-981.6691 c -6.6937,0 -12.762,0.7304 -17.2188,1.9375 -2.2282,0.6036 -4.0271,1.2932 -5.375,2.1563 -1.3477,0.863 -2.4062,1.9891 -2.4062,3.4375 -0.062,8.7636 2e-4,17.6812 2e-4,26.5 l 0,0.5 c 0,1.3963 0.9899,2.5081 2.3438,3.375 1.3536,0.8669 3.2039,1.5826 5.4374,2.1875 4.4672,1.2098 10.5182,1.9375 17.2188,1.9375 6.7006,0 12.7517,-0.7277 17.2188,-1.9375 2.2335,-0.6049 4.0837,-1.3206 5.4374,-2.1875 1.3539,-0.8669 2.3438,-1.9787 2.3438,-3.375 l 0,-27 c 0,-1.3529 -1.3173,-2.7252 -2.406,-3.4375 -1.3478,-0.8631 -3.1466,-1.5527 -5.375,-2.1563 -4.4568,-1.2071 -10.5251,-1.9375 -17.2188,-1.9375 z m 0,2.0625 c 6.5612,0 12.5205,0.7295 16.75,1.875 2.1148,0.5728 3.7938,1.2452 4.875,1.9375 1.0811,0.6924 1.4062,1.3098 1.4062,1.6563 0,0.3465 -0.3251,0.9639 -1.4062,1.6562 -1.0812,0.6924 -2.7602,1.3648 -4.875,1.9375 -4.2295,1.1456 -10.1888,1.875 -16.75,1.875 -6.5611,0 -12.5205,-0.7294 -16.75,-1.875 -2.1148,-0.5727 -3.7939,-1.2451 -4.875,-1.9375 -1.0812,-0.6923 -1.4063,-1.3097 -1.4062,-1.6562 0,-0.3465 0.325,-0.9639 1.4062,-1.6563 1.0811,-0.6923 2.7602,-1.3647 4.875,-1.9375 4.2295,-1.1455 10.1889,-1.875 16.75,-1.875 z m -23,8.5938 c 0.1377,0.1 0.2601,0.2189 0.4062,0.3125 1.3479,0.863 3.1467,1.5527 5.375,2.1562 4.4568,1.207 10.5251,1.9375 17.2188,1.9375 6.6937,0 12.762,-0.7305 17.2188,-1.9375 2.2283,-0.6035 4.0272,-1.2932 5.375,-2.1562 0.1461,-0.094 0.2685,-0.2128 0.4062,-0.3125 l 0,5.375 0,0.5 c 0,0.3986 -0.3624,0.9991 -1.4375,1.6875 -1.0751,0.6884 -2.7341,1.3661 -4.8437,1.9375 -4.2193,1.1427 -10.1646,1.875 -16.7188,1.875 -6.5542,0 -12.4994,-0.7323 -16.7188,-1.875 -2.1096,-0.5714 -3.7686,-1.2491 -4.8437,-1.9375 -1.0751,-0.6884 -1.4375,-1.2889 -1.4375,-1.6875 l 0,-0.5 z m 0,9 c 0.1172,0.083 0.22,0.1708 0.3438,0.25 1.3536,0.8669 3.2039,1.5826 5.4374,2.1875 4.4672,1.2098 10.5182,1.9375 17.2188,1.9375 6.7006,0 12.7517,-0.7277 17.2188,-1.9375 2.2335,-0.6049 4.0837,-1.3206 5.4374,-2.1875 0.1238,-0.079 0.2266,-0.1666 0.3438,-0.25 l 0,5.375 0,0.5 c 0,0.3986 -0.3624,0.9991 -1.4375,1.6875 -1.0751,0.6884 -2.7341,1.3661 -4.8437,1.9375 -4.2193,1.1427 -10.1646,1.875 -16.7188,1.875 -6.5542,0 -12.4994,-0.7323 -16.7188,-1.875 -2.1096,-0.5714 -3.7686,-1.2491 -4.8437,-1.9375 -1.0751,-0.6884 -1.4375,-1.2889 -1.4375,-1.6875 l 0,-0.5 z m 0,9 c 0.1172,0.083 0.22,0.1708 0.3438,0.25 1.3536,0.8669 3.2039,1.5826 5.4374,2.1875 4.4672,1.2098 10.5182,1.9375 17.2188,1.9375 6.7006,0 12.7517,-0.7277 17.2188,-1.9375 2.2335,-0.6049 4.0837,-1.3206 5.4374,-2.1875 0.1238,-0.079 0.2266,-0.1666 0.3438,-0.25 l 0,5.375 0,0.5 c 0,0.3986 -0.3624,0.9991 -1.4375,1.6875 -1.0751,0.6884 -2.7341,1.3661 -4.8437,1.9375 -4.2193,1.1427 -10.1646,1.875 -16.7188,1.875 -6.5542,0 -12.4994,-0.7323 -16.7188,-1.875 -2.1096,-0.5714 -3.7686,-1.2491 -4.8437,-1.9375 -1.0751,-0.6884 -1.4375,-1.2889 -1.4375,-1.6875 l 0,-0.5 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:#e327ff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Sans"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ </g>
+ <g
+ id="g57917">
+ <path
+ inkscape:connector-curvature="0"
+ style="fill:#fc5c00;fill-opacity:1;stroke:none"
+ d="M 785.12121,-941.6377 773,-933.6378 l 5.87879,0 10.12122,-7.9999 -3.8788,0 z"
+ id="path55730"
+ sodipodi:nodetypes="ccccc"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ <path
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="ccccc"
+ id="path55734"
+ d="m 791,-941.6377 12,7.9999 -6,0 -10.00001,-7.9999 4.00001,0 z"
+ style="fill:#fc5c00;fill-opacity:1;stroke:none"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ <rect
+ y="-943.63782"
+ x="784.99994"
+ height="3.0000196"
+ width="5.9999995"
+ id="rect55732"
+ style="color:#000000;fill:#622502;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ <rect
+ y="-988.63782"
+ x="756"
+ height="45.999985"
+ width="64"
+ id="rect55736"
+ style="color:#000000;fill:#fc5c00;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ <rect
+ ry="1"
+ rx="1"
+ style="color:#000000;fill:url(#linearGradient57514) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect55738"
+ width="60"
+ height="42.000023"
+ x="758"
+ y="-986.63782"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ <rect
+ y="-986.63782"
+ x="758"
+ height="42.000023"
+ width="60"
+ id="rect55742"
+ style="color:#000000;fill:#622502;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ <rect
+ style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect55754"
+ width="15"
+ height="4"
+ x="769"
+ y="-967.63782"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ <rect
+ y="-960.63782"
+ x="769"
+ height="4"
+ width="15"
+ id="rect55758"
+ style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ <rect
+ style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect55760"
+ width="15"
+ height="4"
+ x="769"
+ y="-953.63782"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ <path
+ transform="matrix(0.363636,0,0,0.380952,438.364,-1213.92)"
+ d="m 901,651.75 a 5.4999981,5.250001 0 1 1 -11,0 5.4999981,5.250001 0 1 1 11,0 z"
+ sodipodi:ry="5.250001"
+ sodipodi:rx="5.4999981"
+ sodipodi:cy="651.75"
+ sodipodi:cx="895.5"
+ id="path55764"
+ style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ sodipodi:type="arc"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ <path
+ transform="matrix(0.363636,0,0,0.380952,438.364,-1206.92)"
+ d="m 901,651.75 a 5.4999981,5.250001 0 1 1 -11,0 5.4999981,5.250001 0 1 1 11,0 z"
+ sodipodi:ry="5.250001"
+ sodipodi:rx="5.4999981"
+ sodipodi:cy="651.75"
+ sodipodi:cx="895.5"
+ id="path55768"
+ style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ sodipodi:type="arc"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ <path
+ sodipodi:type="arc"
+ style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="path55772"
+ sodipodi:cx="895.5"
+ sodipodi:cy="651.75"
+ sodipodi:rx="5.4999981"
+ sodipodi:ry="5.250001"
+ d="m 901,651.75 a 5.4999981,5.250001 0 1 1 -11,0 5.4999981,5.250001 0 1 1 11,0 z"
+ transform="matrix(0.363636,0,0,0.380952,438.364,-1199.92)"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ <rect
+ y="-982.63782"
+ x="762"
+ height="4"
+ width="51.999973"
+ id="rect55776"
+ style="color:#000000;fill:#fc5c00;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ <rect
+ y="-967.63782"
+ x="788"
+ height="18.000017"
+ width="26"
+ id="rect55778"
+ style="color:#000000;fill:#fc5c00;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ <rect
+ style="color:#000000;fill:#e6e6e6;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect55780"
+ width="22"
+ height="14.000017"
+ x="790"
+ y="-965.63782"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ <rect
+ y="-965.63782"
+ x="790"
+ height="14.000054"
+ width="22"
+ id="rect55782"
+ style="color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ <path
+ style="color:#000000;fill:none;stroke:#ffffff;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible"
+ d="m 792.5,-954.1378 5.5,-5.5 4,4 7.5,-7.5"
+ id="path55796"
+ sodipodi:nodetypes="cccc"
+ inkscape:connector-curvature="0"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ <rect
+ style="color:#000000;fill:#fc5c00;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect55800"
+ width="32"
+ height="4"
+ x="772"
+ y="-975.63782"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ </g>
+ <g
+ id="g57880">
+ <path
+ style="color:#000000;fill:#00a0fc;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ d="m 234,-988.6378 0,4 18,0 0,-4 -18,0 z m 0,8 0,4 18,0 0,-4 -18,0 z m 0,8 0,4 18,0 0,-4 -18,0 z m 0,8 0,4 18,0 0,-4 -18,0 z m 0,8 0,4 64,0 0,-4 -64,0 z m 0,8 0,4 64,0 0,-4 -64,0 z m 0,8 0,4 42,0 0,-4 -42,0 z"
+ id="path55950"
+ inkscape:connector-curvature="0"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ <rect
+ y="-988.63794"
+ x="255.99948"
+ height="28"
+ width="41.999218"
+ id="rect55952"
+ style="color:#000000;fill:#00a0fc;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ <rect
+ style="color:#000000;fill:#00a0fc;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect55954"
+ width="35.999233"
+ height="21.999897"
+ x="259.0007"
+ y="-985.6377"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ <path
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="ccccc"
+ id="path55960"
+ d="m 284.40014,-978.5267 c 2.39995,1.2223 6.5708,5.4785 9.59846,8.5556 l 0,3.6666 -27.59877,0 c 4.80059,-6.111 12.00044,-9.7777 18.00031,-12.2222 z"
+ style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ <path
+ inkscape:connector-curvature="0"
+ style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible"
+ d="m 276.6003,-973.0267 c -3.59197,-3.0353 -5.39988,-5.5 -7.79983,-9.1666 -0.70179,0.2159 -0.67498,0.1338 -1.19998,0 0,0 -3.21063,4.8582 -4.7999,7.3333 -1.58925,2.4752 -4.80059,6.1111 -4.80059,6.1111 l 0,2.4444 27.59878,0 c 0,0 -6.59344,-4.8509 -8.99848,-6.7221 z"
+ id="path55964"
+ sodipodi:nodetypes="ccczcccc"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ <path
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="ccczzzccccccc"
+ id="path55966"
+ d="m 294.99994,-969.7489 c 0,0 -1.54688,0 -1.54688,0 0,0 -6.85294,1.2222 -6.85294,1.2222 0,0 -6.77196,-1.8333 -7.79068,-1.8333 -1.00092,0 -4.20908,0.6111 -4.80941,0.6111 -0.42074,0 -2.99959,-1.2222 -3.60943,-1.2222 -1.00619,0 -2.16569,1.2986 -5.16562,1.8333 0,0 -0.8619,-1.9478 -1.42439,-1.8333 -3.59992,1.4132 -4.80059,1.2222 -4.80059,1.2222 l 0,6.1111 35.9986,0 c 0,0 10e-4,-6.1111 10e-4,-6.1111 l 1.4e-4,0 z"
+ style="color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ <path
+ inkscape:connector-curvature="0"
+ style="color:#000000;fill:#00a0fc;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ d="m 259.58195,-966.3045 -0.58125,3.6667 29.99936,0 1,-1.2223 -2.19997,-1.2221 -5.99988,-1.2223 -5.99987,-0.611 -5.99987,0.611 -6.4938,0.1823 z"
+ id="path55986"
+ sodipodi:nodetypes="cccccccccc"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ <path
+ sodipodi:end="1.5707963"
+ sodipodi:start="0"
+ transform="matrix(0,0.791084,-1.28,0,1701.6,-1333.65)"
+ d="m 448.77203,1099.6875 a 7.5845342,4.6875 0 0 1 -7.58453,4.6875 l 0,-4.6875 z"
+ sodipodi:ry="4.6875"
+ sodipodi:rx="7.5845342"
+ sodipodi:cy="1099.6875"
+ sodipodi:cx="441.1875"
+ id="path55998"
+ style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ sodipodi:type="arc"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ <path
+ style="color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:4;marker:none;visibility:visible;display:inline;overflow:visible"
+ d="m 258.00059,-986.6378 0,24 38,0 0,-24 z m 2,2 34,0 0,20 -34,0 z"
+ id="path56000"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cccccccccc"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ </g>
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect56092"
+ width="64"
+ height="56"
+ x="3637.002"
+ y="-989.63782" />
+ <rect
+ y="-987.63782"
+ x="3639"
+ height="40"
+ width="60"
+ id="rect56096"
+ style="color:#000000;fill:#1a1a1a;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ style="color:#000000;fill:#fc5c00;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect56100"
+ width="60"
+ height="10"
+ x="3639"
+ y="-945.63782" />
+ <path
+ sodipodi:nodetypes="cccccccccccc"
+ inkscape:connector-curvature="0"
+ d="m 3694.5,-986.1379 0,37 m -51,-37 0,37 m 25,-37 0,37 m -28,-3 57,0 m -57,-21 57,0 m -57,-10 57,0"
+ style="fill:none;stroke:#fc5c00;stroke-width:2;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:2, 6;stroke-dashoffset:7.4"
+ id="path56104" />
+ <g
+ transform="matrix(6.0189,0,0,5.83412,-18699.7,-5026.42)"
+ id="g56130"
+ style="font-size:8px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Vegur">
+ <path
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cccccccccccccc"
+ id="path56132"
+ style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Symbol"
+ d="m 3715.7455,692.95371 4.987,0 0,1.02843 -0.4987,0 0,-0.34281 -4.0722,0 -2.0318,4.79935 -0.2951,0 -1.2444,-2.65652 -0.4846,0.25408 -0.1788,-0.62289 1.0057,-0.38281 1.0462,2.04271 1.7663,-4.11954" />
+ </g>
+ <path
+ d="m 3692.1773,-973.6379 -4.9606,0 -6.0976,7.6508 -0.155,0 -5.8908,-7.6508 -5.3741,0 8.4394,10.7273 0,0.1363 -8.7495,11.1364 4.9608,0 6.5108,-8.2873 0.1551,0 6.5109,8.2873 5.3741,0 -8.9561,-11.3181 0,-0.1364 8.2326,-10.5455"
+ style="font-size:51.6529007px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Vegur"
+ id="path56136"
+ sodipodi:nodetypes="ccccccccccccccccc"
+ inkscape:connector-curvature="0" />
+ <g
+ id="g57957">
+ <path
+ inkscape:connector-curvature="0"
+ style="color:#000000;fill:#00a0fc;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ d="m 1539,-988.6378 0,4 64,0 0,-4 -64,0 z m 0,8 0,4 64,0 0,-4 -64,0 z m 0,8 0,4 37.3125,0 c 2.631,-1.2734 5.5685,-2 8.6875,-2 3.119,0 6.0565,0.7266 8.6875,2 l 9.3125,0 0,-4 -64,0 z m 0,8 0,4 28.6875,0 c 0.8437,-1.4566 1.8605,-2.8059 3.0313,-4 l -31.7188,0 z m 60.2812,0 c 1.1708,1.1941 2.1876,2.5434 3.0313,4 l 0.6875,0 0,-4 -3.7188,0 z m -60.2812,8 0,4 26.0938,0 c 0.1379,-1.3796 0.4398,-2.7175 0.8437,-4 l -26.9375,0 z m 0,8 0,4 26.9375,0 c -0.4039,-1.2825 -0.7058,-2.6204 -0.8437,-4 l -26.0938,0 z m 0,8 0,4 31.7188,0 c -1.1708,-1.1941 -2.1876,-2.5434 -3.0313,-4 l -28.6875,0 z"
+ id="path56166" />
+ <path
+ sodipodi:type="arc"
+ style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:0.94827598;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="path56170"
+ sodipodi:cx="1184.5"
+ sodipodi:cy="675.5"
+ sodipodi:rx="16.5"
+ sodipodi:ry="16.5"
+ d="m 1201,675.5 a 16.5,16.5 0 1 1 -33,0 16.5,16.5 0 1 1 33,0 z"
+ transform="matrix(1.05455,0,0,1.05455,335.891,-1662.98)"
+ inkscape:export-filename="path12513.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90"
+ clip-path="url(#clipPath9665)" />
+ <g
+ style="stroke:#00a0fc;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none"
+ transform="translate(0,130)"
+ id="g56172">
+ <path
+ transform="matrix(1.14061,0,0,1.13981,-1909.83,155.42)"
+ clip-path="url(#clipPath9653)"
+ sodipodi:nodetypes="cz"
+ id="path56174"
+ d="m 3066.2254,-1069.3064 c -2.0507,-12.7551 -13.5915,-15.1323 -19.2204,-13.1889"
+ style="fill:none;stroke:#00a0fc;stroke-width:1.75406003;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ inkscape:connector-curvature="0" />
+ <path
+ transform="matrix(1.15392,0,0,1.15392,-1950.6,170.948)"
+ clip-path="url(#clipPath9661)"
+ sodipodi:nodetypes="cz"
+ id="path56176"
+ d="m 3068.184,-1099.5366 c -15.8287,5.5755 -16.1955,20.8148 -12.4084,27.5262"
+ style="fill:none;stroke:#00a0fc;stroke-width:1.73321998;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ inkscape:connector-curvature="0" />
+ <path
+ transform="matrix(1.15392,0,0,1.15392,-1950.3,169.987)"
+ clip-path="url(#clipPath9657)"
+ style="fill:none;stroke:#00a0fc;stroke-width:1.73321998;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ d="m 3078.4656,-1088.3913 c -15.558,-9.6896 -30.2603,-1.1652 -34.1742,5.8114"
+ id="path56178"
+ sodipodi:nodetypes="cz"
+ inkscape:connector-curvature="0" />
+ <path
+ transform="matrix(1.15392,0,0,1.15392,-1950.6,170.948)"
+ clip-path="url(#clipPath9649)"
+ style="fill:none;stroke:#00a0fc;stroke-width:1.73321998;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ d="m 3062.7593,-1100.0911 c 15.4435,6.5674 14.8438,21.7994 10.639,28.2572"
+ id="path56180"
+ sodipodi:nodetypes="cz"
+ inkscape:connector-curvature="0" />
+ <path
+ transform="matrix(1.15392,0,0,1.15392,-1950.6,170.948)"
+ clip-path="url(#clipPath9645)"
+ style="fill:none;stroke:#00a0fc;stroke-width:1.73321998;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ d="m 3072.4132,-1068.2406 c 1.6468,-20.2395 -13.394,-26.7448 -21.8167,-25.1165"
+ id="path56182"
+ sodipodi:nodetypes="cz"
+ inkscape:connector-curvature="0" />
+ <path
+ transform="matrix(1.15392,0,0,1.15392,-1950.6,170.948)"
+ clip-path="url(#clipPath9641)"
+ style="fill:none;stroke:#00a0fc;stroke-width:1.73321998;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ d="m 3085.0144,-1076.9486 c -15.8776,-5.4349 -25.6105,6.297 -26.7982,13.9111"
+ id="path56184"
+ sodipodi:nodetypes="cz"
+ inkscape:connector-curvature="0" />
+ <path
+ transform="matrix(1.15392,0,0,1.15392,-1950.6,170.948)"
+ clip-path="url(#clipPath9637)"
+ sodipodi:nodetypes="cz"
+ id="path56186"
+ d="m 3086.2173,-1079.8642 c -14.1391,-9.0401 -26.3732,0.053 -29.3302,7.1696"
+ style="fill:none;stroke:#00a0fc;stroke-width:1.73321998;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ inkscape:connector-curvature="0" />
+ <path
+ transform="matrix(1.15392,0,0,1.15392,-1950.6,170.948)"
+ clip-path="url(#clipPath9629)"
+ style="fill:none;stroke:#00a0fc;stroke-width:1.73321998;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ d="m 3078.5198,-1092.1932 c -16.7706,-0.6199 -22.7025,13.4218 -21.6414,21.0549"
+ id="path56188"
+ sodipodi:nodetypes="cz"
+ inkscape:connector-curvature="0" />
+ </g>
+ </g>
+ <rect
+ style="color:#000000;fill:#cccccc;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect56226"
+ width="64"
+ height="55"
+ x="3898"
+ y="-988.63782"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ <rect
+ style="color:#000000;fill:#333333;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect56228"
+ width="60"
+ height="51"
+ x="3900"
+ y="-986.63782"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ <rect
+ style="color:#000000;fill:#ffd74c;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect56242"
+ width="12"
+ height="19.99983"
+ x="3931"
+ y="-957.63782"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ <rect
+ style="color:#000000;fill:#00a0fc;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect56246"
+ width="12"
+ height="33"
+ x="3903"
+ y="-970.638"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ <rect
+ y="-983.63806"
+ x="3917"
+ height="46"
+ width="12"
+ id="rect56250"
+ style="color:#000000;fill:#fc5c00;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ <rect
+ y="-967.63788"
+ x="3945"
+ height="30"
+ width="12"
+ id="rect56252"
+ style="color:#000000;fill:#2cee0e;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-256.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ <g
+ id="g57833"
+ transform="translate(0,3)">
+ <rect
+ style="color:#000000;fill:#023f62;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect57811"
+ width="30"
+ height="22"
+ x="3376"
+ y="-988.63782" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ style="color:#000000;fill:#1c99e0;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect56310"
+ width="18"
+ height="13"
+ x="3388"
+ y="-988.63782" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ y="-986.6377"
+ x="3390.0002"
+ height="8.9998732"
+ width="13.999336"
+ id="rect56312"
+ style="color:#000000;fill:#023f62;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <path
+ sodipodi:nodetypes="cccccccc"
+ id="path56320"
+ d="m 3398.1669,-979.7916 -4.0835,-4.8462 -4.0834,5.923 0,1.077 14,0 0,-1.077 -2.9164,-3.2307 -2.9167,2.1539 z"
+ style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible"
+ inkscape:connector-curvature="0" />
+ <rect
+ style="color:#000000;fill:#1c99e0;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect56324"
+ width="10"
+ height="2"
+ x="3376"
+ y="-988.63782" />
+ <rect
+ y="-984.63782"
+ x="3376"
+ height="2"
+ width="10"
+ id="rect56326"
+ style="color:#000000;fill:#1c99e0;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ y="-980.63782"
+ x="3376"
+ height="2"
+ width="10"
+ id="rect56328"
+ style="color:#000000;fill:#1c99e0;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ style="color:#000000;fill:#1c99e0;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect56330"
+ width="10"
+ height="2"
+ x="3376"
+ y="-976.63782" />
+ <rect
+ y="-972.63782"
+ x="3376"
+ height="2"
+ width="30"
+ id="rect56332"
+ style="color:#000000;fill:#1c99e0;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ y="-968.63782"
+ x="3376"
+ height="2"
+ width="24"
+ id="rect56334"
+ style="color:#000000;fill:#1c99e0;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ </g>
+ <rect
+ y="-984.6355"
+ x="4167"
+ height="2"
+ width="4"
+ id="rect56352"
+ style="color:#000000;fill:#fc5c00;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ y="-976.6355"
+ x="4185"
+ height="2"
+ width="4"
+ id="rect56354"
+ style="color:#000000;fill:#fc5c00;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ y="-968.6355"
+ x="4183"
+ height="2"
+ width="4"
+ id="rect56356"
+ style="color:#000000;fill:#fc5c00;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ y="-964.6355"
+ x="4215"
+ height="2"
+ width="8"
+ id="rect56358"
+ style="color:#000000;fill:#fc5c00;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ y="-960.6355"
+ x="4219"
+ height="2"
+ width="2"
+ id="rect56360"
+ style="color:#000000;fill:#fc5c00;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ y="-952.6355"
+ x="4179"
+ height="2"
+ width="4"
+ id="rect56362"
+ style="color:#000000;fill:#fc5c00;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <g
+ style="fill:#2cee0e;fill-opacity:1"
+ id="g56364"
+ transform="translate(0,130)">
+ <rect
+ style="color:#000000;fill:#2cee0e;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect56366"
+ width="22"
+ height="2"
+ x="4167"
+ y="-1118.6355" />
+ <rect
+ style="color:#000000;fill:#2cee0e;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect56368"
+ width="12"
+ height="2"
+ x="4167"
+ y="-1110.6355" />
+ <rect
+ style="color:#000000;fill:#2cee0e;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect56370"
+ width="12"
+ height="2"
+ x="4167"
+ y="-1106.6355" />
+ <rect
+ style="color:#000000;fill:#2cee0e;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect56372"
+ width="8"
+ height="2"
+ x="4175"
+ y="-1094.6355" />
+ <rect
+ style="color:#000000;fill:#2cee0e;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect56374"
+ width="2"
+ height="2"
+ x="4175"
+ y="-1098.6355" />
+ <rect
+ style="color:#000000;fill:#2cee0e;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect56376"
+ width="8"
+ height="2"
+ x="4175"
+ y="-1090.6355" />
+ <rect
+ style="color:#000000;fill:#2cee0e;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect56378"
+ width="4"
+ height="2"
+ x="4213"
+ y="-1090.6355" />
+ <rect
+ style="color:#000000;fill:#2cee0e;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect56380"
+ width="2"
+ height="2"
+ x="4177"
+ y="-1086.6355" />
+ <rect
+ style="color:#000000;fill:#2cee0e;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect56382"
+ width="2"
+ height="2"
+ x="4171"
+ y="-1082.6355" />
+ <rect
+ style="color:#000000;fill:#2cee0e;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect56384"
+ width="8"
+ height="2"
+ x="4175"
+ y="-1078.6355" />
+ <rect
+ style="color:#000000;fill:#2cee0e;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect56386"
+ width="8"
+ height="2"
+ x="4175"
+ y="-1074.6355" />
+ </g>
+ <rect
+ y="-944.6355"
+ x="4185"
+ height="2"
+ width="2"
+ id="rect56388"
+ style="color:#000000;fill:url(#linearGradient56896) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ style="color:#000000;fill:#fc5c00;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect56390"
+ width="4"
+ height="2"
+ x="4177"
+ y="-940.6355" />
+ <g
+ style="fill:#00a0fc;fill-opacity:1"
+ id="g56392"
+ transform="translate(0,130)">
+ <rect
+ style="color:#000000;fill:#00a0fc;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect56394"
+ width="12"
+ height="2"
+ x="4187"
+ y="-1110.6355" />
+ <rect
+ style="color:#000000;fill:#00a0fc;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect56396"
+ width="6"
+ height="2"
+ x="4159"
+ y="-1118.6355" />
+ <rect
+ style="color:#000000;fill:#00a0fc;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect56398"
+ width="6"
+ height="2"
+ x="4191"
+ y="-1118.6355" />
+ <rect
+ style="color:#000000;fill:#00a0fc;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect56400"
+ width="6"
+ height="2"
+ x="4159"
+ y="-1114.6355" />
+ <rect
+ style="color:#000000;fill:#00a0fc;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect56402"
+ width="4"
+ height="2"
+ x="4173"
+ y="-1114.6355" />
+ <rect
+ style="color:#000000;fill:#00a0fc;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect56404"
+ width="12"
+ height="2"
+ x="4179"
+ y="-1114.6355" />
+ <rect
+ style="color:#000000;fill:#00a0fc;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect56406"
+ width="6"
+ height="2"
+ x="4159"
+ y="-1110.6355" />
+ <rect
+ style="color:#000000;fill:#00a0fc;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect56408"
+ width="4"
+ height="2"
+ x="4181"
+ y="-1110.6355" />
+ <rect
+ style="color:#000000;fill:#00a0fc;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect56410"
+ width="2"
+ height="2"
+ x="4179"
+ y="-1098.6355" />
+ <rect
+ style="color:#000000;fill:#00a0fc;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect56412"
+ width="4"
+ height="2"
+ x="4167"
+ y="-1102.6355" />
+ <rect
+ style="color:#000000;fill:#00a0fc;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect56414"
+ width="8"
+ height="2"
+ x="4173"
+ y="-1102.6355" />
+ <rect
+ style="color:#000000;fill:#00a0fc;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect56416"
+ width="8"
+ height="2"
+ x="4183"
+ y="-1102.6355" />
+ <rect
+ style="color:#000000;fill:#00a0fc;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect56418"
+ width="5.8000002"
+ height="2"
+ x="4203"
+ y="-1102.6355" />
+ <rect
+ style="color:#000000;fill:#00a0fc;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect56420"
+ width="6"
+ height="2"
+ x="4167"
+ y="-1098.6355" />
+ <rect
+ style="color:#000000;fill:#00a0fc;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect56422"
+ width="2"
+ height="2"
+ x="4189"
+ y="-1098.6355" />
+ <rect
+ style="color:#000000;fill:#00a0fc;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect56424"
+ width="2"
+ height="2"
+ x="4181"
+ y="-1106.6355" />
+ <rect
+ style="color:#000000;fill:#00a0fc;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect56426"
+ width="2"
+ height="2"
+ x="4185"
+ y="-1094.6377" />
+ <rect
+ style="color:#000000;fill:#00a0fc;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect56428"
+ width="2"
+ height="2"
+ x="4221"
+ y="-1090.6355" />
+ <rect
+ style="color:#000000;fill:#00a0fc;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect56430"
+ width="8"
+ height="2"
+ x="4167"
+ y="-1086.6355" />
+ <rect
+ style="color:#000000;fill:#00a0fc;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect56432"
+ width="2"
+ height="2"
+ x="4167"
+ y="-1082.6355" />
+ <rect
+ style="color:#000000;fill:#00a0fc;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect56434"
+ width="2"
+ height="2"
+ x="4175"
+ y="-1082.6355" />
+ <rect
+ style="color:#000000;fill:#00a0fc;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect56436"
+ width="2"
+ height="2"
+ x="4185"
+ y="-1078.6355" />
+ <rect
+ style="color:#000000;fill:#00a0fc;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect56438"
+ width="4"
+ height="2"
+ x="4167"
+ y="-1070.6355" />
+ <rect
+ style="color:#000000;fill:#00a0fc;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect56440"
+ width="2"
+ height="2"
+ x="4173"
+ y="-1070.6355" />
+ <rect
+ style="color:#000000;fill:#00a0fc;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect56442"
+ width="4"
+ height="2"
+ x="4159"
+ y="-1066.6355" />
+ <rect
+ style="color:#000000;fill:#00a0fc;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect56444"
+ width="4"
+ height="2"
+ x="4165"
+ y="-1066.6355" />
+ <rect
+ y="-1070.6355"
+ x="4183"
+ height="2"
+ width="6"
+ id="rect56446"
+ style="color:#000000;fill:#00a0fc;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ style="color:#000000;fill:#00a0fc;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect56448"
+ width="6"
+ height="2"
+ x="4213"
+ y="-1070.6355" />
+ </g>
+ <rect
+ y="-940.6355"
+ x="4207"
+ height="2"
+ width="4"
+ id="rect56450"
+ style="color:#000000;fill:#fc5c00;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <use
+ style="opacity:0.5"
+ height="1085"
+ width="5033"
+ transform="matrix(0,0.8,-1,0,3411.36,-4531.04)"
+ id="use56474"
+ xlink:href="#use16750-8"
+ y="0"
+ x="0" />
+ <path
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cccccccccccccccc"
+ id="path56480"
+ d="m 4451,-985.6378 0,0.7241 0,40.5518 0,0.7241 0.7174,0 31.5652,0 0.7174,0 0,-0.7241 0,-25.3449 0,-0.3169 -0.2242,-0.2262 -14.9755,-15.2069 -0.1794,-0.181 -0.3138,0 -16.5897,0 -0.7174,0 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono" />
+ <path
+ inkscape:connector-curvature="0"
+ id="path56464"
+ d="m 4457.625,-975.3878 c -1.0167,0 -2.0334,0.4084 -2.8125,1.1875 l -12.0625,12.0625 -4.7188,-4.75 c -2.3077,-2.2002 -5.8734,-0.325 -6,2.875 l -0.031,26.1875 c 0,2.1946 1.9737,4.1898 4.1562,4.1875 l 26.0626,-0.031 c 3.4639,0 4.7367,-4.1314 2.875,-6.0312 l -4.7188,-4.7188 12.125,-12.0937 c 1.5581,-1.5581 1.5581,-4.0669 0,-5.625 L 4460.4377,-974.2 c -0.7791,-0.7791 -1.7958,-1.1875 -2.8125,-1.1875 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:#2cee0e;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono" />
+ <g
+ id="g57891">
+ <path
+ inkscape:connector-curvature="0"
+ id="path55826"
+ d="m 495,-988.6378 0,2 0,8 0,2 0,8 0,2 0,8 0,2 0,8 0,2 0,8 0,2 60,0 0,-2 0,-50 -58,0 -2,0 z"
+ style="color:#000000;fill:#2cee0e;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <rect
+ style="color:#000000;fill:#106802;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect55832"
+ width="17"
+ height="8"
+ x="497"
+ y="-986.63782"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(39,0)"
+ id="use57278"
+ xlink:href="#rect55832"
+ y="0"
+ x="0" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect55832"
+ id="use57280"
+ transform="matrix(1.05882,0,0,1,-10.2353,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect55832"
+ id="use57304"
+ transform="translate(39,10)"
+ width="5033"
+ height="1085" />
+ <use
+ height="1085"
+ width="5033"
+ transform="matrix(1.05882,0,0,1,-10.2353,10)"
+ id="use57306"
+ xlink:href="#rect55832"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(39,20)"
+ id="use57310"
+ xlink:href="#rect55832"
+ y="0"
+ x="0" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect55832"
+ id="use57312"
+ transform="matrix(1.05882,0,0,1,-10.2353,20)"
+ width="5033"
+ height="1085" />
+ <use
+ height="1085"
+ width="5033"
+ transform="matrix(1.05882,0,0,1,-10.2353,30)"
+ id="use57318"
+ xlink:href="#rect55832"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(0,10)"
+ id="use57320"
+ xlink:href="#rect55832"
+ y="0"
+ x="0" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect55832"
+ id="use57322"
+ transform="translate(0,20)"
+ width="5033"
+ height="1085" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(0,30)"
+ id="use57324"
+ xlink:href="#rect55832"
+ y="0"
+ x="0" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect55832"
+ id="use57328"
+ transform="matrix(1.05882,0,0,1,-10.2353,40)"
+ width="5033"
+ height="1085" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ style="color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect57421"
+ width="38"
+ height="27.999968"
+ x="519"
+ y="-962.63782" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect55832"
+ id="use57330"
+ transform="translate(0,40)"
+ width="5033"
+ height="1085" />
+ <rect
+ y="-960.63782"
+ x="521"
+ height="27.999968"
+ width="38"
+ id="rect55866"
+ style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ style="color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect55868"
+ width="34"
+ height="23.999983"
+ x="523"
+ y="-958.63782" />
+ <rect
+ y="-952.63782"
+ x="525"
+ height="15.999921"
+ width="6"
+ id="rect55880"
+ style="color:#000000;fill:#00a0fc;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ <rect
+ style="color:#000000;fill:#fc5c00;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect55886"
+ width="6"
+ height="20"
+ x="533"
+ y="-956.63794"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ <rect
+ y="-946.63782"
+ x="541"
+ height="9.9999142"
+ width="6"
+ id="rect55890"
+ style="color:#000000;fill:#ffd74c;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ <rect
+ style="color:#000000;fill:#2cee0e;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect55894"
+ width="6"
+ height="13.999983"
+ x="549"
+ y="-950.63782"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ y="-986.63782"
+ x="497"
+ height="8"
+ width="17"
+ id="rect57415"
+ style="color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.01121998;marker:none;visibility:visible;display:inline;overflow:visible" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(39,0)"
+ id="use57417"
+ xlink:href="#rect57415"
+ y="0"
+ x="0" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect57415"
+ id="use57419"
+ transform="matrix(1.05882,0,0,1,-10.2353,0)"
+ width="5033"
+ height="1085" />
+ </g>
+ <g
+ id="g57937">
+ <path
+ transform="matrix(1.0303,0,0,1.0303,-183.394,-1664.61)"
+ d="m 1201,675.5 a 16.5,16.5 0 1 1 -33,0 16.5,16.5 0 1 1 33,0 z"
+ sodipodi:ry="16.5"
+ sodipodi:rx="16.5"
+ sodipodi:cy="675.5"
+ sodipodi:cx="1184.5"
+ id="path56034"
+ style="opacity:0.6;color:#000000;fill:#f09e6f;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3.88234997;marker:none;visibility:visible;display:inline;overflow:visible"
+ sodipodi:type="arc"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ <path
+ sodipodi:type="arc"
+ style="color:#000000;fill:#622502;fill-opacity:1;fill-rule:nonzero;stroke:#fc5c00;stroke-width:1.73684001;stroke-miterlimit:4;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="path56036"
+ sodipodi:cx="1184.5"
+ sodipodi:cy="675.5"
+ sodipodi:rx="16.5"
+ sodipodi:ry="16.5"
+ d="m 1201,675.5 a 16.5,16.5 0 1 1 -33,0 16.5,16.5 0 1 1 33,0 z"
+ transform="matrix(1.15152,0,0,1.15152,-326.97,-1746.49)"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ <path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:#876900;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:4;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Sans"
+ d="m 1048,-942.6378 a 1.0001,1.0001 0 0 1 -1,-1 l 0,-32 a 1.0001,1.0001 0 0 1 1,-1 l 32,0 a 1.0001,1.0001 0 0 1 1,1 l 0,32 a 1.0001,1.0001 0 0 1 -1,1 l -32,0 z m 1,-2 30,0 0,-30 -30,0 0,30 z"
+ id="path56042"
+ inkscape:connector-curvature="0"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ <rect
+ style="color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:4;marker:none;visibility:visible;display:inline;overflow:visible"
+ width="30"
+ height="30"
+ x="1049"
+ y="944.63782"
+ transform="scale(1,-1)"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90"
+ id="rect56044" />
+ <path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:#ffd74c;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:4;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Sans"
+ d="m 1041.1003,-968.55934 c -0.2217,0.079 -0.4124,0.2313 -0.5295,0.424 l -9.8301,16.0413 -10.0585,15.7153 c -0.4092,0.5886 -0.1611,1.7898 1.0709,1.7394 l 19.7251,0 19.3839,0 c 1.1879,0 1.4314,-1.2862 0.7975,-2.39 l -9.4439,-15.0647 -9.8301,-16.0413 c -0.2412,-0.4057 -0.825,-0.5983 -1.2853,-0.424 z m 0.3779,2.8974 8.9984,14.4866 8.9983,14.5573 -17.9967,0 -17.9966,0 8.9982,-14.5573 z"
+ id="path56052"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cccccccccccccccccc"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ <path
+ id="path56054"
+ sodipodi:type="star"
+ style="color:#000000;fill:#876900;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.88248003;marker:none;visibility:visible;display:inline;overflow:visible"
+ sodipodi:sides="3"
+ sodipodi:cx="1162"
+ sodipodi:cy="896"
+ sodipodi:r1="9.4339809"
+ sodipodi:r2="4.7169905"
+ sodipodi:arg1="0.52359878"
+ sodipodi:arg2="1.5707963"
+ inkscape:flatsided="false"
+ inkscape:rounded="0"
+ inkscape:randomized="0"
+ d="m 1170.1701,900.71699 -8.1701,0 -8.1701,0 4.0851,-7.07549 4.085,-7.07548 4.085,7.07548 4.0851,7.07549 z"
+ transform="matrix(2.20316,0,0,2.04933,-1518.58,-2782.5)"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ <rect
+ style="color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#2cee0e;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect56064"
+ width="5"
+ height="5"
+ x="1019"
+ y="-938.63782"
+ inkscape:export-filename="/home/paulo/LibreOffice Work/Icons/LibreOffice_Initial_Icons-Paulo-3-128.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(40,0)"
+ id="use57672"
+ xlink:href="#rect56064"
+ y="0"
+ x="0" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect56064"
+ id="use57676"
+ transform="translate(20,-33)"
+ width="5033"
+ height="1085" />
+ </g>
+ <use
+ x="0"
+ y="0"
+ xlink:href="#g57833"
+ id="use57845"
+ transform="translate(34,0)"
+ width="5033"
+ height="1085" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(34,26)"
+ id="use57847"
+ xlink:href="#g57833"
+ y="0"
+ x="0" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#g57833"
+ id="use57849"
+ transform="translate(0,26)"
+ width="5033"
+ height="1085" />
+ <path
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:#2cee0e;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono"
+ d="m 4453,-983.6378 0,0.7241 0,36.5518 0,0.7241 0.7174,0 27.5652,0 0.7174,0 0,-0.7241 0,-23.3449 0,-0.3169 -0.2242,-0.2262 -12.9755,-13.2069 -0.1794,-0.181 -0.3138,0 -14.5897,0 z"
+ id="path57876"
+ sodipodi:nodetypes="cccccccccccccccc"
+ inkscape:connector-curvature="0" />
+ <path
+ sodipodi:nodetypes="cccccccccccccsc"
+ inkscape:connector-curvature="0"
+ id="path56470"
+ d="m 4455.9057,-970.51 -12.8282,12.6863 c -0.1167,0.1168 -0.2155,0.2513 -0.3149,0.3778 l -4.8961,-5.065 c -1.8661,-1.7781 -2.7329,-1.2637 -2.8352,1.3223 l -0.031,22.1504 c 0,1.7736 0.6059,2.4023 2.3708,2.4004 l 22.0674,-0.031 c 2.801,0 2.8285,-1.3298 1.323,-2.8651 l -5.0361,-5.0337 c 0.1497,-0.1128 0.3046,-0.21 0.4411,-0.3464 l 12.6558,-12.6867 c 1.5708,-1.5698 1.5708,-2.0973 0,-3.6673 l -9.2456,-9.2415 c -1.6107,-1.61 -2.1344,-1.4894 -3.671,-5e-4 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Andale Mono" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#g57917"
+ id="use57972"
+ transform="translate(1571,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#g57880"
+ id="use57974"
+ transform="translate(1571,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#g57891"
+ id="use57976"
+ transform="translate(1571,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#g57937"
+ id="use57978"
+ transform="translate(1571,0)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#g57957"
+ id="use57980"
+ transform="translate(1571,0)"
+ width="5033"
+ height="1085" />
+ <path
+ inkscape:connector-curvature="0"
+ style="color:#000000;fill:#808080;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ d="m 4194.5992,-973.69768 c -2.7739,0.869 -5.283,2.3366 -7.3714,4.2569 l 2.7414,6.238 c -0.7422,0.953 -1.353,2.0112 -1.8152,3.1466 l -6.777,0.7418 c -0.3043,1.3697 -0.4654,2.7956 -0.4654,4.2569 0,1.4617 0.1609,2.8871 0.4654,4.2569 l 6.777,0.7418 c 0.4622,1.1354 1.073,2.1936 1.8152,3.1466 l -2.7414,6.238 c 2.0883,1.9189 4.5978,3.3881 7.3714,4.2569 l 4.0313,-5.4962 c 0.5931,0.081 1.1997,0.1244 1.8151,0.1244 0.6154,0 1.222,-0.043 1.8152,-0.1244 l 4.0313,5.4962 c 2.7739,-0.869 5.2829,-2.3365 7.3712,-4.2569 l -2.7412,-6.238 c 0.7421,-0.953 1.3529,-2.0112 1.8152,-3.1466 l 6.7769,-0.7418 c 0.3043,-1.3697 0.4654,-2.7956 0.4654,-4.2569 0,-1.4613 -0.161,-2.8872 -0.4654,-4.2569 l -6.7769,-0.7418 c -0.4623,-1.1354 -1.0731,-2.1936 -1.8152,-3.1466 l 2.7412,-6.238 c -2.0883,-1.9203 -4.5973,-3.3879 -7.3712,-4.2569 l -4.0313,5.4962 c -0.5932,-0.081 -1.1998,-0.1244 -1.8152,-0.1244 -0.6154,0 -1.222,0.043 -1.8151,0.1244 l -4.0313,-5.4962 z m 5.8464,13.554 c 2.8091,0 5.0862,2.2772 5.0862,5.0862 0,2.809 -2.2771,5.0862 -5.0862,5.0862 -2.809,0 -5.0861,-2.2772 -5.0861,-5.0862 0,-2.809 2.2771,-5.0862 5.0861,-5.0862 z"
+ id="path4580-5-7-0-5-6-2" />
+ <path
+ inkscape:connector-curvature="0"
+ style="color:#000000;fill:none;stroke:#ffffff;stroke-width:2;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible"
+ d="m 4194.5899,-973.84 c -2.7739,0.869 -5.283,2.3366 -7.3714,4.2569 l 2.7414,6.238 c -0.7422,0.953 -1.353,2.0112 -1.8152,3.1466 l -6.777,0.7418 c -0.3043,1.3697 -0.4654,2.7956 -0.4654,4.2569 0,1.4617 0.1609,2.8871 0.4654,4.2569 l 6.777,0.7418 c 0.4622,1.1354 1.073,2.1936 1.8152,3.1466 l -2.7414,6.238 c 2.0883,1.9189 4.5978,3.3881 7.3714,4.2569 l 4.0313,-5.4962 c 0.5931,0.081 1.1997,0.1244 1.8151,0.1244 0.6154,0 1.222,-0.043 1.8152,-0.1244 l 4.0313,5.4962 c 2.7739,-0.869 5.2829,-2.3365 7.3712,-4.2569 l -2.7412,-6.238 c 0.7421,-0.953 1.3529,-2.0112 1.8152,-3.1466 l 6.7769,-0.7418 c 0.3043,-1.3697 0.4654,-2.7956 0.4654,-4.2569 0,-1.4613 -0.161,-2.8872 -0.4654,-4.2569 l -6.7769,-0.7418 c -0.4623,-1.1354 -1.0731,-2.1936 -1.8152,-3.1466 l 2.7412,-6.238 c -2.0883,-1.9203 -4.5973,-3.3879 -7.3712,-4.2569 l -4.0313,5.4962 c -0.5932,-0.081 -1.1998,-0.1244 -1.8152,-0.1244 -0.6154,0 -1.222,0.043 -1.8151,0.1244 z"
+ id="path4580-5-7-0-5-6-1-6-5"
+ sodipodi:nodetypes="cccccsccccccsccccccsccccccscc" />
+ <path
+ inkscape:connector-curvature="0"
+ d="m 4200.4375,-951.25604 c 2.2979,0 4.1563,-1.8582 4.1563,-4.1562 0,-2.2973 -1.8584,-4.1246 -4.1563,-4.125 -2.2976,0 -4.125,1.8279 -4.125,4.125 0,2.2979 1.8275,4.1567 4.125,4.1562 z m 0,2 c -3.3789,7e-4 -6.125,-2.7774 -6.125,-6.1562 0,-3.3784 2.7462,-6.125 6.125,-6.125 3.3787,5e-4 6.1563,2.7468 6.1563,6.125 0,3.3787 -2.7776,6.1562 -6.1563,6.1562 z"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#000000;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;font-family:Sans"
+ id="path19099-8" />
+ <g
+ style="color:#000000;fill:#808080;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:2.14590001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="g35932-5-1"
+ transform="matrix(0.466006,0,0,0.466006,2136.27,-1128.46)">
+ <path
+ id="path4580-5-7-0-5-6-2-8-2"
+ d="m 4318.1728,654.58023 c -2.9763,0.93246 -5.6684,2.50704 -7.9091,4.56747 l 2.9413,6.69304 c -0.7963,1.02254 -1.4517,2.15793 -1.9476,3.37617 l -7.2714,0.79584 c -0.3265,1.46963 -0.4993,2.99956 -0.4993,4.56748 0,1.56836 0.1726,3.09766 0.4993,4.56747 l 7.2714,0.79585 c 0.4959,1.21824 1.1513,2.35363 1.9476,3.37618 l -2.9413,6.69303 c 2.2406,2.05891 4.9332,3.63523 7.9091,4.56747 l 4.3253,-5.89719 c 0.6364,0.087 1.2873,0.13347 1.9476,0.13347 0.6603,0 1.3111,-0.0464 1.9476,-0.13347 l 4.3253,5.89719 c 2.9763,-0.93247 5.6683,-2.50704 7.9089,-4.56747 l -2.9411,-6.69303 c 0.7962,-1.02255 1.4516,-2.15794 1.9476,-3.37618 l 7.2713,-0.79585 c 0.3265,-1.46962 0.4993,-2.99956 0.4993,-4.56747 0,-1.56792 -0.1727,-3.09785 -0.4993,-4.56748 l -7.2713,-0.79584 c -0.496,-1.21824 -1.1514,-2.35363 -1.9476,-3.37617 l 2.9411,-6.69304 c -2.2406,-2.06043 -4.9326,-3.63501 -7.9089,-4.56747 l -4.3253,5.89718 c -0.6365,-0.087 -1.2873,-0.13346 -1.9476,-0.13346 -0.6603,0 -1.3112,0.0464 -1.9476,0.13346 l -4.3253,-5.89718 z m 6.2729,14.54275 c 3.014,0 5.4572,2.4433 5.4572,5.45725 0,3.01395 -2.4432,5.45724 -5.4572,5.45724 -3.014,0 -5.4572,-2.44329 -5.4572,-5.45724 0,-3.01395 2.4432,-5.45725 5.4572,-5.45725 z"
+ style="color:#000000;fill:#808080;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:2.14590001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible"
+ inkscape:connector-curvature="0" />
+ <path
+ id="path4580-5-7-0-5-6-1-9-0"
+ d="m 4318.1728,654.58023 c -2.9763,0.93246 -5.6684,2.50704 -7.9091,4.56747 l 2.9413,6.69304 c -0.7963,1.02254 -1.4517,2.15793 -1.9476,3.37617 l -7.2714,0.79584 c -0.3265,1.46963 -0.4993,2.99956 -0.4993,4.56748 0,1.56836 0.1726,3.09766 0.4993,4.56747 l 7.2714,0.79585 c 0.4959,1.21824 1.1513,2.35363 1.9476,3.37618 l -2.9413,6.69303 c 2.2406,2.05891 4.9332,3.63523 7.9091,4.56747 l 4.3253,-5.89719 c 0.6364,0.087 1.2873,0.13347 1.9476,0.13347 0.6603,0 1.3111,-0.0464 1.9476,-0.13347 l 4.3253,5.89719 c 2.9763,-0.93247 5.6683,-2.50704 7.9089,-4.56747 l -2.9411,-6.69303 c 0.7962,-1.02255 1.4516,-2.15794 1.9476,-3.37618 l 7.2713,-0.79585 c 0.3265,-1.46962 0.4993,-2.99956 0.4993,-4.56747 0,-1.56792 -0.1727,-3.09785 -0.4993,-4.56748 l -7.2713,-0.79584 c -0.496,-1.21824 -1.1514,-2.35363 -1.9476,-3.37617 l 2.9411,-6.69304 c -2.2406,-2.06043 -4.9326,-3.63501 -7.9089,-4.56747 l -4.3253,5.89718 c -0.6365,-0.087 -1.2873,-0.13346 -1.9476,-0.13346 -0.6603,0 -1.3112,0.0464 -1.9476,0.13346 l -4.3253,-5.89718 z m 6.2729,14.54275 c 3.014,0 5.4572,2.4433 5.4572,5.45725 0,3.01395 -2.4432,5.45724 -5.4572,5.45724 -3.014,0 -5.4572,-2.44329 -5.4572,-5.45724 0,-3.01395 2.4432,-5.45725 5.4572,-5.45725 z"
+ style="color:#000000;fill:#808080;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:2.14590001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible"
+ inkscape:connector-curvature="0" />
+ </g>
+ <path
+ inkscape:connector-curvature="0"
+ style="color:#000000;fill:url(#linearGradient72404) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.68179601;marker:none;visibility:visible;display:inline;overflow:visible"
+ d="m 4141.905,-772.29147 c -0.9941,0.3114 -1.8932,0.8373 -2.6416,1.5255 l 0.9824,2.2354 c -0.266,0.3415 -0.4848,0.7207 -0.6505,1.1275 l -2.4286,0.2659 c -0.109,0.4908 -0.1667,1.0018 -0.1667,1.5254 0,0.5238 0.058,1.0346 0.1667,1.5255 l 2.4286,0.2658 c 0.1657,0.4069 0.3845,0.7861 0.6505,1.1276 l -0.9824,2.2354 c 0.7484,0.6876 1.6477,1.2141 2.6416,1.5255 l 1.4445,-1.9696 c 0.2126,0.029 0.43,0.045 0.6505,0.045 0.2205,0 0.4379,-0.015 0.6505,-0.045 l 1.4445,1.9696 c 0.9941,-0.3115 1.8932,-0.8374 2.6416,-1.5255 l -0.9824,-2.2354 c 0.266,-0.3415 0.4848,-0.7207 0.6505,-1.1276 l 2.4286,-0.2658 c 0.109,-0.4908 0.1667,-1.0018 0.1667,-1.5255 0,-0.5236 -0.058,-1.0346 -0.1667,-1.5254 l -2.4286,-0.2659 c -0.1657,-0.4068 -0.3845,-0.786 -0.6505,-1.1275 l 0.9824,-2.2354 c -0.7484,-0.6882 -1.6475,-1.2141 -2.6416,-1.5255 l -1.4445,1.9696 c -0.2126,-0.029 -0.43,-0.045 -0.6505,-0.045 -0.2205,0 -0.4379,0.015 -0.6505,0.045 l -1.4445,-1.9696 z m 2.095,4.8571 c 1.0066,0 1.8227,0.816 1.8227,1.8226 0,1.0066 -0.8161,1.8227 -1.8227,1.8227 -1.0066,0 -1.8227,-0.8161 -1.8227,-1.8227 0,-1.0066 0.8161,-1.8226 1.8227,-1.8226 z"
+ id="path4580-5-7-0-5-6-2-7" />
+ <path
+ inkscape:connector-curvature="0"
+ style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.68179601;marker:none;visibility:visible;display:inline;overflow:visible"
+ d="m 4141.905,-734.29147 c -0.9941,0.3114 -1.8932,0.8373 -2.6416,1.5255 l 0.9824,2.2354 c -0.266,0.3415 -0.4848,0.7207 -0.6505,1.1276 l -2.4286,0.2658 c -0.109,0.4908 -0.1667,1.0018 -0.1667,1.5254 0,0.5239 0.058,1.0346 0.1667,1.5255 l 2.4286,0.2658 c 0.1657,0.4069 0.3845,0.7861 0.6505,1.1276 l -0.9824,2.2354 c 0.7484,0.6876 1.6477,1.2141 2.6416,1.5255 l 1.4445,-1.9696 c 0.2126,0.029 0.43,0.045 0.6505,0.045 0.2205,0 0.4379,-0.015 0.6505,-0.045 l 1.4445,1.9696 c 0.9941,-0.3115 1.8932,-0.8373 2.6416,-1.5255 l -0.9824,-2.2354 c 0.266,-0.3415 0.4848,-0.7207 0.6505,-1.1276 l 2.4286,-0.2658 c 0.109,-0.4908 0.1667,-1.0018 0.1667,-1.5255 0,-0.5236 -0.058,-1.0346 -0.1667,-1.5254 l -2.4286,-0.2658 c -0.1657,-0.4069 -0.3845,-0.7861 -0.6505,-1.1276 l 0.9824,-2.2354 c -0.7484,-0.6882 -1.6475,-1.2141 -2.6416,-1.5255 l -1.4445,1.9696 c -0.2126,-0.029 -0.43,-0.045 -0.6505,-0.045 -0.2205,0 -0.4379,0.015 -0.6505,0.045 l -1.4445,-1.9696 z m 2.095,4.8571 c 1.0066,0 1.8227,0.816 1.8227,1.8226 0,1.0067 -0.8161,1.8227 -1.8227,1.8227 -1.0066,0 -1.8227,-0.816 -1.8227,-1.8227 0,-1.0066 0.8161,-1.8226 1.8227,-1.8226 z"
+ id="path4580-5-7-0-5-6-2-7-2" />
+ <path
+ inkscape:connector-curvature="0"
+ style="color:#000000;fill:url(#linearGradient36728) #000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.68179601;marker:none;visibility:visible;display:inline;overflow:visible"
+ d="m 4134.8673,-699.85825 c -0.4969,0.15571 -0.9462,0.41857 -1.32,0.76251 l 0.4906,1.11729 c -0.1329,0.17061 -0.242,0.36019 -0.3246,0.56355 l -1.2142,0.13279 c -0.053,0.24536 -0.085,0.50077 -0.085,0.76251 0,0.26173 0.033,0.51703 0.085,0.76239 l 1.2142,0.1329 c 0.085,0.20336 0.1917,0.39283 0.3246,0.56356 l -0.4906,1.11728 c 0.3738,0.34371 0.8231,0.6068 1.32,0.7624 l 0.7221,-0.98439 c 0.105,0.0147 0.215,0.0226 0.325,0.0226 0.1095,0 0.2193,-0.0113 0.325,-0.0226 l 0.7222,0.98439 c 0.4969,-0.15571 0.9462,-0.41857 1.32,-0.7624 l -0.4906,-1.11728 c 0.1329,-0.17073 0.242,-0.3602 0.3248,-0.56356 l 1.2139,-0.1329 c 0.053,-0.24536 0.085,-0.50066 0.085,-0.76239 0,-0.26174 -0.032,-0.51715 -0.085,-0.76251 l -1.2139,-0.13279 c -0.085,-0.20336 -0.1919,-0.39294 -0.3248,-0.56355 l 0.4906,-1.11729 c -0.3738,-0.34394 -0.8231,-0.6068 -1.32,-0.76251 l -0.7222,0.9845 c -0.105,-0.0147 -0.215,-0.0226 -0.325,-0.0226 -0.1095,0 -0.2191,0.0113 -0.325,0.0226 l -0.7221,-0.9845 z m 1.0471,2.42766 c 0.5033,0 0.9109,0.40784 0.9109,0.91099 0,0.50303 -0.4076,0.91099 -0.9109,0.91099 -0.5031,0 -0.9108,-0.40796 -0.9108,-0.91099 0,-0.50315 0.4077,-0.91099 0.9108,-0.91099 z"
+ id="path4580-5-7-0-5-6-2-7-5" />
+ <path
+ inkscape:connector-curvature="0"
+ style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.68179601;marker:none;visibility:visible;display:inline;overflow:visible"
+ d="m 4134.8674,-678.86037 c -0.497,0.1557 -0.9463,0.41857 -1.3201,0.76251 l 0.4906,1.11729 c -0.1329,0.17061 -0.242,0.3602 -0.3246,0.56355 l -1.2142,0.13279 c -0.053,0.24536 -0.085,0.50078 -0.085,0.76251 0,0.26174 0.033,0.51704 0.085,0.76241 l 1.2142,0.1329 c 0.085,0.20335 0.1917,0.39283 0.3246,0.56355 l -0.4906,1.11729 c 0.3738,0.34371 0.8231,0.60681 1.3201,0.7624 l 0.722,-0.98439 c 0.105,0.0147 0.2151,0.0226 0.3251,0.0226 0.1095,0 0.2192,-0.0113 0.3249,-0.0226 l 0.7221,0.98439 c 0.497,-0.15571 0.9463,-0.41857 1.3201,-0.7624 l -0.4905,-1.11729 c 0.1328,-0.17072 0.2419,-0.3602 0.3247,-0.56355 l 1.2139,-0.1329 c 0.053,-0.24537 0.085,-0.50067 0.085,-0.76241 0,-0.26173 -0.032,-0.51715 -0.085,-0.76251 l -1.2139,-0.13279 c -0.085,-0.20335 -0.1919,-0.39294 -0.3247,-0.56355 l 0.4905,-1.11729 c -0.3738,-0.34394 -0.8231,-0.60681 -1.3201,-0.76251 l -0.7221,0.98449 c -0.105,-0.0147 -0.215,-0.0226 -0.3249,-0.0226 -0.1096,0 -0.2192,0.0113 -0.3251,0.0226 l -0.722,-0.98449 z m 1.0471,2.42766 c 0.5032,0 0.9108,0.40784 0.9108,0.91099 0,0.50304 -0.4076,0.911 -0.9108,0.911 -0.5033,0 -0.9108,-0.40796 -0.9108,-0.911 0,-0.50315 0.4075,-0.91099 0.9108,-0.91099 z"
+ id="path4580-5-7-0-5-6-2-7-5-7" />
+ </g>
+ <g
+ style="display:inline"
+ inkscape:label="Information"
+ id="layer6"
+ inkscape:groupmode="layer"
+ transform="translate(123,1753.64)">
+ <use
+ height="1085"
+ width="5033"
+ transform="matrix(0,1,-6.91891,0,-232.248,-1600.64)"
+ id="use24364"
+ xlink:href="#rect7575"
+ y="0"
+ x="0" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect7575"
+ id="use24366"
+ transform="matrix(0,1,-6.91891,0,27.7522,-1600.64)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect7575"
+ id="use24368"
+ transform="matrix(0,1,-13.9459,0,-4930.78,-1630.64)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect7575"
+ id="use24354"
+ transform="matrix(0,1,-6.91891,0,-759.248,-1600.64)"
+ width="5033"
+ height="1085" />
+ <use
+ height="1085"
+ width="5033"
+ transform="matrix(0,1,-6.91891,0,-1020.25,-1600.64)"
+ id="use24356"
+ xlink:href="#rect7575"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="matrix(0,1,-6.91891,0,-498.248,-1600.64)"
+ id="use24358"
+ xlink:href="#rect7575"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="matrix(0,1,-6.91891,0,-1281.25,-1600.64)"
+ id="use24360"
+ xlink:href="#rect7575"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="matrix(0,1,-28.0811,0,-15431.1,-1630.64)"
+ id="use24362"
+ xlink:href="#rect7575"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="matrix(0,1,-6.91891,0,-1808.25,-1600.64)"
+ id="use24340"
+ xlink:href="#rect7575"
+ y="0"
+ x="0" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect7575"
+ id="use24342"
+ transform="matrix(0,1,-6.91891,0,-2069.25,-1600.64)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect7575"
+ id="use24344"
+ transform="matrix(0,1,-6.91891,0,-1547.25,-1600.64)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect7575"
+ id="use24346"
+ transform="matrix(0,1,-6.91891,0,-2330.25,-1600.64)"
+ width="5033"
+ height="1085" />
+ <use
+ height="1085"
+ width="5033"
+ transform="matrix(0,1,-6.91891,0,-2591.25,-1600.64)"
+ id="use24348"
+ xlink:href="#rect7575"
+ y="0"
+ x="0" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect7575"
+ id="use24350"
+ transform="matrix(0,1,-42.2027,0,-26444.8,-1630.64)"
+ width="5033"
+ height="1085" />
+ <use
+ height="1085"
+ width="5033"
+ transform="matrix(0,1,-6.91891,0,-2852.25,-1600.64)"
+ id="use24352"
+ xlink:href="#rect7575"
+ y="0"
+ x="0" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect7575"
+ id="use24334"
+ transform="matrix(0,1,-6.91891,0,-3379.25,-1600.64)"
+ width="5033"
+ height="1085" />
+ <use
+ height="1085"
+ width="5033"
+ transform="matrix(0,1,-6.91891,0,-3640.25,-1600.64)"
+ id="use24336"
+ xlink:href="#rect7575"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="matrix(0,1,-6.91891,0,-3118.25,-1600.64)"
+ id="use24338"
+ xlink:href="#rect7575"
+ y="0"
+ x="0" />
+ <use
+ height="1085"
+ width="5033"
+ transform="matrix(0,1,-6.91891,0,-3901.25,-1600.64)"
+ id="use24328"
+ xlink:href="#rect7575"
+ y="0"
+ x="0" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect7575"
+ id="use24330"
+ transform="matrix(0,1,-6.91891,0,-4162.25,-1600.64)"
+ width="5033"
+ height="1085" />
+ <use
+ height="1085"
+ width="5033"
+ transform="matrix(0,1,-42.1892,0,-28006.3,-1630.64)"
+ id="use24332"
+ xlink:href="#rect7575"
+ y="0"
+ x="0" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect7575"
+ id="use24324"
+ transform="matrix(0,1,-6.91891,0,-4423.25,-1600.64)"
+ width="5033"
+ height="1085" />
+ <use
+ height="1085"
+ width="5033"
+ transform="matrix(0,1,-6.91891,0,-4689.25,-1600.64)"
+ id="use24320"
+ xlink:href="#rect7575"
+ y="0"
+ x="0" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect7575"
+ id="use24322"
+ transform="matrix(0,1,-6.91891,0,-4689.25,-1630.64)"
+ width="5033"
+ height="1085" />
+ <use
+ height="1085"
+ width="5033"
+ transform="matrix(1,0,0,6.91891,30,3449.61)"
+ id="use24314"
+ xlink:href="#rect7575"
+ y="0"
+ x="0" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect7575"
+ id="use24316"
+ transform="matrix(1,0,0,6.91891,30,3188.61)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect7575"
+ id="use24318"
+ transform="matrix(1,0,0,13.973,0,8166.21)"
+ width="5033"
+ height="1085" />
+ <use
+ height="1085"
+ width="5033"
+ transform="matrix(1,0,0,3.45946,30,1407.49)"
+ id="use24308"
+ xlink:href="#rect7575"
+ y="0"
+ x="0" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect7575"
+ id="use24310"
+ transform="matrix(1,0,0,3.45946,30,1274.49)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect7575"
+ id="use24312"
+ transform="matrix(1,0,0,7.05405,0,3810.97)"
+ width="5033"
+ height="1085" />
+ <use
+ height="1085"
+ width="5033"
+ transform="matrix(1,0,0,1.2973,30,72.7837)"
+ id="use24302"
+ xlink:href="#rect7575"
+ y="0"
+ x="0" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect7575"
+ id="use24304"
+ transform="matrix(1,0,0,1.2973,30,19.7837)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect7575"
+ id="use24306"
+ transform="matrix(1,0,0,2.72973,0,1030.56)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect7575"
+ id="use24296"
+ transform="matrix(1,0,0,1.86486,0,531.281)"
+ width="5033"
+ height="1085" />
+ <use
+ height="1085"
+ width="5033"
+ transform="matrix(1,0,0,0.864864,30,-137.357)"
+ id="use24298"
+ xlink:href="#rect7575"
+ y="0"
+ x="0" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect7575"
+ id="use24300"
+ transform="matrix(1,0,0,0.864864,30,-174.357)"
+ width="5033"
+ height="1085" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect7575"
+ id="use24292"
+ transform="matrix(1,0,0,0.432432,30,-379.497)"
+ width="5033"
+ height="1085" />
+ <use
+ height="1085"
+ width="5033"
+ transform="matrix(1,0,0,0.432432,30,-400.497)"
+ id="use24294"
+ xlink:href="#rect7575"
+ y="0"
+ x="0" />
+ <text
+ id="text6210"
+ y="-1705.92"
+ x="64.685501"
+ style="font-size:14px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;text-anchor:middle;fill:#aa0000;fill-opacity:1;stroke:none;font-family:Sans"
+ xml:space="preserve"><tspan
+ y="-1705.92"
+ x="64.685501"
+ id="tspan6212"
+ sodipodi:role="line">LibreOffice</tspan></text>
+ <text
+ id="text6364"
+ y="-1705.92"
+ x="330.685"
+ style="font-size:14px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;text-anchor:middle;fill:#aa0000;fill-opacity:1;stroke:none;font-family:Sans"
+ xml:space="preserve"><tspan
+ y="-1705.92"
+ x="330.685"
+ id="tspan6366"
+ sodipodi:role="line">Text (Writer)</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:14px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;text-anchor:middle;fill:#aa0000;fill-opacity:1;stroke:none;font-family:Sans"
+ x="591.685"
+ y="-1705.92"
+ id="text6490"><tspan
+ sodipodi:role="line"
+ id="tspan6492"
+ x="591.685"
+ y="-1705.92">Spreadsheet (Calc)</tspan></text>
+ <text
+ id="text6496"
+ y="-1705.92"
+ x="852.685"
+ style="font-size:14px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;text-anchor:middle;fill:#aa0000;fill-opacity:1;stroke:none;font-family:Sans"
+ xml:space="preserve"><tspan
+ y="-1705.92"
+ x="852.685"
+ id="tspan6498"
+ sodipodi:role="line">Presentation (Impress)</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:14px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;text-anchor:middle;fill:#aa0000;fill-opacity:1;stroke:none;font-family:Sans"
+ x="1113.6899"
+ y="-1705.92"
+ id="text6502"><tspan
+ sodipodi:role="line"
+ id="tspan6504"
+ x="1113.6899"
+ y="-1705.92">Drawing (Draw)</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:14px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;text-anchor:middle;fill:#aa0000;fill-opacity:1;stroke:none;font-family:Sans"
+ x="1374.6899"
+ y="-1705.92"
+ id="text6749"><tspan
+ sodipodi:role="line"
+ id="tspan6751"
+ x="1374.6899"
+ y="-1705.92">Database (Base)</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:14px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;text-anchor:middle;fill:#aa0000;fill-opacity:1;stroke:none;font-family:Sans"
+ x="3733.6899"
+ y="-1705.92"
+ id="text6761"><tspan
+ sodipodi:role="line"
+ id="tspan6763"
+ x="3733.6899"
+ y="-1705.92">Math</tspan></text>
+ <text
+ id="text6767"
+ y="-1705.92"
+ x="3994.6899"
+ style="font-size:14px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;text-anchor:middle;fill:#aa0000;fill-opacity:1;stroke:none;font-family:Sans"
+ xml:space="preserve"><tspan
+ y="-1705.92"
+ x="3994.6899"
+ id="tspan6769"
+ sodipodi:role="line">Chart</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:14px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;text-anchor:middle;fill:#aa0000;fill-opacity:1;stroke:none;font-family:Sans"
+ x="4255.6899"
+ y="-1705.92"
+ id="text6773"><tspan
+ sodipodi:role="line"
+ id="tspan6775"
+ x="4255.6899"
+ y="-1705.92">Macro</tspan></text>
+ <text
+ id="text6779"
+ y="-1705.92"
+ x="4781.6899"
+ style="font-size:14px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;text-anchor:middle;fill:#aa0000;fill-opacity:1;stroke:none;font-family:Sans"
+ xml:space="preserve"><tspan
+ y="-1705.92"
+ x="4781.6899"
+ id="tspan6781"
+ sodipodi:role="line">Printer Administration</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:14.13609982px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;text-anchor:middle;fill:#aa0000;fill-opacity:1;stroke:none;font-family:Sans"
+ x="959.784"
+ y="-76.012398"
+ id="text6828"
+ transform="matrix(0,-1.00972,0.990375,0,0,0)"><tspan
+ sodipodi:role="line"
+ id="tspan6830"
+ x="959.784"
+ y="-76.012398">High Contrast</tspan></text>
+ <text
+ transform="matrix(0,-1,1,0,0,0)"
+ id="text6832"
+ y="-75.2808"
+ x="1565.6"
+ style="font-size:14px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;text-anchor:middle;fill:#aa0000;fill-opacity:1;stroke:none;font-family:Sans"
+ xml:space="preserve"><tspan
+ y="-75.2808"
+ x="1565.6"
+ id="tspan6834"
+ sodipodi:role="line">Default Color</tspan></text>
+ <text
+ transform="matrix(0,-1,1,0,0,0)"
+ id="text6836"
+ y="-106.638"
+ x="1434.62"
+ style="font-size:14px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;text-anchor:middle;fill:#aa0000;fill-opacity:1;stroke:none;font-family:Sans"
+ xml:space="preserve"><tspan
+ y="-106.638"
+ x="1434.62"
+ id="tspan6838"
+ sodipodi:role="line">256px x 256px</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:14px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;text-anchor:middle;fill:#aa0000;fill-opacity:1;stroke:none;font-family:Sans"
+ x="4521.6899"
+ y="-1705.92"
+ id="text6896"><tspan
+ sodipodi:role="line"
+ id="tspan6898"
+ x="4521.6899"
+ y="-1705.92">LibreOffice Installer</tspan></text>
+ <text
+ id="text6958"
+ y="-1705.92"
+ x="1635.6899"
+ style="font-size:14px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;text-anchor:middle;fill:#aa0000;fill-opacity:1;stroke:none;font-family:Sans"
+ xml:space="preserve"><tspan
+ y="-1705.92"
+ x="1635.6899"
+ id="tspan6960"
+ sodipodi:role="line">Text HTML / Empty (Writer Web)</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:14px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;text-anchor:middle;fill:#aa0000;fill-opacity:1;stroke:none;font-family:Sans"
+ x="983.41803"
+ y="-1737.28"
+ id="text6964"><tspan
+ sodipodi:role="line"
+ id="tspan6966"
+ x="983.41803"
+ y="-1737.28">Document Icons and Application Icons</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:14px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;text-anchor:middle;fill:#aa0000;fill-opacity:1;stroke:none;font-family:Sans"
+ x="1901.6899"
+ y="-1705.92"
+ id="text7202"><tspan
+ sodipodi:role="line"
+ id="tspan7204"
+ x="1901.6899"
+ y="-1705.92">Text (Writer)</tspan></text>
+ <text
+ id="text7208"
+ y="-1705.92"
+ x="2162.6899"
+ style="font-size:14px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;text-anchor:middle;fill:#aa0000;fill-opacity:1;stroke:none;font-family:Sans"
+ xml:space="preserve"><tspan
+ y="-1705.92"
+ x="2162.6899"
+ id="tspan7210"
+ sodipodi:role="line">Spreadsheet (Calc)</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:14px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;text-anchor:middle;fill:#aa0000;fill-opacity:1;stroke:none;font-family:Sans"
+ x="2423.6899"
+ y="-1705.92"
+ id="text7214"><tspan
+ sodipodi:role="line"
+ id="tspan7216"
+ x="2423.6899"
+ y="-1705.92">Presentation (Impress)</tspan></text>
+ <text
+ id="text7220"
+ y="-1705.92"
+ x="2684.6899"
+ style="font-size:14px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;text-anchor:middle;fill:#aa0000;fill-opacity:1;stroke:none;font-family:Sans"
+ xml:space="preserve"><tspan
+ y="-1705.92"
+ x="2684.6899"
+ id="tspan7222"
+ sodipodi:role="line">Drawing (Draw)</tspan></text>
+ <text
+ id="text7226"
+ y="-1705.92"
+ x="2945.6899"
+ style="font-size:14px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;text-anchor:middle;fill:#aa0000;fill-opacity:1;stroke:none;font-family:Sans"
+ xml:space="preserve"><tspan
+ y="-1705.92"
+ x="2945.6899"
+ id="tspan7228"
+ sodipodi:role="line">Database (Base)</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:14px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;text-anchor:middle;fill:#aa0000;fill-opacity:1;stroke:none;font-family:Sans"
+ x="3206.6899"
+ y="-1705.92"
+ id="text7232"><tspan
+ sodipodi:role="line"
+ id="tspan7234"
+ x="3206.6899"
+ y="-1705.92">Text HTML / Empty (Writer Web)</tspan></text>
+ <text
+ id="text7238"
+ y="-1737.28"
+ x="2554.4199"
+ style="font-size:14px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;text-anchor:middle;fill:#aa0000;fill-opacity:1;stroke:none;font-family:Sans"
+ xml:space="preserve"><tspan
+ y="-1737.28"
+ x="2554.4199"
+ id="tspan7240"
+ sodipodi:role="line">Template Icons</tspan></text>
+ <text
+ id="text7305"
+ y="-1705.92"
+ x="3472.6899"
+ style="font-size:14px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;text-anchor:middle;fill:#aa0000;fill-opacity:1;stroke:none;font-family:Sans"
+ xml:space="preserve"><tspan
+ y="-1705.92"
+ x="3472.6899"
+ id="tspan7307"
+ sodipodi:role="line">Master Document</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:14px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;text-anchor:middle;fill:#aa0000;fill-opacity:1;stroke:none;font-family:Sans"
+ x="3864.79"
+ y="-1737.28"
+ id="text7311"><tspan
+ sodipodi:role="line"
+ id="tspan7313"
+ x="3864.79"
+ y="-1737.28">Additional Document Icons</tspan></text>
+ <text
+ id="text7349"
+ y="-1737.28"
+ x="4652.3701"
+ style="font-size:14px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;text-anchor:middle;fill:#aa0000;fill-opacity:1;stroke:none;font-family:Sans"
+ xml:space="preserve"><tspan
+ y="-1737.28"
+ x="4652.3701"
+ id="tspan7351"
+ sodipodi:role="line">Tools Icons</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:14px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;text-anchor:middle;fill:#aa0000;fill-opacity:1;stroke:none;font-family:Sans"
+ x="64.685501"
+ y="-1735.92"
+ id="text7355"><tspan
+ sodipodi:role="line"
+ id="tspan7357"
+ x="64.685501"
+ y="-1735.92">Main Application Icon</tspan></text>
+ <text
+ transform="matrix(0,-1.00972,0.990375,0,0,0)"
+ id="text7413"
+ y="-106.304"
+ x="1025.64"
+ style="font-size:14.13609982px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;text-anchor:middle;fill:#aa0000;fill-opacity:1;stroke:none;font-family:Sans"
+ xml:space="preserve"><tspan
+ y="-106.304"
+ x="1025.64"
+ id="tspan7415"
+ sodipodi:role="line">128px x 128px</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:14px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;text-anchor:middle;fill:#aa0000;fill-opacity:1;stroke:none;font-family:Sans"
+ x="1304.6"
+ y="-75.2808"
+ id="text7421"
+ transform="matrix(0,-1,1,0,0,0)"><tspan
+ sodipodi:role="line"
+ id="tspan7423"
+ x="1304.6"
+ y="-75.2808">High Contrast</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:14px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;text-anchor:middle;fill:#aa0000;fill-opacity:1;stroke:none;font-family:Sans"
+ x="1102.6"
+ y="-75.2808"
+ id="text7429"
+ transform="matrix(0,-1,1,0,0,0)"><tspan
+ sodipodi:role="line"
+ id="tspan7431"
+ x="1102.6"
+ y="-75.2808">Default Color</tspan></text>
+ <text
+ transform="matrix(0,-1.00972,0.990375,0,0,0)"
+ id="text7437"
+ y="-76.012398"
+ x="862.94501"
+ style="font-size:14.13609982px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;text-anchor:middle;fill:#aa0000;fill-opacity:1;stroke:none;font-family:Sans"
+ xml:space="preserve"><tspan
+ y="-76.012398"
+ x="862.94501"
+ id="tspan7439"
+ sodipodi:role="line">DC</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:14.13609982px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;text-anchor:middle;fill:#aa0000;fill-opacity:1;stroke:none;font-family:Sans"
+ x="836.48199"
+ y="-106.304"
+ id="text7445"
+ transform="matrix(0,-1.00972,0.990375,0,0,0)"><tspan
+ sodipodi:role="line"
+ id="tspan7447"
+ x="836.48199"
+ y="-106.304">48px x 48px</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:14.13609982px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;text-anchor:middle;fill:#aa0000;fill-opacity:1;stroke:none;font-family:Sans"
+ x="810.45502"
+ y="-76.012398"
+ id="text7453"
+ transform="matrix(0,-1.00972,0.990375,0,0,0)"><tspan
+ sodipodi:role="line"
+ id="tspan7455"
+ x="810.45502"
+ y="-76.012398">HC</tspan></text>
+ <text
+ transform="matrix(0,-1.00972,0.990375,0,0,0)"
+ id="text7569"
+ y="-106.304"
+ x="742.61102"
+ style="font-size:14.13609982px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;text-anchor:middle;fill:#aa0000;fill-opacity:1;stroke:none;font-family:Sans"
+ xml:space="preserve"><tspan
+ y="-106.304"
+ x="742.61102"
+ id="tspan7571"
+ sodipodi:role="line">32px</tspan></text>
+ <rect
+ style="color:#000000;fill:#ffd5d5;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect7575"
+ width="25"
+ height="37.000023"
+ x="-123"
+ y="-705.63782" />
+ <text
+ xml:space="preserve"
+ style="font-size:14.13609982px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;text-anchor:middle;fill:#aa0000;fill-opacity:1;stroke:none;font-family:Sans"
+ x="679.979"
+ y="-106.304"
+ id="text7577"
+ transform="matrix(0,-1.00972,0.990375,0,0,0)"><tspan
+ sodipodi:role="line"
+ id="tspan7579"
+ x="679.979"
+ y="-106.304">16px</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:14.13609982px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;text-anchor:middle;fill:#aa0000;fill-opacity:1;stroke:none;font-family:Sans"
+ x="760.93597"
+ y="-76.012398"
+ id="text7597"
+ transform="matrix(0,-1.00972,0.990375,0,0,0)"><tspan
+ sodipodi:role="line"
+ id="tspan7599"
+ x="760.93597"
+ y="-76.012398">DC</tspan></text>
+ <text
+ transform="matrix(0,-1.00972,0.990375,0,0,0)"
+ id="text7601"
+ y="-76.012398"
+ x="724.29199"
+ style="font-size:14.13609982px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;text-anchor:middle;fill:#aa0000;fill-opacity:1;stroke:none;font-family:Sans"
+ xml:space="preserve"><tspan
+ y="-76.012398"
+ x="724.29199"
+ id="tspan7603"
+ sodipodi:role="line">HC</tspan></text>
+ <text
+ transform="matrix(0,-1.00972,0.990375,0,0,0)"
+ id="text7605"
+ y="-76.012398"
+ x="690.64398"
+ style="font-size:14.13609982px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;text-anchor:middle;fill:#aa0000;fill-opacity:1;stroke:none;font-family:Sans"
+ xml:space="preserve"><tspan
+ y="-76.012398"
+ x="690.64398"
+ sodipodi:role="line"
+ id="tspan7613">D</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:14.13609982px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;text-anchor:middle;fill:#aa0000;fill-opacity:1;stroke:none;font-family:Sans"
+ x="670.125"
+ y="-76.012398"
+ id="text7609"
+ transform="matrix(0,-1.00972,0.990375,0,0,0)"><tspan
+ sodipodi:role="line"
+ id="tspan7611"
+ x="670.125"
+ y="-76.012398">H</tspan></text>
+ <text
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="~/Desktop/LibreOffice Artwork/LibreOffice_temp_SplashScreen.png"
+ transform="scale(0.980783,1.01959)"
+ id="text7265"
+ y="-1891.5699"
+ x="-126.018"
+ style="font-size:16px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;fill:#aa0000;fill-opacity:1;stroke:none;display:inline;font-family:Vegur"
+ xml:space="preserve"><tspan
+ style="font-size:16px;font-weight:bold;fill:#aa0000"
+ y="-1891.5699"
+ x="-126.018"
+ sodipodi:role="line"
+ id="tspan7267">Information</tspan><tspan
+ style="font-size:16px;font-weight:normal;fill:#aa0000"
+ y="-1873.9993"
+ x="-126.018"
+ sodipodi:role="line"
+ id="tspan3763">More Information: See the The Document Foundation, LibreOffice Wiki </tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:16px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;fill:#aa0000;fill-opacity:1;stroke:none;display:inline;font-family:Vegur"
+ x="-125.794"
+ y="-1843.37"
+ id="text7277"
+ transform="scale(0.980783,1.01959)"
+ inkscape:export-filename="~/Desktop/LibreOffice Artwork/LibreOffice_temp_SplashScreen.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90"><tspan
+ sodipodi:role="line"
+ x="-125.794"
+ y="-1843.37"
+ style="font-size:16px;font-weight:bold;fill:#aa0000"
+ id="tspan7287">Export Images</tspan><tspan
+ id="tspan7303"
+ sodipodi:role="line"
+ x="-125.794"
+ y="-1825.7993"
+ style="font-size:16px;font-weight:normal;fill:#aa0000">1. Make sure the &quot;Size Placeholder Document Symbols&quot; rects are labelled correctly:</tspan><tspan
+ id="tspan7305"
+ sodipodi:role="line"
+ x="-125.794"
+ y="-1805.7993"
+ style="font-size:16px;font-weight:normal;fill:#aa0000">2. Naming convention has to be &lt;name&gt;_&lt;size&gt;[_hc] - see the existing ones for examples</tspan><tspan
+ id="tspan7307-8"
+ sodipodi:role="line"
+ x="-125.794"
+ y="-1785.7993"
+ style="font-size:16px;font-weight:normal;fill:#aa0000">3. Select the &quot;Size Placeholder Document Symbols&quot; layer, make it fully transparent</tspan><tspan
+ id="tspan7311"
+ sodipodi:role="line"
+ x="-125.794"
+ y="-1765.7993"
+ style="font-size:16px;font-weight:normal;fill:#aa0000">4. Run the cnvsvg.py script</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:32px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;fill:#aa0000;fill-opacity:1;stroke:none;display:inline;font-family:Vegur"
+ x="-126.018"
+ y="-1930.8101"
+ id="text8412"
+ transform="scale(0.980783,1.01959)"
+ inkscape:export-filename="~/Desktop/LibreOffice Artwork/LibreOffice_temp_SplashScreen.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90"><tspan
+ sodipodi:role="line"
+ x="-126.018"
+ y="-1930.8101"
+ style="font-size:32px;font-weight:normal;fill:#aa0000"
+ id="tspan8424">LibreOffice Initial Icons</tspan></text>
+ <text
+ id="text7389"
+ y="-1544.4301"
+ x="4782"
+ style="font-size:8px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;text-anchor:middle;fill:#550000;fill-opacity:1;stroke:none;display:inline;font-family:Sans"
+ xml:space="preserve"><tspan
+ y="-1544.4301"
+ x="4782"
+ id="tspan7391"
+ sodipodi:role="line">not required</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:8px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;fill:#000000;fill-opacity:1;stroke:none;display:inline;font-family:Sans"
+ x="-236"
+ y="-1432.64"
+ id="text24118"><tspan
+ sodipodi:role="line"
+ id="tspan24120"
+ x="-236"
+ y="-1432.64">Very low Priority</tspan><tspan
+ sodipodi:role="line"
+ x="-236"
+ y="-1422.64"
+ id="tspan26181">--&gt; doubled 12ßpx icons?</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:8px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;fill:#000000;fill-opacity:1;stroke:none;display:inline;font-family:Sans"
+ x="-199"
+ y="-867.638"
+ id="text24114"><tspan
+ sodipodi:role="line"
+ id="tspan24116"
+ x="-199"
+ y="-867.638">Low Priority</tspan></text>
+ <text
+ id="text26177"
+ y="-823.638"
+ x="-198"
+ style="font-size:8px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;fill:#000000;fill-opacity:1;stroke:none;display:inline;font-family:Sans"
+ xml:space="preserve"><tspan
+ y="-823.638"
+ x="-198"
+ id="tspan26179"
+ sodipodi:role="line">Needed?</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:10.65439987px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;fill:#000000;fill-opacity:1;stroke:none;display:inline;font-family:Sans"
+ x="-113.978"
+ y="-594.638"
+ id="text13839"><tspan
+ sodipodi:role="line"
+ id="tspan13841"
+ x="-113.978"
+ y="-594.638"
+ style="font-weight:bold;fill:#ff0000">Draft Area Below This Line</tspan></text>
+ <rect
+ style="opacity:0.75;color:#000000;fill:#ff0000;fill-opacity:0.19607801;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="rect13843"
+ width="5040"
+ height="20"
+ x="-123"
+ y="-608.63782" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#text7389"
+ id="use57982"
+ transform="translate(0.5,259)"
+ width="5033"
+ height="1085" />
+ <use
+ height="1085"
+ width="5033"
+ transform="translate(-66,455)"
+ id="use57984"
+ xlink:href="#text7389"
+ y="0"
+ x="0" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#text7389"
+ id="use57986"
+ transform="translate(-66,586.5)"
+ width="5033"
+ height="1085" />
+ </g>
+</svg>
diff --git a/bug/bug/icons/Libreoffice.png b/bug/bug/icons/Libreoffice.png
new file mode 100644
index 0000000..314bee9
--- /dev/null
+++ b/bug/bug/icons/Libreoffice.png
Binary files differ
diff --git a/bug/bug/icons/PDF_export.png b/bug/bug/icons/PDF_export.png
new file mode 100644
index 0000000..3b717e8
--- /dev/null
+++ b/bug/bug/icons/PDF_export.png
Binary files differ
diff --git a/bug/bug/icons/Presentation.png b/bug/bug/icons/Presentation.png
new file mode 100644
index 0000000..f3c1d60
--- /dev/null
+++ b/bug/bug/icons/Presentation.png
Binary files differ
diff --git a/bug/bug/icons/Spreadsheet.png b/bug/bug/icons/Spreadsheet.png
new file mode 100644
index 0000000..c314d04
--- /dev/null
+++ b/bug/bug/icons/Spreadsheet.png
Binary files differ
diff --git a/bug/bug/icons/WRITER.png b/bug/bug/icons/WRITER.png
new file mode 100644
index 0000000..1a0c507
--- /dev/null
+++ b/bug/bug/icons/WRITER.png
Binary files differ
diff --git a/bug/bug/icons/WWW.png b/bug/bug/icons/WWW.png
new file mode 100644
index 0000000..64a8bc4
--- /dev/null
+++ b/bug/bug/icons/WWW.png
Binary files differ
diff --git a/bug/bug/jquery-1.6.2.js b/bug/bug/jquery-1.6.2.js
new file mode 100644
index 0000000..f3201aa
--- /dev/null
+++ b/bug/bug/jquery-1.6.2.js
@@ -0,0 +1,8981 @@
+/*!
+ * jQuery JavaScript Library v1.6.2
+ * http://jquery.com/
+ *
+ * Copyright 2011, John Resig
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * Includes Sizzle.js
+ * http://sizzlejs.com/
+ * Copyright 2011, The Dojo Foundation
+ * Released under the MIT, BSD, and GPL Licenses.
+ *
+ * Date: Thu Jun 30 14:16:56 2011 -0400
+ */
+(function( window, undefined ) {
+
+// Use the correct document accordingly with window argument (sandbox)
+var document = window.document,
+ navigator = window.navigator,
+ location = window.location;
+var jQuery = (function() {
+
+// Define a local copy of jQuery
+var jQuery = function( selector, context ) {
+ // The jQuery object is actually just the init constructor 'enhanced'
+ return new jQuery.fn.init( selector, context, rootjQuery );
+ },
+
+ // Map over jQuery in case of overwrite
+ _jQuery = window.jQuery,
+
+ // Map over the $ in case of overwrite
+ _$ = window.$,
+
+ // A central reference to the root jQuery(document)
+ rootjQuery,
+
+ // A simple way to check for HTML strings or ID strings
+ // (both of which we optimize for)
+ quickExpr = /^(?:[^<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,
+
+ // Check if a string has a non-whitespace character in it
+ rnotwhite = /\S/,
+
+ // Used for trimming whitespace
+ trimLeft = /^\s+/,
+ trimRight = /\s+$/,
+
+ // Check for digits
+ rdigit = /\d/,
+
+ // Match a standalone tag
+ rsingleTag = /^<(\w+)\s*\/?>(?:<\/\1>)?$/,
+
+ // JSON RegExp
+ rvalidchars = /^[\],:{}\s]*$/,
+ rvalidescape = /\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,
+ rvalidtokens = /"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,
+ rvalidbraces = /(?:^|:|,)(?:\s*\[)+/g,
+
+ // Useragent RegExp
+ rwebkit = /(webkit)[ \/]([\w.]+)/,
+ ropera = /(opera)(?:.*version)?[ \/]([\w.]+)/,
+ rmsie = /(msie) ([\w.]+)/,
+ rmozilla = /(mozilla)(?:.*? rv:([\w.]+))?/,
+
+ // Matches dashed string for camelizing
+ rdashAlpha = /-([a-z])/ig,
+
+ // Used by jQuery.camelCase as callback to replace()
+ fcamelCase = function( all, letter ) {
+ return letter.toUpperCase();
+ },
+
+ // Keep a UserAgent string for use with jQuery.browser
+ userAgent = navigator.userAgent,
+
+ // For matching the engine and version of the browser
+ browserMatch,
+
+ // The deferred used on DOM ready
+ readyList,
+
+ // The ready event handler
+ DOMContentLoaded,
+
+ // Save a reference to some core methods
+ toString = Object.prototype.toString,
+ hasOwn = Object.prototype.hasOwnProperty,
+ push = Array.prototype.push,
+ slice = Array.prototype.slice,
+ trim = String.prototype.trim,
+ indexOf = Array.prototype.indexOf,
+
+ // [[Class]] -> type pairs
+ class2type = {};
+
+jQuery.fn = jQuery.prototype = {
+ constructor: jQuery,
+ init: function( selector, context, rootjQuery ) {
+ var match, elem, ret, doc;
+
+ // Handle $(""), $(null), or $(undefined)
+ if ( !selector ) {
+ return this;
+ }
+
+ // Handle $(DOMElement)
+ if ( selector.nodeType ) {
+ this.context = this[0] = selector;
+ this.length = 1;
+ return this;
+ }
+
+ // The body element only exists once, optimize finding it
+ if ( selector === "body" && !context && document.body ) {
+ this.context = document;
+ this[0] = document.body;
+ this.selector = selector;
+ this.length = 1;
+ return this;
+ }
+
+ // Handle HTML strings
+ if ( typeof selector === "string" ) {
+ // Are we dealing with HTML string or an ID?
+ if ( selector.charAt(0) === "<" && selector.charAt( selector.length - 1 ) === ">" && selector.length >= 3 ) {
+ // Assume that strings that start and end with <> are HTML and skip the regex check
+ match = [ null, selector, null ];
+
+ } else {
+ match = quickExpr.exec( selector );
+ }
+
+ // Verify a match, and that no context was specified for #id
+ if ( match && (match[1] || !context) ) {
+
+ // HANDLE: $(html) -> $(array)
+ if ( match[1] ) {
+ context = context instanceof jQuery ? context[0] : context;
+ doc = (context ? context.ownerDocument || context : document);
+
+ // If a single string is passed in and it's a single tag
+ // just do a createElement and skip the rest
+ ret = rsingleTag.exec( selector );
+
+ if ( ret ) {
+ if ( jQuery.isPlainObject( context ) ) {
+ selector = [ document.createElement( ret[1] ) ];
+ jQuery.fn.attr.call( selector, context, true );
+
+ } else {
+ selector = [ doc.createElement( ret[1] ) ];
+ }
+
+ } else {
+ ret = jQuery.buildFragment( [ match[1] ], [ doc ] );
+ selector = (ret.cacheable ? jQuery.clone(ret.fragment) : ret.fragment).childNodes;
+ }
+
+ return jQuery.merge( this, selector );
+
+ // HANDLE: $("#id")
+ } else {
+ elem = document.getElementById( match[2] );
+
+ // Check parentNode to catch when Blackberry 4.6 returns
+ // nodes that are no longer in the document #6963
+ if ( elem && elem.parentNode ) {
+ // Handle the case where IE and Opera return items
+ // by name instead of ID
+ if ( elem.id !== match[2] ) {
+ return rootjQuery.find( selector );
+ }
+
+ // Otherwise, we inject the element directly into the jQuery object
+ this.length = 1;
+ this[0] = elem;
+ }
+
+ this.context = document;
+ this.selector = selector;
+ return this;
+ }
+
+ // HANDLE: $(expr, $(...))
+ } else if ( !context || context.jquery ) {
+ return (context || rootjQuery).find( selector );
+
+ // HANDLE: $(expr, context)
+ // (which is just equivalent to: $(context).find(expr)
+ } else {
+ return this.constructor( context ).find( selector );
+ }
+
+ // HANDLE: $(function)
+ // Shortcut for document ready
+ } else if ( jQuery.isFunction( selector ) ) {
+ return rootjQuery.ready( selector );
+ }
+
+ if (selector.selector !== undefined) {
+ this.selector = selector.selector;
+ this.context = selector.context;
+ }
+
+ return jQuery.makeArray( selector, this );
+ },
+
+ // Start with an empty selector
+ selector: "",
+
+ // The current version of jQuery being used
+ jquery: "1.6.2",
+
+ // The default length of a jQuery object is 0
+ length: 0,
+
+ // The number of elements contained in the matched element set
+ size: function() {
+ return this.length;
+ },
+
+ toArray: function() {
+ return slice.call( this, 0 );
+ },
+
+ // Get the Nth element in the matched element set OR
+ // Get the whole matched element set as a clean array
+ get: function( num ) {
+ return num == null ?
+
+ // Return a 'clean' array
+ this.toArray() :
+
+ // Return just the object
+ ( num < 0 ? this[ this.length + num ] : this[ num ] );
+ },
+
+ // Take an array of elements and push it onto the stack
+ // (returning the new matched element set)
+ pushStack: function( elems, name, selector ) {
+ // Build a new jQuery matched element set
+ var ret = this.constructor();
+
+ if ( jQuery.isArray( elems ) ) {
+ push.apply( ret, elems );
+
+ } else {
+ jQuery.merge( ret, elems );
+ }
+
+ // Add the old object onto the stack (as a reference)
+ ret.prevObject = this;
+
+ ret.context = this.context;
+
+ if ( name === "find" ) {
+ ret.selector = this.selector + (this.selector ? " " : "") + selector;
+ } else if ( name ) {
+ ret.selector = this.selector + "." + name + "(" + selector + ")";
+ }
+
+ // Return the newly-formed element set
+ return ret;
+ },
+
+ // Execute a callback for every element in the matched set.
+ // (You can seed the arguments with an array of args, but this is
+ // only used internally.)
+ each: function( callback, args ) {
+ return jQuery.each( this, callback, args );
+ },
+
+ ready: function( fn ) {
+ // Attach the listeners
+ jQuery.bindReady();
+
+ // Add the callback
+ readyList.done( fn );
+
+ return this;
+ },
+
+ eq: function( i ) {
+ return i === -1 ?
+ this.slice( i ) :
+ this.slice( i, +i + 1 );
+ },
+
+ first: function() {
+ return this.eq( 0 );
+ },
+
+ last: function() {
+ return this.eq( -1 );
+ },
+
+ slice: function() {
+ return this.pushStack( slice.apply( this, arguments ),
+ "slice", slice.call(arguments).join(",") );
+ },
+
+ map: function( callback ) {
+ return this.pushStack( jQuery.map(this, function( elem, i ) {
+ return callback.call( elem, i, elem );
+ }));
+ },
+
+ end: function() {
+ return this.prevObject || this.constructor(null);
+ },
+
+ // For internal use only.
+ // Behaves like an Array's method, not like a jQuery method.
+ push: push,
+ sort: [].sort,
+ splice: [].splice
+};
+
+// Give the init function the jQuery prototype for later instantiation
+jQuery.fn.init.prototype = jQuery.fn;
+
+jQuery.extend = jQuery.fn.extend = function() {
+ var options, name, src, copy, copyIsArray, clone,
+ target = arguments[0] || {},
+ i = 1,
+ length = arguments.length,
+ deep = false;
+
+ // Handle a deep copy situation
+ if ( typeof target === "boolean" ) {
+ deep = target;
+ target = arguments[1] || {};
+ // skip the boolean and the target
+ i = 2;
+ }
+
+ // Handle case when target is a string or something (possible in deep copy)
+ if ( typeof target !== "object" && !jQuery.isFunction(target) ) {
+ target = {};
+ }
+
+ // extend jQuery itself if only one argument is passed
+ if ( length === i ) {
+ target = this;
+ --i;
+ }
+
+ for ( ; i < length; i++ ) {
+ // Only deal with non-null/undefined values
+ if ( (options = arguments[ i ]) != null ) {
+ // Extend the base object
+ for ( name in options ) {
+ src = target[ name ];
+ copy = options[ name ];
+
+ // Prevent never-ending loop
+ if ( target === copy ) {
+ continue;
+ }
+
+ // Recurse if we're merging plain objects or arrays
+ if ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) {
+ if ( copyIsArray ) {
+ copyIsArray = false;
+ clone = src && jQuery.isArray(src) ? src : [];
+
+ } else {
+ clone = src && jQuery.isPlainObject(src) ? src : {};
+ }
+
+ // Never move original objects, clone them
+ target[ name ] = jQuery.extend( deep, clone, copy );
+
+ // Don't bring in undefined values
+ } else if ( copy !== undefined ) {
+ target[ name ] = copy;
+ }
+ }
+ }
+ }
+
+ // Return the modified object
+ return target;
+};
+
+jQuery.extend({
+ noConflict: function( deep ) {
+ if ( window.$ === jQuery ) {
+ window.$ = _$;
+ }
+
+ if ( deep && window.jQuery === jQuery ) {
+ window.jQuery = _jQuery;
+ }
+
+ return jQuery;
+ },
+
+ // Is the DOM ready to be used? Set to true once it occurs.
+ isReady: false,
+
+ // A counter to track how many items to wait for before
+ // the ready event fires. See #6781
+ readyWait: 1,
+
+ // Hold (or release) the ready event
+ holdReady: function( hold ) {
+ if ( hold ) {
+ jQuery.readyWait++;
+ } else {
+ jQuery.ready( true );
+ }
+ },
+
+ // Handle when the DOM is ready
+ ready: function( wait ) {
+ // Either a released hold or an DOMready/load event and not yet ready
+ if ( (wait === true && !--jQuery.readyWait) || (wait !== true && !jQuery.isReady) ) {
+ // Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).
+ if ( !document.body ) {
+ return setTimeout( jQuery.ready, 1 );
+ }
+
+ // Remember that the DOM is ready
+ jQuery.isReady = true;
+
+ // If a normal DOM Ready event fired, decrement, and wait if need be
+ if ( wait !== true && --jQuery.readyWait > 0 ) {
+ return;
+ }
+
+ // If there are functions bound, to execute
+ readyList.resolveWith( document, [ jQuery ] );
+
+ // Trigger any bound ready events
+ if ( jQuery.fn.trigger ) {
+ jQuery( document ).trigger( "ready" ).unbind( "ready" );
+ }
+ }
+ },
+
+ bindReady: function() {
+ if ( readyList ) {
+ return;
+ }
+
+ readyList = jQuery._Deferred();
+
+ // Catch cases where $(document).ready() is called after the
+ // browser event has already occurred.
+ if ( document.readyState === "complete" ) {
+ // Handle it asynchronously to allow scripts the opportunity to delay ready
+ return setTimeout( jQuery.ready, 1 );
+ }
+
+ // Mozilla, Opera and webkit nightlies currently support this event
+ if ( document.addEventListener ) {
+ // Use the handy event callback
+ document.addEventListener( "DOMContentLoaded", DOMContentLoaded, false );
+
+ // A fallback to window.onload, that will always work
+ window.addEventListener( "load", jQuery.ready, false );
+
+ // If IE event model is used
+ } else if ( document.attachEvent ) {
+ // ensure firing before onload,
+ // maybe late but safe also for iframes
+ document.attachEvent( "onreadystatechange", DOMContentLoaded );
+
+ // A fallback to window.onload, that will always work
+ window.attachEvent( "onload", jQuery.ready );
+
+ // If IE and not a frame
+ // continually check to see if the document is ready
+ var toplevel = false;
+
+ try {
+ toplevel = window.frameElement == null;
+ } catch(e) {}
+
+ if ( document.documentElement.doScroll && toplevel ) {
+ doScrollCheck();
+ }
+ }
+ },
+
+ // See test/unit/core.js for details concerning isFunction.
+ // Since version 1.3, DOM methods and functions like alert
+ // aren't supported. They return false on IE (#2968).
+ isFunction: function( obj ) {
+ return jQuery.type(obj) === "function";
+ },
+
+ isArray: Array.isArray || function( obj ) {
+ return jQuery.type(obj) === "array";
+ },
+
+ // A crude way of determining if an object is a window
+ isWindow: function( obj ) {
+ return obj && typeof obj === "object" && "setInterval" in obj;
+ },
+
+ isNaN: function( obj ) {
+ return obj == null || !rdigit.test( obj ) || isNaN( obj );
+ },
+
+ type: function( obj ) {
+ return obj == null ?
+ String( obj ) :
+ class2type[ toString.call(obj) ] || "object";
+ },
+
+ isPlainObject: function( obj ) {
+ // Must be an Object.
+ // Because of IE, we also have to check the presence of the constructor property.
+ // Make sure that DOM nodes and window objects don't pass through, as well
+ if ( !obj || jQuery.type(obj) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) {
+ return false;
+ }
+
+ // Not own constructor property must be Object
+ if ( obj.constructor &&
+ !hasOwn.call(obj, "constructor") &&
+ !hasOwn.call(obj.constructor.prototype, "isPrototypeOf") ) {
+ return false;
+ }
+
+ // Own properties are enumerated firstly, so to speed up,
+ // if last one is own, then all properties are own.
+
+ var key;
+ for ( key in obj ) {}
+
+ return key === undefined || hasOwn.call( obj, key );
+ },
+
+ isEmptyObject: function( obj ) {
+ for ( var name in obj ) {
+ return false;
+ }
+ return true;
+ },
+
+ error: function( msg ) {
+ throw msg;
+ },
+
+ parseJSON: function( data ) {
+ if ( typeof data !== "string" || !data ) {
+ return null;
+ }
+
+ // Make sure leading/trailing whitespace is removed (IE can't handle it)
+ data = jQuery.trim( data );
+
+ // Attempt to parse using the native JSON parser first
+ if ( window.JSON && window.JSON.parse ) {
+ return window.JSON.parse( data );
+ }
+
+ // Make sure the incoming data is actual JSON
+ // Logic borrowed from http://json.org/json2.js
+ if ( rvalidchars.test( data.replace( rvalidescape, "@" )
+ .replace( rvalidtokens, "]" )
+ .replace( rvalidbraces, "")) ) {
+
+ return (new Function( "return " + data ))();
+
+ }
+ jQuery.error( "Invalid JSON: " + data );
+ },
+
+ // Cross-browser xml parsing
+ // (xml & tmp used internally)
+ parseXML: function( data , xml , tmp ) {
+
+ if ( window.DOMParser ) { // Standard
+ tmp = new DOMParser();
+ xml = tmp.parseFromString( data , "text/xml" );
+ } else { // IE
+ xml = new ActiveXObject( "Microsoft.XMLDOM" );
+ xml.async = "false";
+ xml.loadXML( data );
+ }
+
+ tmp = xml.documentElement;
+
+ if ( ! tmp || ! tmp.nodeName || tmp.nodeName === "parsererror" ) {
+ jQuery.error( "Invalid XML: " + data );
+ }
+
+ return xml;
+ },
+
+ noop: function() {},
+
+ // Evaluates a script in a global context
+ // Workarounds based on findings by Jim Driscoll
+ // http://weblogs.java.net/blog/driscoll/archive/2009/09/08/eval-javascript-global-context
+ globalEval: function( data ) {
+ if ( data && rnotwhite.test( data ) ) {
+ // We use execScript on Internet Explorer
+ // We use an anonymous function so that context is window
+ // rather than jQuery in Firefox
+ ( window.execScript || function( data ) {
+ window[ "eval" ].call( window, data );
+ } )( data );
+ }
+ },
+
+ // Converts a dashed string to camelCased string;
+ // Used by both the css and data modules
+ camelCase: function( string ) {
+ return string.replace( rdashAlpha, fcamelCase );
+ },
+
+ nodeName: function( elem, name ) {
+ return elem.nodeName && elem.nodeName.toUpperCase() === name.toUpperCase();
+ },
+
+ // args is for internal usage only
+ each: function( object, callback, args ) {
+ var name, i = 0,
+ length = object.length,
+ isObj = length === undefined || jQuery.isFunction( object );
+
+ if ( args ) {
+ if ( isObj ) {
+ for ( name in object ) {
+ if ( callback.apply( object[ name ], args ) === false ) {
+ break;
+ }
+ }
+ } else {
+ for ( ; i < length; ) {
+ if ( callback.apply( object[ i++ ], args ) === false ) {
+ break;
+ }
+ }
+ }
+
+ // A special, fast, case for the most common use of each
+ } else {
+ if ( isObj ) {
+ for ( name in object ) {
+ if ( callback.call( object[ name ], name, object[ name ] ) === false ) {
+ break;
+ }
+ }
+ } else {
+ for ( ; i < length; ) {
+ if ( callback.call( object[ i ], i, object[ i++ ] ) === false ) {
+ break;
+ }
+ }
+ }
+ }
+
+ return object;
+ },
+
+ // Use native String.trim function wherever possible
+ trim: trim ?
+ function( text ) {
+ return text == null ?
+ "" :
+ trim.call( text );
+ } :
+
+ // Otherwise use our own trimming functionality
+ function( text ) {
+ return text == null ?
+ "" :
+ text.toString().replace( trimLeft, "" ).replace( trimRight, "" );
+ },
+
+ // results is for internal usage only
+ makeArray: function( array, results ) {
+ var ret = results || [];
+
+ if ( array != null ) {
+ // The window, strings (and functions) also have 'length'
+ // The extra typeof function check is to prevent crashes
+ // in Safari 2 (See: #3039)
+ // Tweaked logic slightly to handle Blackberry 4.7 RegExp issues #6930
+ var type = jQuery.type( array );
+
+ if ( array.length == null || type === "string" || type === "function" || type === "regexp" || jQuery.isWindow( array ) ) {
+ push.call( ret, array );
+ } else {
+ jQuery.merge( ret, array );
+ }
+ }
+
+ return ret;
+ },
+
+ inArray: function( elem, array ) {
+
+ if ( indexOf ) {
+ return indexOf.call( array, elem );
+ }
+
+ for ( var i = 0, length = array.length; i < length; i++ ) {
+ if ( array[ i ] === elem ) {
+ return i;
+ }
+ }
+
+ return -1;
+ },
+
+ merge: function( first, second ) {
+ var i = first.length,
+ j = 0;
+
+ if ( typeof second.length === "number" ) {
+ for ( var l = second.length; j < l; j++ ) {
+ first[ i++ ] = second[ j ];
+ }
+
+ } else {
+ while ( second[j] !== undefined ) {
+ first[ i++ ] = second[ j++ ];
+ }
+ }
+
+ first.length = i;
+
+ return first;
+ },
+
+ grep: function( elems, callback, inv ) {
+ var ret = [], retVal;
+ inv = !!inv;
+
+ // Go through the array, only saving the items
+ // that pass the validator function
+ for ( var i = 0, length = elems.length; i < length; i++ ) {
+ retVal = !!callback( elems[ i ], i );
+ if ( inv !== retVal ) {
+ ret.push( elems[ i ] );
+ }
+ }
+
+ return ret;
+ },
+
+ // arg is for internal usage only
+ map: function( elems, callback, arg ) {
+ var value, key, ret = [],
+ i = 0,
+ length = elems.length,
+ // jquery objects are treated as arrays
+ isArray = elems instanceof jQuery || length !== undefined && typeof length === "number" && ( ( length > 0 && elems[ 0 ] && elems[ length -1 ] ) || length === 0 || jQuery.isArray( elems ) ) ;
+
+ // Go through the array, translating each of the items to their
+ if ( isArray ) {
+ for ( ; i < length; i++ ) {
+ value = callback( elems[ i ], i, arg );
+
+ if ( value != null ) {
+ ret[ ret.length ] = value;
+ }
+ }
+
+ // Go through every key on the object,
+ } else {
+ for ( key in elems ) {
+ value = callback( elems[ key ], key, arg );
+
+ if ( value != null ) {
+ ret[ ret.length ] = value;
+ }
+ }
+ }
+
+ // Flatten any nested arrays
+ return ret.concat.apply( [], ret );
+ },
+
+ // A global GUID counter for objects
+ guid: 1,
+
+ // Bind a function to a context, optionally partially applying any
+ // arguments.
+ proxy: function( fn, context ) {
+ if ( typeof context === "string" ) {
+ var tmp = fn[ context ];
+ context = fn;
+ fn = tmp;
+ }
+
+ // Quick check to determine if target is callable, in the spec
+ // this throws a TypeError, but we will just return undefined.
+ if ( !jQuery.isFunction( fn ) ) {
+ return undefined;
+ }
+
+ // Simulated bind
+ var args = slice.call( arguments, 2 ),
+ proxy = function() {
+ return fn.apply( context, args.concat( slice.call( arguments ) ) );
+ };
+
+ // Set the guid of unique handler to the same of original handler, so it can be removed
+ proxy.guid = fn.guid = fn.guid || proxy.guid || jQuery.guid++;
+
+ return proxy;
+ },
+
+ // Mutifunctional method to get and set values to a collection
+ // The value/s can optionally be executed if it's a function
+ access: function( elems, key, value, exec, fn, pass ) {
+ var length = elems.length;
+
+ // Setting many attributes
+ if ( typeof key === "object" ) {
+ for ( var k in key ) {
+ jQuery.access( elems, k, key[k], exec, fn, value );
+ }
+ return elems;
+ }
+
+ // Setting one attribute
+ if ( value !== undefined ) {
+ // Optionally, function values get executed if exec is true
+ exec = !pass && exec && jQuery.isFunction(value);
+
+ for ( var i = 0; i < length; i++ ) {
+ fn( elems[i], key, exec ? value.call( elems[i], i, fn( elems[i], key ) ) : value, pass );
+ }
+
+ return elems;
+ }
+
+ // Getting an attribute
+ return length ? fn( elems[0], key ) : undefined;
+ },
+
+ now: function() {
+ return (new Date()).getTime();
+ },
+
+ // Use of jQuery.browser is frowned upon.
+ // More details: http://docs.jquery.com/Utilities/jQuery.browser
+ uaMatch: function( ua ) {
+ ua = ua.toLowerCase();
+
+ var match = rwebkit.exec( ua ) ||
+ ropera.exec( ua ) ||
+ rmsie.exec( ua ) ||
+ ua.indexOf("compatible") < 0 && rmozilla.exec( ua ) ||
+ [];
+
+ return { browser: match[1] || "", version: match[2] || "0" };
+ },
+
+ sub: function() {
+ function jQuerySub( selector, context ) {
+ return new jQuerySub.fn.init( selector, context );
+ }
+ jQuery.extend( true, jQuerySub, this );
+ jQuerySub.superclass = this;
+ jQuerySub.fn = jQuerySub.prototype = this();
+ jQuerySub.fn.constructor = jQuerySub;
+ jQuerySub.sub = this.sub;
+ jQuerySub.fn.init = function init( selector, context ) {
+ if ( context && context instanceof jQuery && !(context instanceof jQuerySub) ) {
+ context = jQuerySub( context );
+ }
+
+ return jQuery.fn.init.call( this, selector, context, rootjQuerySub );
+ };
+ jQuerySub.fn.init.prototype = jQuerySub.fn;
+ var rootjQuerySub = jQuerySub(document);
+ return jQuerySub;
+ },
+
+ browser: {}
+});
+
+// Populate the class2type map
+jQuery.each("Boolean Number String Function Array Date RegExp Object".split(" "), function(i, name) {
+ class2type[ "[object " + name + "]" ] = name.toLowerCase();
+});
+
+browserMatch = jQuery.uaMatch( userAgent );
+if ( browserMatch.browser ) {
+ jQuery.browser[ browserMatch.browser ] = true;
+ jQuery.browser.version = browserMatch.version;
+}
+
+// Deprecated, use jQuery.browser.webkit instead
+if ( jQuery.browser.webkit ) {
+ jQuery.browser.safari = true;
+}
+
+// IE doesn't match non-breaking spaces with \s
+if ( rnotwhite.test( "\xA0" ) ) {
+ trimLeft = /^[\s\xA0]+/;
+ trimRight = /[\s\xA0]+$/;
+}
+
+// All jQuery objects should point back to these
+rootjQuery = jQuery(document);
+
+// Cleanup functions for the document ready method
+if ( document.addEventListener ) {
+ DOMContentLoaded = function() {
+ document.removeEventListener( "DOMContentLoaded", DOMContentLoaded, false );
+ jQuery.ready();
+ };
+
+} else if ( document.attachEvent ) {
+ DOMContentLoaded = function() {
+ // Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).
+ if ( document.readyState === "complete" ) {
+ document.detachEvent( "onreadystatechange", DOMContentLoaded );
+ jQuery.ready();
+ }
+ };
+}
+
+// The DOM ready check for Internet Explorer
+function doScrollCheck() {
+ if ( jQuery.isReady ) {
+ return;
+ }
+
+ try {
+ // If IE is used, use the trick by Diego Perini
+ // http://javascript.nwbox.com/IEContentLoaded/
+ document.documentElement.doScroll("left");
+ } catch(e) {
+ setTimeout( doScrollCheck, 1 );
+ return;
+ }
+
+ // and execute any waiting functions
+ jQuery.ready();
+}
+
+return jQuery;
+
+})();
+
+
+var // Promise methods
+ promiseMethods = "done fail isResolved isRejected promise then always pipe".split( " " ),
+ // Static reference to slice
+ sliceDeferred = [].slice;
+
+jQuery.extend({
+ // Create a simple deferred (one callbacks list)
+ _Deferred: function() {
+ var // callbacks list
+ callbacks = [],
+ // stored [ context , args ]
+ fired,
+ // to avoid firing when already doing so
+ firing,
+ // flag to know if the deferred has been cancelled
+ cancelled,
+ // the deferred itself
+ deferred = {
+
+ // done( f1, f2, ...)
+ done: function() {
+ if ( !cancelled ) {
+ var args = arguments,
+ i,
+ length,
+ elem,
+ type,
+ _fired;
+ if ( fired ) {
+ _fired = fired;
+ fired = 0;
+ }
+ for ( i = 0, length = args.length; i < length; i++ ) {
+ elem = args[ i ];
+ type = jQuery.type( elem );
+ if ( type === "array" ) {
+ deferred.done.apply( deferred, elem );
+ } else if ( type === "function" ) {
+ callbacks.push( elem );
+ }
+ }
+ if ( _fired ) {
+ deferred.resolveWith( _fired[ 0 ], _fired[ 1 ] );
+ }
+ }
+ return this;
+ },
+
+ // resolve with given context and args
+ resolveWith: function( context, args ) {
+ if ( !cancelled && !fired && !firing ) {
+ // make sure args are available (#8421)
+ args = args || [];
+ firing = 1;
+ try {
+ while( callbacks[ 0 ] ) {
+ callbacks.shift().apply( context, args );
+ }
+ }
+ finally {
+ fired = [ context, args ];
+ firing = 0;
+ }
+ }
+ return this;
+ },
+
+ // resolve with this as context and given arguments
+ resolve: function() {
+ deferred.resolveWith( this, arguments );
+ return this;
+ },
+
+ // Has this deferred been resolved?
+ isResolved: function() {
+ return !!( firing || fired );
+ },
+
+ // Cancel
+ cancel: function() {
+ cancelled = 1;
+ callbacks = [];
+ return this;
+ }
+ };
+
+ return deferred;
+ },
+
+ // Full fledged deferred (two callbacks list)
+ Deferred: function( func ) {
+ var deferred = jQuery._Deferred(),
+ failDeferred = jQuery._Deferred(),
+ promise;
+ // Add errorDeferred methods, then and promise
+ jQuery.extend( deferred, {
+ then: function( doneCallbacks, failCallbacks ) {
+ deferred.done( doneCallbacks ).fail( failCallbacks );
+ return this;
+ },
+ always: function() {
+ return deferred.done.apply( deferred, arguments ).fail.apply( this, arguments );
+ },
+ fail: failDeferred.done,
+ rejectWith: failDeferred.resolveWith,
+ reject: failDeferred.resolve,
+ isRejected: failDeferred.isResolved,
+ pipe: function( fnDone, fnFail ) {
+ return jQuery.Deferred(function( newDefer ) {
+ jQuery.each( {
+ done: [ fnDone, "resolve" ],
+ fail: [ fnFail, "reject" ]
+ }, function( handler, data ) {
+ var fn = data[ 0 ],
+ action = data[ 1 ],
+ returned;
+ if ( jQuery.isFunction( fn ) ) {
+ deferred[ handler ](function() {
+ returned = fn.apply( this, arguments );
+ if ( returned && jQuery.isFunction( returned.promise ) ) {
+ returned.promise().then( newDefer.resolve, newDefer.reject );
+ } else {
+ newDefer[ action ]( returned );
+ }
+ });
+ } else {
+ deferred[ handler ]( newDefer[ action ] );
+ }
+ });
+ }).promise();
+ },
+ // Get a promise for this deferred
+ // If obj is provided, the promise aspect is added to the object
+ promise: function( obj ) {
+ if ( obj == null ) {
+ if ( promise ) {
+ return promise;
+ }
+ promise = obj = {};
+ }
+ var i = promiseMethods.length;
+ while( i-- ) {
+ obj[ promiseMethods[i] ] = deferred[ promiseMethods[i] ];
+ }
+ return obj;
+ }
+ });
+ // Make sure only one callback list will be used
+ deferred.done( failDeferred.cancel ).fail( deferred.cancel );
+ // Unexpose cancel
+ delete deferred.cancel;
+ // Call given func if any
+ if ( func ) {
+ func.call( deferred, deferred );
+ }
+ return deferred;
+ },
+
+ // Deferred helper
+ when: function( firstParam ) {
+ var args = arguments,
+ i = 0,
+ length = args.length,
+ count = length,
+ deferred = length <= 1 && firstParam && jQuery.isFunction( firstParam.promise ) ?
+ firstParam :
+ jQuery.Deferred();
+ function resolveFunc( i ) {
+ return function( value ) {
+ args[ i ] = arguments.length > 1 ? sliceDeferred.call( arguments, 0 ) : value;
+ if ( !( --count ) ) {
+ // Strange bug in FF4:
+ // Values changed onto the arguments object sometimes end up as undefined values
+ // outside the $.when method. Cloning the object into a fresh array solves the issue
+ deferred.resolveWith( deferred, sliceDeferred.call( args, 0 ) );
+ }
+ };
+ }
+ if ( length > 1 ) {
+ for( ; i < length; i++ ) {
+ if ( args[ i ] && jQuery.isFunction( args[ i ].promise ) ) {
+ args[ i ].promise().then( resolveFunc(i), deferred.reject );
+ } else {
+ --count;
+ }
+ }
+ if ( !count ) {
+ deferred.resolveWith( deferred, args );
+ }
+ } else if ( deferred !== firstParam ) {
+ deferred.resolveWith( deferred, length ? [ firstParam ] : [] );
+ }
+ return deferred.promise();
+ }
+});
+
+
+
+jQuery.support = (function() {
+
+ var div = document.createElement( "div" ),
+ documentElement = document.documentElement,
+ all,
+ a,
+ select,
+ opt,
+ input,
+ marginDiv,
+ support,
+ fragment,
+ body,
+ testElementParent,
+ testElement,
+ testElementStyle,
+ tds,
+ events,
+ eventName,
+ i,
+ isSupported;
+
+ // Preliminary tests
+ div.setAttribute("className", "t");
+ div.innerHTML = " <link/><table></table><a href='/a' style='top:1px;float:left;opacity:.55;'>a</a><input type='checkbox'/>";
+
+ all = div.getElementsByTagName( "*" );
+ a = div.getElementsByTagName( "a" )[ 0 ];
+
+ // Can't get basic test support
+ if ( !all || !all.length || !a ) {
+ return {};
+ }
+
+ // First batch of supports tests
+ select = document.createElement( "select" );
+ opt = select.appendChild( document.createElement("option") );
+ input = div.getElementsByTagName( "input" )[ 0 ];
+
+ support = {
+ // IE strips leading whitespace when .innerHTML is used
+ leadingWhitespace: ( div.firstChild.nodeType === 3 ),
+
+ // Make sure that tbody elements aren't automatically inserted
+ // IE will insert them into empty tables
+ tbody: !div.getElementsByTagName( "tbody" ).length,
+
+ // Make sure that link elements get serialized correctly by innerHTML
+ // This requires a wrapper element in IE
+ htmlSerialize: !!div.getElementsByTagName( "link" ).length,
+
+ // Get the style information from getAttribute
+ // (IE uses .cssText instead)
+ style: /top/.test( a.getAttribute("style") ),
+
+ // Make sure that URLs aren't manipulated
+ // (IE normalizes it by default)
+ hrefNormalized: ( a.getAttribute( "href" ) === "/a" ),
+
+ // Make sure that element opacity exists
+ // (IE uses filter instead)
+ // Use a regex to work around a WebKit issue. See #5145
+ opacity: /^0.55$/.test( a.style.opacity ),
+
+ // Verify style float existence
+ // (IE uses styleFloat instead of cssFloat)
+ cssFloat: !!a.style.cssFloat,
+
+ // Make sure that if no value is specified for a checkbox
+ // that it defaults to "on".
+ // (WebKit defaults to "" instead)
+ checkOn: ( input.value === "on" ),
+
+ // Make sure that a selected-by-default option has a working selected property.
+ // (WebKit defaults to false instead of true, IE too, if it's in an optgroup)
+ optSelected: opt.selected,
+
+ // Test setAttribute on camelCase class. If it works, we need attrFixes when doing get/setAttribute (ie6/7)
+ getSetAttribute: div.className !== "t",
+
+ // Will be defined later
+ submitBubbles: true,
+ changeBubbles: true,
+ focusinBubbles: false,
+ deleteExpando: true,
+ noCloneEvent: true,
+ inlineBlockNeedsLayout: false,
+ shrinkWrapBlocks: false,
+ reliableMarginRight: true
+ };
+
+ // Make sure checked status is properly cloned
+ input.checked = true;
+ support.noCloneChecked = input.cloneNode( true ).checked;
+
+ // Make sure that the options inside disabled selects aren't marked as disabled
+ // (WebKit marks them as disabled)
+ select.disabled = true;
+ support.optDisabled = !opt.disabled;
+
+ // Test to see if it's possible to delete an expando from an element
+ // Fails in Internet Explorer
+ try {
+ delete div.test;
+ } catch( e ) {
+ support.deleteExpando = false;
+ }
+
+ if ( !div.addEventListener && div.attachEvent && div.fireEvent ) {
+ div.attachEvent( "onclick", function() {
+ // Cloning a node shouldn't copy over any
+ // bound event handlers (IE does this)
+ support.noCloneEvent = false;
+ });
+ div.cloneNode( true ).fireEvent( "onclick" );
+ }
+
+ // Check if a radio maintains it's value
+ // after being appended to the DOM
+ input = document.createElement("input");
+ input.value = "t";
+ input.setAttribute("type", "radio");
+ support.radioValue = input.value === "t";
+
+ input.setAttribute("checked", "checked");
+ div.appendChild( input );
+ fragment = document.createDocumentFragment();
+ fragment.appendChild( div.firstChild );
+
+ // WebKit doesn't clone checked state correctly in fragments
+ support.checkClone = fragment.cloneNode( true ).cloneNode( true ).lastChild.checked;
+
+ div.innerHTML = "";
+
+ // Figure out if the W3C box model works as expected
+ div.style.width = div.style.paddingLeft = "1px";
+
+ body = document.getElementsByTagName( "body" )[ 0 ];
+ // We use our own, invisible, body unless the body is already present
+ // in which case we use a div (#9239)
+ testElement = document.createElement( body ? "div" : "body" );
+ testElementStyle = {
+ visibility: "hidden",
+ width: 0,
+ height: 0,
+ border: 0,
+ margin: 0
+ };
+ if ( body ) {
+ jQuery.extend( testElementStyle, {
+ position: "absolute",
+ left: -1000,
+ top: -1000
+ });
+ }
+ for ( i in testElementStyle ) {
+ testElement.style[ i ] = testElementStyle[ i ];
+ }
+ testElement.appendChild( div );
+ testElementParent = body || documentElement;
+ testElementParent.insertBefore( testElement, testElementParent.firstChild );
+
+ // Check if a disconnected checkbox will retain its checked
+ // value of true after appended to the DOM (IE6/7)
+ support.appendChecked = input.checked;
+
+ support.boxModel = div.offsetWidth === 2;
+
+ if ( "zoom" in div.style ) {
+ // Check if natively block-level elements act like inline-block
+ // elements when setting their display to 'inline' and giving
+ // them layout
+ // (IE < 8 does this)
+ div.style.display = "inline";
+ div.style.zoom = 1;
+ support.inlineBlockNeedsLayout = ( div.offsetWidth === 2 );
+
+ // Check if elements with layout shrink-wrap their children
+ // (IE 6 does this)
+ div.style.display = "";
+ div.innerHTML = "<div style='width:4px;'></div>";
+ support.shrinkWrapBlocks = ( div.offsetWidth !== 2 );
+ }
+
+ div.innerHTML = "<table><tr><td style='padding:0;border:0;display:none'></td><td>t</td></tr></table>";
+ tds = div.getElementsByTagName( "td" );
+
+ // Check if table cells still have offsetWidth/Height when they are set
+ // to display:none and there are still other visible table cells in a
+ // table row; if so, offsetWidth/Height are not reliable for use when
+ // determining if an element has been hidden directly using
+ // display:none (it is still safe to use offsets if a parent element is
+ // hidden; don safety goggles and see bug #4512 for more information).
+ // (only IE 8 fails this test)
+ isSupported = ( tds[ 0 ].offsetHeight === 0 );
+
+ tds[ 0 ].style.display = "";
+ tds[ 1 ].style.display = "none";
+
+ // Check if empty table cells still have offsetWidth/Height
+ // (IE < 8 fail this test)
+ support.reliableHiddenOffsets = isSupported && ( tds[ 0 ].offsetHeight === 0 );
+ div.innerHTML = "";
+
+ // Check if div with explicit width and no margin-right incorrectly
+ // gets computed margin-right based on width of container. For more
+ // info see bug #3333
+ // Fails in WebKit before Feb 2011 nightlies
+ // WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right
+ if ( document.defaultView && document.defaultView.getComputedStyle ) {
+ marginDiv = document.createElement( "div" );
+ marginDiv.style.width = "0";
+ marginDiv.style.marginRight = "0";
+ div.appendChild( marginDiv );
+ support.reliableMarginRight =
+ ( parseInt( ( document.defaultView.getComputedStyle( marginDiv, null ) || { marginRight: 0 } ).marginRight, 10 ) || 0 ) === 0;
+ }
+
+ // Remove the body element we added
+ testElement.innerHTML = "";
+ testElementParent.removeChild( testElement );
+
+ // Technique from Juriy Zaytsev
+ // http://thinkweb2.com/projects/prototype/detecting-event-support-without-browser-sniffing/
+ // We only care about the case where non-standard event systems
+ // are used, namely in IE. Short-circuiting here helps us to
+ // avoid an eval call (in setAttribute) which can cause CSP
+ // to go haywire. See: https://developer.mozilla.org/en/Security/CSP
+ if ( div.attachEvent ) {
+ for( i in {
+ submit: 1,
+ change: 1,
+ focusin: 1
+ } ) {
+ eventName = "on" + i;
+ isSupported = ( eventName in div );
+ if ( !isSupported ) {
+ div.setAttribute( eventName, "return;" );
+ isSupported = ( typeof div[ eventName ] === "function" );
+ }
+ support[ i + "Bubbles" ] = isSupported;
+ }
+ }
+
+ // Null connected elements to avoid leaks in IE
+ testElement = fragment = select = opt = body = marginDiv = div = input = null;
+
+ return support;
+})();
+
+// Keep track of boxModel
+jQuery.boxModel = jQuery.support.boxModel;
+
+
+
+
+var rbrace = /^(?:\{.*\}|\[.*\])$/,
+ rmultiDash = /([a-z])([A-Z])/g;
+
+jQuery.extend({
+ cache: {},
+
+ // Please use with caution
+ uuid: 0,
+
+ // Unique for each copy of jQuery on the page
+ // Non-digits removed to match rinlinejQuery
+ expando: "jQuery" + ( jQuery.fn.jquery + Math.random() ).replace( /\D/g, "" ),
+
+ // The following elements throw uncatchable exceptions if you
+ // attempt to add expando properties to them.
+ noData: {
+ "embed": true,
+ // Ban all objects except for Flash (which handle expandos)
+ "object": "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",
+ "applet": true
+ },
+
+ hasData: function( elem ) {
+ elem = elem.nodeType ? jQuery.cache[ elem[jQuery.expando] ] : elem[ jQuery.expando ];
+
+ return !!elem && !isEmptyDataObject( elem );
+ },
+
+ data: function( elem, name, data, pvt /* Internal Use Only */ ) {
+ if ( !jQuery.acceptData( elem ) ) {
+ return;
+ }
+
+ var internalKey = jQuery.expando, getByName = typeof name === "string", thisCache,
+
+ // We have to handle DOM nodes and JS objects differently because IE6-7
+ // can't GC object references properly across the DOM-JS boundary
+ isNode = elem.nodeType,
+
+ // Only DOM nodes need the global jQuery cache; JS object data is
+ // attached directly to the object so GC can occur automatically
+ cache = isNode ? jQuery.cache : elem,
+
+ // Only defining an ID for JS objects if its cache already exists allows
+ // the code to shortcut on the same path as a DOM node with no cache
+ id = isNode ? elem[ jQuery.expando ] : elem[ jQuery.expando ] && jQuery.expando;
+
+ // Avoid doing any more work than we need to when trying to get data on an
+ // object that has no data at all
+ if ( (!id || (pvt && id && !cache[ id ][ internalKey ])) && getByName && data === undefined ) {
+ return;
+ }
+
+ if ( !id ) {
+ // Only DOM nodes need a new unique ID for each element since their data
+ // ends up in the global cache
+ if ( isNode ) {
+ elem[ jQuery.expando ] = id = ++jQuery.uuid;
+ } else {
+ id = jQuery.expando;
+ }
+ }
+
+ if ( !cache[ id ] ) {
+ cache[ id ] = {};
+
+ // TODO: This is a hack for 1.5 ONLY. Avoids exposing jQuery
+ // metadata on plain JS objects when the object is serialized using
+ // JSON.stringify
+ if ( !isNode ) {
+ cache[ id ].toJSON = jQuery.noop;
+ }
+ }
+
+ // An object can be passed to jQuery.data instead of a key/value pair; this gets
+ // shallow copied over onto the existing cache
+ if ( typeof name === "object" || typeof name === "function" ) {
+ if ( pvt ) {
+ cache[ id ][ internalKey ] = jQuery.extend(cache[ id ][ internalKey ], name);
+ } else {
+ cache[ id ] = jQuery.extend(cache[ id ], name);
+ }
+ }
+
+ thisCache = cache[ id ];
+
+ // Internal jQuery data is stored in a separate object inside the object's data
+ // cache in order to avoid key collisions between internal data and user-defined
+ // data
+ if ( pvt ) {
+ if ( !thisCache[ internalKey ] ) {
+ thisCache[ internalKey ] = {};
+ }
+
+ thisCache = thisCache[ internalKey ];
+ }
+
+ if ( data !== undefined ) {
+ thisCache[ jQuery.camelCase( name ) ] = data;
+ }
+
+ // TODO: This is a hack for 1.5 ONLY. It will be removed in 1.6. Users should
+ // not attempt to inspect the internal events object using jQuery.data, as this
+ // internal data object is undocumented and subject to change.
+ if ( name === "events" && !thisCache[name] ) {
+ return thisCache[ internalKey ] && thisCache[ internalKey ].events;
+ }
+
+ return getByName ?
+ // Check for both converted-to-camel and non-converted data property names
+ thisCache[ jQuery.camelCase( name ) ] || thisCache[ name ] :
+ thisCache;
+ },
+
+ removeData: function( elem, name, pvt /* Internal Use Only */ ) {
+ if ( !jQuery.acceptData( elem ) ) {
+ return;
+ }
+
+ var internalKey = jQuery.expando, isNode = elem.nodeType,
+
+ // See jQuery.data for more information
+ cache = isNode ? jQuery.cache : elem,
+
+ // See jQuery.data for more information
+ id = isNode ? elem[ jQuery.expando ] : jQuery.expando;
+
+ // If there is already no cache entry for this object, there is no
+ // purpose in continuing
+ if ( !cache[ id ] ) {
+ return;
+ }
+
+ if ( name ) {
+ var thisCache = pvt ? cache[ id ][ internalKey ] : cache[ id ];
+
+ if ( thisCache ) {
+ delete thisCache[ name ];
+
+ // If there is no data left in the cache, we want to continue
+ // and let the cache object itself get destroyed
+ if ( !isEmptyDataObject(thisCache) ) {
+ return;
+ }
+ }
+ }
+
+ // See jQuery.data for more information
+ if ( pvt ) {
+ delete cache[ id ][ internalKey ];
+
+ // Don't destroy the parent cache unless the internal data object
+ // had been the only thing left in it
+ if ( !isEmptyDataObject(cache[ id ]) ) {
+ return;
+ }
+ }
+
+ var internalCache = cache[ id ][ internalKey ];
+
+ // Browsers that fail expando deletion also refuse to delete expandos on
+ // the window, but it will allow it on all other JS objects; other browsers
+ // don't care
+ if ( jQuery.support.deleteExpando || cache != window ) {
+ delete cache[ id ];
+ } else {
+ cache[ id ] = null;
+ }
+
+ // We destroyed the entire user cache at once because it's faster than
+ // iterating through each key, but we need to continue to persist internal
+ // data if it existed
+ if ( internalCache ) {
+ cache[ id ] = {};
+ // TODO: This is a hack for 1.5 ONLY. Avoids exposing jQuery
+ // metadata on plain JS objects when the object is serialized using
+ // JSON.stringify
+ if ( !isNode ) {
+ cache[ id ].toJSON = jQuery.noop;
+ }
+
+ cache[ id ][ internalKey ] = internalCache;
+
+ // Otherwise, we need to eliminate the expando on the node to avoid
+ // false lookups in the cache for entries that no longer exist
+ } else if ( isNode ) {
+ // IE does not allow us to delete expando properties from nodes,
+ // nor does it have a removeAttribute function on Document nodes;
+ // we must handle all of these cases
+ if ( jQuery.support.deleteExpando ) {
+ delete elem[ jQuery.expando ];
+ } else if ( elem.removeAttribute ) {
+ elem.removeAttribute( jQuery.expando );
+ } else {
+ elem[ jQuery.expando ] = null;
+ }
+ }
+ },
+
+ // For internal use only.
+ _data: function( elem, name, data ) {
+ return jQuery.data( elem, name, data, true );
+ },
+
+ // A method for determining if a DOM node can handle the data expando
+ acceptData: function( elem ) {
+ if ( elem.nodeName ) {
+ var match = jQuery.noData[ elem.nodeName.toLowerCase() ];
+
+ if ( match ) {
+ return !(match === true || elem.getAttribute("classid") !== match);
+ }
+ }
+
+ return true;
+ }
+});
+
+jQuery.fn.extend({
+ data: function( key, value ) {
+ var data = null;
+
+ if ( typeof key === "undefined" ) {
+ if ( this.length ) {
+ data = jQuery.data( this[0] );
+
+ if ( this[0].nodeType === 1 ) {
+ var attr = this[0].attributes, name;
+ for ( var i = 0, l = attr.length; i < l; i++ ) {
+ name = attr[i].name;
+
+ if ( name.indexOf( "data-" ) === 0 ) {
+ name = jQuery.camelCase( name.substring(5) );
+
+ dataAttr( this[0], name, data[ name ] );
+ }
+ }
+ }
+ }
+
+ return data;
+
+ } else if ( typeof key === "object" ) {
+ return this.each(function() {
+ jQuery.data( this, key );
+ });
+ }
+
+ var parts = key.split(".");
+ parts[1] = parts[1] ? "." + parts[1] : "";
+
+ if ( value === undefined ) {
+ data = this.triggerHandler("getData" + parts[1] + "!", [parts[0]]);
+
+ // Try to fetch any internally stored data first
+ if ( data === undefined && this.length ) {
+ data = jQuery.data( this[0], key );
+ data = dataAttr( this[0], key, data );
+ }
+
+ return data === undefined && parts[1] ?
+ this.data( parts[0] ) :
+ data;
+
+ } else {
+ return this.each(function() {
+ var $this = jQuery( this ),
+ args = [ parts[0], value ];
+
+ $this.triggerHandler( "setData" + parts[1] + "!", args );
+ jQuery.data( this, key, value );
+ $this.triggerHandler( "changeData" + parts[1] + "!", args );
+ });
+ }
+ },
+
+ removeData: function( key ) {
+ return this.each(function() {
+ jQuery.removeData( this, key );
+ });
+ }
+});
+
+function dataAttr( elem, key, data ) {
+ // If nothing was found internally, try to fetch any
+ // data from the HTML5 data-* attribute
+ if ( data === undefined && elem.nodeType === 1 ) {
+ var name = "data-" + key.replace( rmultiDash, "$1-$2" ).toLowerCase();
+
+ data = elem.getAttribute( name );
+
+ if ( typeof data === "string" ) {
+ try {
+ data = data === "true" ? true :
+ data === "false" ? false :
+ data === "null" ? null :
+ !jQuery.isNaN( data ) ? parseFloat( data ) :
+ rbrace.test( data ) ? jQuery.parseJSON( data ) :
+ data;
+ } catch( e ) {}
+
+ // Make sure we set the data so it isn't changed later
+ jQuery.data( elem, key, data );
+
+ } else {
+ data = undefined;
+ }
+ }
+
+ return data;
+}
+
+// TODO: This is a hack for 1.5 ONLY to allow objects with a single toJSON
+// property to be considered empty objects; this property always exists in
+// order to make sure JSON.stringify does not expose internal metadata
+function isEmptyDataObject( obj ) {
+ for ( var name in obj ) {
+ if ( name !== "toJSON" ) {
+ return false;
+ }
+ }
+
+ return true;
+}
+
+
+
+
+function handleQueueMarkDefer( elem, type, src ) {
+ var deferDataKey = type + "defer",
+ queueDataKey = type + "queue",
+ markDataKey = type + "mark",
+ defer = jQuery.data( elem, deferDataKey, undefined, true );
+ if ( defer &&
+ ( src === "queue" || !jQuery.data( elem, queueDataKey, undefined, true ) ) &&
+ ( src === "mark" || !jQuery.data( elem, markDataKey, undefined, true ) ) ) {
+ // Give room for hard-coded callbacks to fire first
+ // and eventually mark/queue something else on the element
+ setTimeout( function() {
+ if ( !jQuery.data( elem, queueDataKey, undefined, true ) &&
+ !jQuery.data( elem, markDataKey, undefined, true ) ) {
+ jQuery.removeData( elem, deferDataKey, true );
+ defer.resolve();
+ }
+ }, 0 );
+ }
+}
+
+jQuery.extend({
+
+ _mark: function( elem, type ) {
+ if ( elem ) {
+ type = (type || "fx") + "mark";
+ jQuery.data( elem, type, (jQuery.data(elem,type,undefined,true) || 0) + 1, true );
+ }
+ },
+
+ _unmark: function( force, elem, type ) {
+ if ( force !== true ) {
+ type = elem;
+ elem = force;
+ force = false;
+ }
+ if ( elem ) {
+ type = type || "fx";
+ var key = type + "mark",
+ count = force ? 0 : ( (jQuery.data( elem, key, undefined, true) || 1 ) - 1 );
+ if ( count ) {
+ jQuery.data( elem, key, count, true );
+ } else {
+ jQuery.removeData( elem, key, true );
+ handleQueueMarkDefer( elem, type, "mark" );
+ }
+ }
+ },
+
+ queue: function( elem, type, data ) {
+ if ( elem ) {
+ type = (type || "fx") + "queue";
+ var q = jQuery.data( elem, type, undefined, true );
+ // Speed up dequeue by getting out quickly if this is just a lookup
+ if ( data ) {
+ if ( !q || jQuery.isArray(data) ) {
+ q = jQuery.data( elem, type, jQuery.makeArray(data), true );
+ } else {
+ q.push( data );
+ }
+ }
+ return q || [];
+ }
+ },
+
+ dequeue: function( elem, type ) {
+ type = type || "fx";
+
+ var queue = jQuery.queue( elem, type ),
+ fn = queue.shift(),
+ defer;
+
+ // If the fx queue is dequeued, always remove the progress sentinel
+ if ( fn === "inprogress" ) {
+ fn = queue.shift();
+ }
+
+ if ( fn ) {
+ // Add a progress sentinel to prevent the fx queue from being
+ // automatically dequeued
+ if ( type === "fx" ) {
+ queue.unshift("inprogress");
+ }
+
+ fn.call(elem, function() {
+ jQuery.dequeue(elem, type);
+ });
+ }
+
+ if ( !queue.length ) {
+ jQuery.removeData( elem, type + "queue", true );
+ handleQueueMarkDefer( elem, type, "queue" );
+ }
+ }
+});
+
+jQuery.fn.extend({
+ queue: function( type, data ) {
+ if ( typeof type !== "string" ) {
+ data = type;
+ type = "fx";
+ }
+
+ if ( data === undefined ) {
+ return jQuery.queue( this[0], type );
+ }
+ return this.each(function() {
+ var queue = jQuery.queue( this, type, data );
+
+ if ( type === "fx" && queue[0] !== "inprogress" ) {
+ jQuery.dequeue( this, type );
+ }
+ });
+ },
+ dequeue: function( type ) {
+ return this.each(function() {
+ jQuery.dequeue( this, type );
+ });
+ },
+ // Based off of the plugin by Clint Helfers, with permission.
+ // http://blindsignals.com/index.php/2009/07/jquery-delay/
+ delay: function( time, type ) {
+ time = jQuery.fx ? jQuery.fx.speeds[time] || time : time;
+ type = type || "fx";
+
+ return this.queue( type, function() {
+ var elem = this;
+ setTimeout(function() {
+ jQuery.dequeue( elem, type );
+ }, time );
+ });
+ },
+ clearQueue: function( type ) {
+ return this.queue( type || "fx", [] );
+ },
+ // Get a promise resolved when queues of a certain type
+ // are emptied (fx is the type by default)
+ promise: function( type, object ) {
+ if ( typeof type !== "string" ) {
+ object = type;
+ type = undefined;
+ }
+ type = type || "fx";
+ var defer = jQuery.Deferred(),
+ elements = this,
+ i = elements.length,
+ count = 1,
+ deferDataKey = type + "defer",
+ queueDataKey = type + "queue",
+ markDataKey = type + "mark",
+ tmp;
+ function resolve() {
+ if ( !( --count ) ) {
+ defer.resolveWith( elements, [ elements ] );
+ }
+ }
+ while( i-- ) {
+ if (( tmp = jQuery.data( elements[ i ], deferDataKey, undefined, true ) ||
+ ( jQuery.data( elements[ i ], queueDataKey, undefined, true ) ||
+ jQuery.data( elements[ i ], markDataKey, undefined, true ) ) &&
+ jQuery.data( elements[ i ], deferDataKey, jQuery._Deferred(), true ) )) {
+ count++;
+ tmp.done( resolve );
+ }
+ }
+ resolve();
+ return defer.promise();
+ }
+});
+
+
+
+
+var rclass = /[\n\t\r]/g,
+ rspace = /\s+/,
+ rreturn = /\r/g,
+ rtype = /^(?:button|input)$/i,
+ rfocusable = /^(?:button|input|object|select|textarea)$/i,
+ rclickable = /^a(?:rea)?$/i,
+ rboolean = /^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,
+ rinvalidChar = /\:|^on/,
+ formHook, boolHook;
+
+jQuery.fn.extend({
+ attr: function( name, value ) {
+ return jQuery.access( this, name, value, true, jQuery.attr );
+ },
+
+ removeAttr: function( name ) {
+ return this.each(function() {
+ jQuery.removeAttr( this, name );
+ });
+ },
+
+ prop: function( name, value ) {
+ return jQuery.access( this, name, value, true, jQuery.prop );
+ },
+
+ removeProp: function( name ) {
+ name = jQuery.propFix[ name ] || name;
+ return this.each(function() {
+ // try/catch handles cases where IE balks (such as removing a property on window)
+ try {
+ this[ name ] = undefined;
+ delete this[ name ];
+ } catch( e ) {}
+ });
+ },
+
+ addClass: function( value ) {
+ var classNames, i, l, elem,
+ setClass, c, cl;
+
+ if ( jQuery.isFunction( value ) ) {
+ return this.each(function( j ) {
+ jQuery( this ).addClass( value.call(this, j, this.className) );
+ });
+ }
+
+ if ( value && typeof value === "string" ) {
+ classNames = value.split( rspace );
+
+ for ( i = 0, l = this.length; i < l; i++ ) {
+ elem = this[ i ];
+
+ if ( elem.nodeType === 1 ) {
+ if ( !elem.className && classNames.length === 1 ) {
+ elem.className = value;
+
+ } else {
+ setClass = " " + elem.className + " ";
+
+ for ( c = 0, cl = classNames.length; c < cl; c++ ) {
+ if ( !~setClass.indexOf( " " + classNames[ c ] + " " ) ) {
+ setClass += classNames[ c ] + " ";
+ }
+ }
+ elem.className = jQuery.trim( setClass );
+ }
+ }
+ }
+ }
+
+ return this;
+ },
+
+ removeClass: function( value ) {
+ var classNames, i, l, elem, className, c, cl;
+
+ if ( jQuery.isFunction( value ) ) {
+ return this.each(function( j ) {
+ jQuery( this ).removeClass( value.call(this, j, this.className) );
+ });
+ }
+
+ if ( (value && typeof value === "string") || value === undefined ) {
+ classNames = (value || "").split( rspace );
+
+ for ( i = 0, l = this.length; i < l; i++ ) {
+ elem = this[ i ];
+
+ if ( elem.nodeType === 1 && elem.className ) {
+ if ( value ) {
+ className = (" " + elem.className + " ").replace( rclass, " " );
+ for ( c = 0, cl = classNames.length; c < cl; c++ ) {
+ className = className.replace(" " + classNames[ c ] + " ", " ");
+ }
+ elem.className = jQuery.trim( className );
+
+ } else {
+ elem.className = "";
+ }
+ }
+ }
+ }
+
+ return this;
+ },
+
+ toggleClass: function( value, stateVal ) {
+ var type = typeof value,
+ isBool = typeof stateVal === "boolean";
+
+ if ( jQuery.isFunction( value ) ) {
+ return this.each(function( i ) {
+ jQuery( this ).toggleClass( value.call(this, i, this.className, stateVal), stateVal );
+ });
+ }
+
+ return this.each(function() {
+ if ( type === "string" ) {
+ // toggle individual class names
+ var className,
+ i = 0,
+ self = jQuery( this ),
+ state = stateVal,
+ classNames = value.split( rspace );
+
+ while ( (className = classNames[ i++ ]) ) {
+ // check each className given, space seperated list
+ state = isBool ? state : !self.hasClass( className );
+ self[ state ? "addClass" : "removeClass" ]( className );
+ }
+
+ } else if ( type === "undefined" || type === "boolean" ) {
+ if ( this.className ) {
+ // store className if set
+ jQuery._data( this, "__className__", this.className );
+ }
+
+ // toggle whole className
+ this.className = this.className || value === false ? "" : jQuery._data( this, "__className__" ) || "";
+ }
+ });
+ },
+
+ hasClass: function( selector ) {
+ var className = " " + selector + " ";
+ for ( var i = 0, l = this.length; i < l; i++ ) {
+ if ( (" " + this[i].className + " ").replace(rclass, " ").indexOf( className ) > -1 ) {
+ return true;
+ }
+ }
+
+ return false;
+ },
+
+ val: function( value ) {
+ var hooks, ret,
+ elem = this[0];
+
+ if ( !arguments.length ) {
+ if ( elem ) {
+ hooks = jQuery.valHooks[ elem.nodeName.toLowerCase() ] || jQuery.valHooks[ elem.type ];
+
+ if ( hooks && "get" in hooks && (ret = hooks.get( elem, "value" )) !== undefined ) {
+ return ret;
+ }
+
+ ret = elem.value;
+
+ return typeof ret === "string" ?
+ // handle most common string cases
+ ret.replace(rreturn, "") :
+ // handle cases where value is null/undef or number
+ ret == null ? "" : ret;
+ }
+
+ return undefined;
+ }
+
+ var isFunction = jQuery.isFunction( value );
+
+ return this.each(function( i ) {
+ var self = jQuery(this), val;
+
+ if ( this.nodeType !== 1 ) {
+ return;
+ }
+
+ if ( isFunction ) {
+ val = value.call( this, i, self.val() );
+ } else {
+ val = value;
+ }
+
+ // Treat null/undefined as ""; convert numbers to string
+ if ( val == null ) {
+ val = "";
+ } else if ( typeof val === "number" ) {
+ val += "";
+ } else if ( jQuery.isArray( val ) ) {
+ val = jQuery.map(val, function ( value ) {
+ return value == null ? "" : value + "";
+ });
+ }
+
+ hooks = jQuery.valHooks[ this.nodeName.toLowerCase() ] || jQuery.valHooks[ this.type ];
+
+ // If set returns undefined, fall back to normal setting
+ if ( !hooks || !("set" in hooks) || hooks.set( this, val, "value" ) === undefined ) {
+ this.value = val;
+ }
+ });
+ }
+});
+
+jQuery.extend({
+ valHooks: {
+ option: {
+ get: function( elem ) {
+ // attributes.value is undefined in Blackberry 4.7 but
+ // uses .value. See #6932
+ var val = elem.attributes.value;
+ return !val || val.specified ? elem.value : elem.text;
+ }
+ },
+ select: {
+ get: function( elem ) {
+ var value,
+ index = elem.selectedIndex,
+ values = [],
+ options = elem.options,
+ one = elem.type === "select-one";
+
+ // Nothing was selected
+ if ( index < 0 ) {
+ return null;
+ }
+
+ // Loop through all the selected options
+ for ( var i = one ? index : 0, max = one ? index + 1 : options.length; i < max; i++ ) {
+ var option = options[ i ];
+
+ // Don't return options that are disabled or in a disabled optgroup
+ if ( option.selected && (jQuery.support.optDisabled ? !option.disabled : option.getAttribute("disabled") === null) &&
+ (!option.parentNode.disabled || !jQuery.nodeName( option.parentNode, "optgroup" )) ) {
+
+ // Get the specific value for the option
+ value = jQuery( option ).val();
+
+ // We don't need an array for one selects
+ if ( one ) {
+ return value;
+ }
+
+ // Multi-Selects return an array
+ values.push( value );
+ }
+ }
+
+ // Fixes Bug #2551 -- select.val() broken in IE after form.reset()
+ if ( one && !values.length && options.length ) {
+ return jQuery( options[ index ] ).val();
+ }
+
+ return values;
+ },
+
+ set: function( elem, value ) {
+ var values = jQuery.makeArray( value );
+
+ jQuery(elem).find("option").each(function() {
+ this.selected = jQuery.inArray( jQuery(this).val(), values ) >= 0;
+ });
+
+ if ( !values.length ) {
+ elem.selectedIndex = -1;
+ }
+ return values;
+ }
+ }
+ },
+
+ attrFn: {
+ val: true,
+ css: true,
+ html: true,
+ text: true,
+ data: true,
+ width: true,
+ height: true,
+ offset: true
+ },
+
+ attrFix: {
+ // Always normalize to ensure hook usage
+ tabindex: "tabIndex"
+ },
+
+ attr: function( elem, name, value, pass ) {
+ var nType = elem.nodeType;
+
+ // don't get/set attributes on text, comment and attribute nodes
+ if ( !elem || nType === 3 || nType === 8 || nType === 2 ) {
+ return undefined;
+ }
+
+ if ( pass && name in jQuery.attrFn ) {
+ return jQuery( elem )[ name ]( value );
+ }
+
+ // Fallback to prop when attributes are not supported
+ if ( !("getAttribute" in elem) ) {
+ return jQuery.prop( elem, name, value );
+ }
+
+ var ret, hooks,
+ notxml = nType !== 1 || !jQuery.isXMLDoc( elem );
+
+ // Normalize the name if needed
+ if ( notxml ) {
+ name = jQuery.attrFix[ name ] || name;
+
+ hooks = jQuery.attrHooks[ name ];
+
+ if ( !hooks ) {
+ // Use boolHook for boolean attributes
+ if ( rboolean.test( name ) ) {
+
+ hooks = boolHook;
+
+ // Use formHook for forms and if the name contains certain characters
+ } else if ( formHook && name !== "className" &&
+ (jQuery.nodeName( elem, "form" ) || rinvalidChar.test( name )) ) {
+
+ hooks = formHook;
+ }
+ }
+ }
+
+ if ( value !== undefined ) {
+
+ if ( value === null ) {
+ jQuery.removeAttr( elem, name );
+ return undefined;
+
+ } else if ( hooks && "set" in hooks && notxml && (ret = hooks.set( elem, value, name )) !== undefined ) {
+ return ret;
+
+ } else {
+ elem.setAttribute( name, "" + value );
+ return value;
+ }
+
+ } else if ( hooks && "get" in hooks && notxml && (ret = hooks.get( elem, name )) !== null ) {
+ return ret;
+
+ } else {
+
+ ret = elem.getAttribute( name );
+
+ // Non-existent attributes return null, we normalize to undefined
+ return ret === null ?
+ undefined :
+ ret;
+ }
+ },
+
+ removeAttr: function( elem, name ) {
+ var propName;
+ if ( elem.nodeType === 1 ) {
+ name = jQuery.attrFix[ name ] || name;
+
+ if ( jQuery.support.getSetAttribute ) {
+ // Use removeAttribute in browsers that support it
+ elem.removeAttribute( name );
+ } else {
+ jQuery.attr( elem, name, "" );
+ elem.removeAttributeNode( elem.getAttributeNode( name ) );
+ }
+
+ // Set corresponding property to false for boolean attributes
+ if ( rboolean.test( name ) && (propName = jQuery.propFix[ name ] || name) in elem ) {
+ elem[ propName ] = false;
+ }
+ }
+ },
+
+ attrHooks: {
+ type: {
+ set: function( elem, value ) {
+ // We can't allow the type property to be changed (since it causes problems in IE)
+ if ( rtype.test( elem.nodeName ) && elem.parentNode ) {
+ jQuery.error( "type property can't be changed" );
+ } else if ( !jQuery.support.radioValue && value === "radio" && jQuery.nodeName(elem, "input") ) {
+ // Setting the type on a radio button after the value resets the value in IE6-9
+ // Reset value to it's default in case type is set after value
+ // This is for element creation
+ var val = elem.value;
+ elem.setAttribute( "type", value );
+ if ( val ) {
+ elem.value = val;
+ }
+ return value;
+ }
+ }
+ },
+ tabIndex: {
+ get: function( elem ) {
+ // elem.tabIndex doesn't always return the correct value when it hasn't been explicitly set
+ // http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/
+ var attributeNode = elem.getAttributeNode("tabIndex");
+
+ return attributeNode && attributeNode.specified ?
+ parseInt( attributeNode.value, 10 ) :
+ rfocusable.test( elem.nodeName ) || rclickable.test( elem.nodeName ) && elem.href ?
+ 0 :
+ undefined;
+ }
+ },
+ // Use the value property for back compat
+ // Use the formHook for button elements in IE6/7 (#1954)
+ value: {
+ get: function( elem, name ) {
+ if ( formHook && jQuery.nodeName( elem, "button" ) ) {
+ return formHook.get( elem, name );
+ }
+ return name in elem ?
+ elem.value :
+ null;
+ },
+ set: function( elem, value, name ) {
+ if ( formHook && jQuery.nodeName( elem, "button" ) ) {
+ return formHook.set( elem, value, name );
+ }
+ // Does not return so that setAttribute is also used
+ elem.value = value;
+ }
+ }
+ },
+
+ propFix: {
+ tabindex: "tabIndex",
+ readonly: "readOnly",
+ "for": "htmlFor",
+ "class": "className",
+ maxlength: "maxLength",
+ cellspacing: "cellSpacing",
+ cellpadding: "cellPadding",
+ rowspan: "rowSpan",
+ colspan: "colSpan",
+ usemap: "useMap",
+ frameborder: "frameBorder",
+ contenteditable: "contentEditable"
+ },
+
+ prop: function( elem, name, value ) {
+ var nType = elem.nodeType;
+
+ // don't get/set properties on text, comment and attribute nodes
+ if ( !elem || nType === 3 || nType === 8 || nType === 2 ) {
+ return undefined;
+ }
+
+ var ret, hooks,
+ notxml = nType !== 1 || !jQuery.isXMLDoc( elem );
+
+ if ( notxml ) {
+ // Fix name and attach hooks
+ name = jQuery.propFix[ name ] || name;
+ hooks = jQuery.propHooks[ name ];
+ }
+
+ if ( value !== undefined ) {
+ if ( hooks && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ) {
+ return ret;
+
+ } else {
+ return (elem[ name ] = value);
+ }
+
+ } else {
+ if ( hooks && "get" in hooks && (ret = hooks.get( elem, name )) !== undefined ) {
+ return ret;
+
+ } else {
+ return elem[ name ];
+ }
+ }
+ },
+
+ propHooks: {}
+});
+
+// Hook for boolean attributes
+boolHook = {
+ get: function( elem, name ) {
+ // Align boolean attributes with corresponding properties
+ return jQuery.prop( elem, name ) ?
+ name.toLowerCase() :
+ undefined;
+ },
+ set: function( elem, value, name ) {
+ var propName;
+ if ( value === false ) {
+ // Remove boolean attributes when set to false
+ jQuery.removeAttr( elem, name );
+ } else {
+ // value is true since we know at this point it's type boolean and not false
+ // Set boolean attributes to the same name and set the DOM property
+ propName = jQuery.propFix[ name ] || name;
+ if ( propName in elem ) {
+ // Only set the IDL specifically if it already exists on the element
+ elem[ propName ] = true;
+ }
+
+ elem.setAttribute( name, name.toLowerCase() );
+ }
+ return name;
+ }
+};
+
+// IE6/7 do not support getting/setting some attributes with get/setAttribute
+if ( !jQuery.support.getSetAttribute ) {
+
+ // propFix is more comprehensive and contains all fixes
+ jQuery.attrFix = jQuery.propFix;
+
+ // Use this for any attribute on a form in IE6/7
+ formHook = jQuery.attrHooks.name = jQuery.attrHooks.title = jQuery.valHooks.button = {
+ get: function( elem, name ) {
+ var ret;
+ ret = elem.getAttributeNode( name );
+ // Return undefined if nodeValue is empty string
+ return ret && ret.nodeValue !== "" ?
+ ret.nodeValue :
+ undefined;
+ },
+ set: function( elem, value, name ) {
+ // Check form objects in IE (multiple bugs related)
+ // Only use nodeValue if the attribute node exists on the form
+ var ret = elem.getAttributeNode( name );
+ if ( ret ) {
+ ret.nodeValue = value;
+ return value;
+ }
+ }
+ };
+
+ // Set width and height to auto instead of 0 on empty string( Bug #8150 )
+ // This is for removals
+ jQuery.each([ "width", "height" ], function( i, name ) {
+ jQuery.attrHooks[ name ] = jQuery.extend( jQuery.attrHooks[ name ], {
+ set: function( elem, value ) {
+ if ( value === "" ) {
+ elem.setAttribute( name, "auto" );
+ return value;
+ }
+ }
+ });
+ });
+}
+
+
+// Some attributes require a special call on IE
+if ( !jQuery.support.hrefNormalized ) {
+ jQuery.each([ "href", "src", "width", "height" ], function( i, name ) {
+ jQuery.attrHooks[ name ] = jQuery.extend( jQuery.attrHooks[ name ], {
+ get: function( elem ) {
+ var ret = elem.getAttribute( name, 2 );
+ return ret === null ? undefined : ret;
+ }
+ });
+ });
+}
+
+if ( !jQuery.support.style ) {
+ jQuery.attrHooks.style = {
+ get: function( elem ) {
+ // Return undefined in the case of empty string
+ // Normalize to lowercase since IE uppercases css property names
+ return elem.style.cssText.toLowerCase() || undefined;
+ },
+ set: function( elem, value ) {
+ return (elem.style.cssText = "" + value);
+ }
+ };
+}
+
+// Safari mis-reports the default selected property of an option
+// Accessing the parent's selectedIndex property fixes it
+if ( !jQuery.support.optSelected ) {
+ jQuery.propHooks.selected = jQuery.extend( jQuery.propHooks.selected, {
+ get: function( elem ) {
+ var parent = elem.parentNode;
+
+ if ( parent ) {
+ parent.selectedIndex;
+
+ // Make sure that it also works with optgroups, see #5701
+ if ( parent.parentNode ) {
+ parent.parentNode.selectedIndex;
+ }
+ }
+ }
+ });
+}
+
+// Radios and checkboxes getter/setter
+if ( !jQuery.support.checkOn ) {
+ jQuery.each([ "radio", "checkbox" ], function() {
+ jQuery.valHooks[ this ] = {
+ get: function( elem ) {
+ // Handle the case where in Webkit "" is returned instead of "on" if a value isn't specified
+ return elem.getAttribute("value") === null ? "on" : elem.value;
+ }
+ };
+ });
+}
+jQuery.each([ "radio", "checkbox" ], function() {
+ jQuery.valHooks[ this ] = jQuery.extend( jQuery.valHooks[ this ], {
+ set: function( elem, value ) {
+ if ( jQuery.isArray( value ) ) {
+ return (elem.checked = jQuery.inArray( jQuery(elem).val(), value ) >= 0);
+ }
+ }
+ });
+});
+
+
+
+
+var rnamespaces = /\.(.*)$/,
+ rformElems = /^(?:textarea|input|select)$/i,
+ rperiod = /\./g,
+ rspaces = / /g,
+ rescape = /[^\w\s.|`]/g,
+ fcleanup = function( nm ) {
+ return nm.replace(rescape, "\\$&");
+ };
+
+/*
+ * A number of helper functions used for managing events.
+ * Many of the ideas behind this code originated from
+ * Dean Edwards' addEvent library.
+ */
+jQuery.event = {
+
+ // Bind an event to an element
+ // Original by Dean Edwards
+ add: function( elem, types, handler, data ) {
+ if ( elem.nodeType === 3 || elem.nodeType === 8 ) {
+ return;
+ }
+
+ if ( handler === false ) {
+ handler = returnFalse;
+ } else if ( !handler ) {
+ // Fixes bug #7229. Fix recommended by jdalton
+ return;
+ }
+
+ var handleObjIn, handleObj;
+
+ if ( handler.handler ) {
+ handleObjIn = handler;
+ handler = handleObjIn.handler;
+ }
+
+ // Make sure that the function being executed has a unique ID
+ if ( !handler.guid ) {
+ handler.guid = jQuery.guid++;
+ }
+
+ // Init the element's event structure
+ var elemData = jQuery._data( elem );
+
+ // If no elemData is found then we must be trying to bind to one of the
+ // banned noData elements
+ if ( !elemData ) {
+ return;
+ }
+
+ var events = elemData.events,
+ eventHandle = elemData.handle;
+
+ if ( !events ) {
+ elemData.events = events = {};
+ }
+
+ if ( !eventHandle ) {
+ elemData.handle = eventHandle = function( e ) {
+ // Discard the second event of a jQuery.event.trigger() and
+ // when an event is called after a page has unloaded
+ return typeof jQuery !== "undefined" && (!e || jQuery.event.triggered !== e.type) ?
+ jQuery.event.handle.apply( eventHandle.elem, arguments ) :
+ undefined;
+ };
+ }
+
+ // Add elem as a property of the handle function
+ // This is to prevent a memory leak with non-native events in IE.
+ eventHandle.elem = elem;
+
+ // Handle multiple events separated by a space
+ // jQuery(...).bind("mouseover mouseout", fn);
+ types = types.split(" ");
+
+ var type, i = 0, namespaces;
+
+ while ( (type = types[ i++ ]) ) {
+ handleObj = handleObjIn ?
+ jQuery.extend({}, handleObjIn) :
+ { handler: handler, data: data };
+
+ // Namespaced event handlers
+ if ( type.indexOf(".") > -1 ) {
+ namespaces = type.split(".");
+ type = namespaces.shift();
+ handleObj.namespace = namespaces.slice(0).sort().join(".");
+
+ } else {
+ namespaces = [];
+ handleObj.namespace = "";
+ }
+
+ handleObj.type = type;
+ if ( !handleObj.guid ) {
+ handleObj.guid = handler.guid;
+ }
+
+ // Get the current list of functions bound to this event
+ var handlers = events[ type ],
+ special = jQuery.event.special[ type ] || {};
+
+ // Init the event handler queue
+ if ( !handlers ) {
+ handlers = events[ type ] = [];
+
+ // Check for a special event handler
+ // Only use addEventListener/attachEvent if the special
+ // events handler returns false
+ if ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) {
+ // Bind the global event handler to the element
+ if ( elem.addEventListener ) {
+ elem.addEventListener( type, eventHandle, false );
+
+ } else if ( elem.attachEvent ) {
+ elem.attachEvent( "on" + type, eventHandle );
+ }
+ }
+ }
+
+ if ( special.add ) {
+ special.add.call( elem, handleObj );
+
+ if ( !handleObj.handler.guid ) {
+ handleObj.handler.guid = handler.guid;
+ }
+ }
+
+ // Add the function to the element's handler list
+ handlers.push( handleObj );
+
+ // Keep track of which events have been used, for event optimization
+ jQuery.event.global[ type ] = true;
+ }
+
+ // Nullify elem to prevent memory leaks in IE
+ elem = null;
+ },
+
+ global: {},
+
+ // Detach an event or set of events from an element
+ remove: function( elem, types, handler, pos ) {
+ // don't do events on text and comment nodes
+ if ( elem.nodeType === 3 || elem.nodeType === 8 ) {
+ return;
+ }
+
+ if ( handler === false ) {
+ handler = returnFalse;
+ }
+
+ var ret, type, fn, j, i = 0, all, namespaces, namespace, special, eventType, handleObj, origType,
+ elemData = jQuery.hasData( elem ) && jQuery._data( elem ),
+ events = elemData && elemData.events;
+
+ if ( !elemData || !events ) {
+ return;
+ }
+
+ // types is actually an event object here
+ if ( types && types.type ) {
+ handler = types.handler;
+ types = types.type;
+ }
+
+ // Unbind all events for the element
+ if ( !types || typeof types === "string" && types.charAt(0) === "." ) {
+ types = types || "";
+
+ for ( type in events ) {
+ jQuery.event.remove( elem, type + types );
+ }
+
+ return;
+ }
+
+ // Handle multiple events separated by a space
+ // jQuery(...).unbind("mouseover mouseout", fn);
+ types = types.split(" ");
+
+ while ( (type = types[ i++ ]) ) {
+ origType = type;
+ handleObj = null;
+ all = type.indexOf(".") < 0;
+ namespaces = [];
+
+ if ( !all ) {
+ // Namespaced event handlers
+ namespaces = type.split(".");
+ type = namespaces.shift();
+
+ namespace = new RegExp("(^|\\.)" +
+ jQuery.map( namespaces.slice(0).sort(), fcleanup ).join("\\.(?:.*\\.)?") + "(\\.|$)");
+ }
+
+ eventType = events[ type ];
+
+ if ( !eventType ) {
+ continue;
+ }
+
+ if ( !handler ) {
+ for ( j = 0; j < eventType.length; j++ ) {
+ handleObj = eventType[ j ];
+
+ if ( all || namespace.test( handleObj.namespace ) ) {
+ jQuery.event.remove( elem, origType, handleObj.handler, j );
+ eventType.splice( j--, 1 );
+ }
+ }
+
+ continue;
+ }
+
+ special = jQuery.event.special[ type ] || {};
+
+ for ( j = pos || 0; j < eventType.length; j++ ) {
+ handleObj = eventType[ j ];
+
+ if ( handler.guid === handleObj.guid ) {
+ // remove the given handler for the given type
+ if ( all || namespace.test( handleObj.namespace ) ) {
+ if ( pos == null ) {
+ eventType.splice( j--, 1 );
+ }
+
+ if ( special.remove ) {
+ special.remove.call( elem, handleObj );
+ }
+ }
+
+ if ( pos != null ) {
+ break;
+ }
+ }
+ }
+
+ // remove generic event handler if no more handlers exist
+ if ( eventType.length === 0 || pos != null && eventType.length === 1 ) {
+ if ( !special.teardown || special.teardown.call( elem, namespaces ) === false ) {
+ jQuery.removeEvent( elem, type, elemData.handle );
+ }
+
+ ret = null;
+ delete events[ type ];
+ }
+ }
+
+ // Remove the expando if it's no longer used
+ if ( jQuery.isEmptyObject( events ) ) {
+ var handle = elemData.handle;
+ if ( handle ) {
+ handle.elem = null;
+ }
+
+ delete elemData.events;
+ delete elemData.handle;
+
+ if ( jQuery.isEmptyObject( elemData ) ) {
+ jQuery.removeData( elem, undefined, true );
+ }
+ }
+ },
+
+ // Events that are safe to short-circuit if no handlers are attached.
+ // Native DOM events should not be added, they may have inline handlers.
+ customEvent: {
+ "getData": true,
+ "setData": true,
+ "changeData": true
+ },
+
+ trigger: function( event, data, elem, onlyHandlers ) {
+ // Event object or event type
+ var type = event.type || event,
+ namespaces = [],
+ exclusive;
+
+ if ( type.indexOf("!") >= 0 ) {
+ // Exclusive events trigger only for the exact event (no namespaces)
+ type = type.slice(0, -1);
+ exclusive = true;
+ }
+
+ if ( type.indexOf(".") >= 0 ) {
+ // Namespaced trigger; create a regexp to match event type in handle()
+ namespaces = type.split(".");
+ type = namespaces.shift();
+ namespaces.sort();
+ }
+
+ if ( (!elem || jQuery.event.customEvent[ type ]) && !jQuery.event.global[ type ] ) {
+ // No jQuery handlers for this event type, and it can't have inline handlers
+ return;
+ }
+
+ // Caller can pass in an Event, Object, or just an event type string
+ event = typeof event === "object" ?
+ // jQuery.Event object
+ event[ jQuery.expando ] ? event :
+ // Object literal
+ new jQuery.Event( type, event ) :
+ // Just the event type (string)
+ new jQuery.Event( type );
+
+ event.type = type;
+ event.exclusive = exclusive;
+ event.namespace = namespaces.join(".");
+ event.namespace_re = new RegExp("(^|\\.)" + namespaces.join("\\.(?:.*\\.)?") + "(\\.|$)");
+
+ // triggerHandler() and global events don't bubble or run the default action
+ if ( onlyHandlers || !elem ) {
+ event.preventDefault();
+ event.stopPropagation();
+ }
+
+ // Handle a global trigger
+ if ( !elem ) {
+ // TODO: Stop taunting the data cache; remove global events and always attach to document
+ jQuery.each( jQuery.cache, function() {
+ // internalKey variable is just used to make it easier to find
+ // and potentially change this stuff later; currently it just
+ // points to jQuery.expando
+ var internalKey = jQuery.expando,
+ internalCache = this[ internalKey ];
+ if ( internalCache && internalCache.events && internalCache.events[ type ] ) {
+ jQuery.event.trigger( event, data, internalCache.handle.elem );
+ }
+ });
+ return;
+ }
+
+ // Don't do events on text and comment nodes
+ if ( elem.nodeType === 3 || elem.nodeType === 8 ) {
+ return;
+ }
+
+ // Clean up the event in case it is being reused
+ event.result = undefined;
+ event.target = elem;
+
+ // Clone any incoming data and prepend the event, creating the handler arg list
+ data = data != null ? jQuery.makeArray( data ) : [];
+ data.unshift( event );
+
+ var cur = elem,
+ // IE doesn't like method names with a colon (#3533, #8272)
+ ontype = type.indexOf(":") < 0 ? "on" + type : "";
+
+ // Fire event on the current element, then bubble up the DOM tree
+ do {
+ var handle = jQuery._data( cur, "handle" );
+
+ event.currentTarget = cur;
+ if ( handle ) {
+ handle.apply( cur, data );
+ }
+
+ // Trigger an inline bound script
+ if ( ontype && jQuery.acceptData( cur ) && cur[ ontype ] && cur[ ontype ].apply( cur, data ) === false ) {
+ event.result = false;
+ event.preventDefault();
+ }
+
+ // Bubble up to document, then to window
+ cur = cur.parentNode || cur.ownerDocument || cur === event.target.ownerDocument && window;
+ } while ( cur && !event.isPropagationStopped() );
+
+ // If nobody prevented the default action, do it now
+ if ( !event.isDefaultPrevented() ) {
+ var old,
+ special = jQuery.event.special[ type ] || {};
+
+ if ( (!special._default || special._default.call( elem.ownerDocument, event ) === false) &&
+ !(type === "click" && jQuery.nodeName( elem, "a" )) && jQuery.acceptData( elem ) ) {
+
+ // Call a native DOM method on the target with the same name name as the event.
+ // Can't use an .isFunction)() check here because IE6/7 fails that test.
+ // IE<9 dies on focus to hidden element (#1486), may want to revisit a try/catch.
+ try {
+ if ( ontype && elem[ type ] ) {
+ // Don't re-trigger an onFOO event when we call its FOO() method
+ old = elem[ ontype ];
+
+ if ( old ) {
+ elem[ ontype ] = null;
+ }
+
+ jQuery.event.triggered = type;
+ elem[ type ]();
+ }
+ } catch ( ieError ) {}
+
+ if ( old ) {
+ elem[ ontype ] = old;
+ }
+
+ jQuery.event.triggered = undefined;
+ }
+ }
+
+ return event.result;
+ },
+
+ handle: function( event ) {
+ event = jQuery.event.fix( event || window.event );
+ // Snapshot the handlers list since a called handler may add/remove events.
+ var handlers = ((jQuery._data( this, "events" ) || {})[ event.type ] || []).slice(0),
+ run_all = !event.exclusive && !event.namespace,
+ args = Array.prototype.slice.call( arguments, 0 );
+
+ // Use the fix-ed Event rather than the (read-only) native event
+ args[0] = event;
+ event.currentTarget = this;
+
+ for ( var j = 0, l = handlers.length; j < l; j++ ) {
+ var handleObj = handlers[ j ];
+
+ // Triggered event must 1) be non-exclusive and have no namespace, or
+ // 2) have namespace(s) a subset or equal to those in the bound event.
+ if ( run_all || event.namespace_re.test( handleObj.namespace ) ) {
+ // Pass in a reference to the handler function itself
+ // So that we can later remove it
+ event.handler = handleObj.handler;
+ event.data = handleObj.data;
+ event.handleObj = handleObj;
+
+ var ret = handleObj.handler.apply( this, args );
+
+ if ( ret !== undefined ) {
+ event.result = ret;
+ if ( ret === false ) {
+ event.preventDefault();
+ event.stopPropagation();
+ }
+ }
+
+ if ( event.isImmediatePropagationStopped() ) {
+ break;
+ }
+ }
+ }
+ return event.result;
+ },
+
+ props: "altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode layerX layerY metaKey newValue offsetX offsetY pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),
+
+ fix: function( event ) {
+ if ( event[ jQuery.expando ] ) {
+ return event;
+ }
+
+ // store a copy of the original event object
+ // and "clone" to set read-only properties
+ var originalEvent = event;
+ event = jQuery.Event( originalEvent );
+
+ for ( var i = this.props.length, prop; i; ) {
+ prop = this.props[ --i ];
+ event[ prop ] = originalEvent[ prop ];
+ }
+
+ // Fix target property, if necessary
+ if ( !event.target ) {
+ // Fixes #1925 where srcElement might not be defined either
+ event.target = event.srcElement || document;
+ }
+
+ // check if target is a textnode (safari)
+ if ( event.target.nodeType === 3 ) {
+ event.target = event.target.parentNode;
+ }
+
+ // Add relatedTarget, if necessary
+ if ( !event.relatedTarget && event.fromElement ) {
+ event.relatedTarget = event.fromElement === event.target ? event.toElement : event.fromElement;
+ }
+
+ // Calculate pageX/Y if missing and clientX/Y available
+ if ( event.pageX == null && event.clientX != null ) {
+ var eventDocument = event.target.ownerDocument || document,
+ doc = eventDocument.documentElement,
+ body = eventDocument.body;
+
+ event.pageX = event.clientX + (doc && doc.scrollLeft || body && body.scrollLeft || 0) - (doc && doc.clientLeft || body && body.clientLeft || 0);
+ event.pageY = event.clientY + (doc && doc.scrollTop || body && body.scrollTop || 0) - (doc && doc.clientTop || body && body.clientTop || 0);
+ }
+
+ // Add which for key events
+ if ( event.which == null && (event.charCode != null || event.keyCode != null) ) {
+ event.which = event.charCode != null ? event.charCode : event.keyCode;
+ }
+
+ // Add metaKey to non-Mac browsers (use ctrl for PC's and Meta for Macs)
+ if ( !event.metaKey && event.ctrlKey ) {
+ event.metaKey = event.ctrlKey;
+ }
+
+ // Add which for click: 1 === left; 2 === middle; 3 === right
+ // Note: button is not normalized, so don't use it
+ if ( !event.which && event.button !== undefined ) {
+ event.which = (event.button & 1 ? 1 : ( event.button & 2 ? 3 : ( event.button & 4 ? 2 : 0 ) ));
+ }
+
+ return event;
+ },
+
+ // Deprecated, use jQuery.guid instead
+ guid: 1E8,
+
+ // Deprecated, use jQuery.proxy instead
+ proxy: jQuery.proxy,
+
+ special: {
+ ready: {
+ // Make sure the ready event is setup
+ setup: jQuery.bindReady,
+ teardown: jQuery.noop
+ },
+
+ live: {
+ add: function( handleObj ) {
+ jQuery.event.add( this,
+ liveConvert( handleObj.origType, handleObj.selector ),
+ jQuery.extend({}, handleObj, {handler: liveHandler, guid: handleObj.handler.guid}) );
+ },
+
+ remove: function( handleObj ) {
+ jQuery.event.remove( this, liveConvert( handleObj.origType, handleObj.selector ), handleObj );
+ }
+ },
+
+ beforeunload: {
+ setup: function( data, namespaces, eventHandle ) {
+ // We only want to do this special case on windows
+ if ( jQuery.isWindow( this ) ) {
+ this.onbeforeunload = eventHandle;
+ }
+ },
+
+ teardown: function( namespaces, eventHandle ) {
+ if ( this.onbeforeunload === eventHandle ) {
+ this.onbeforeunload = null;
+ }
+ }
+ }
+ }
+};
+
+jQuery.removeEvent = document.removeEventListener ?
+ function( elem, type, handle ) {
+ if ( elem.removeEventListener ) {
+ elem.removeEventListener( type, handle, false );
+ }
+ } :
+ function( elem, type, handle ) {
+ if ( elem.detachEvent ) {
+ elem.detachEvent( "on" + type, handle );
+ }
+ };
+
+jQuery.Event = function( src, props ) {
+ // Allow instantiation without the 'new' keyword
+ if ( !this.preventDefault ) {
+ return new jQuery.Event( src, props );
+ }
+
+ // Event object
+ if ( src && src.type ) {
+ this.originalEvent = src;
+ this.type = src.type;
+
+ // Events bubbling up the document may have been marked as prevented
+ // by a handler lower down the tree; reflect the correct value.
+ this.isDefaultPrevented = (src.defaultPrevented || src.returnValue === false ||
+ src.getPreventDefault && src.getPreventDefault()) ? returnTrue : returnFalse;
+
+ // Event type
+ } else {
+ this.type = src;
+ }
+
+ // Put explicitly provided properties onto the event object
+ if ( props ) {
+ jQuery.extend( this, props );
+ }
+
+ // timeStamp is buggy for some events on Firefox(#3843)
+ // So we won't rely on the native value
+ this.timeStamp = jQuery.now();
+
+ // Mark it as fixed
+ this[ jQuery.expando ] = true;
+};
+
+function returnFalse() {
+ return false;
+}
+function returnTrue() {
+ return true;
+}
+
+// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding
+// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html
+jQuery.Event.prototype = {
+ preventDefault: function() {
+ this.isDefaultPrevented = returnTrue;
+
+ var e = this.originalEvent;
+ if ( !e ) {
+ return;
+ }
+
+ // if preventDefault exists run it on the original event
+ if ( e.preventDefault ) {
+ e.preventDefault();
+
+ // otherwise set the returnValue property of the original event to false (IE)
+ } else {
+ e.returnValue = false;
+ }
+ },
+ stopPropagation: function() {
+ this.isPropagationStopped = returnTrue;
+
+ var e = this.originalEvent;
+ if ( !e ) {
+ return;
+ }
+ // if stopPropagation exists run it on the original event
+ if ( e.stopPropagation ) {
+ e.stopPropagation();
+ }
+ // otherwise set the cancelBubble property of the original event to true (IE)
+ e.cancelBubble = true;
+ },
+ stopImmediatePropagation: function() {
+ this.isImmediatePropagationStopped = returnTrue;
+ this.stopPropagation();
+ },
+ isDefaultPrevented: returnFalse,
+ isPropagationStopped: returnFalse,
+ isImmediatePropagationStopped: returnFalse
+};
+
+// Checks if an event happened on an element within another element
+// Used in jQuery.event.special.mouseenter and mouseleave handlers
+var withinElement = function( event ) {
+
+ // Check if mouse(over|out) are still within the same parent element
+ var related = event.relatedTarget,
+ inside = false,
+ eventType = event.type;
+
+ event.type = event.data;
+
+ if ( related !== this ) {
+
+ if ( related ) {
+ inside = jQuery.contains( this, related );
+ }
+
+ if ( !inside ) {
+
+ jQuery.event.handle.apply( this, arguments );
+
+ event.type = eventType;
+ }
+ }
+},
+
+// In case of event delegation, we only need to rename the event.type,
+// liveHandler will take care of the rest.
+delegate = function( event ) {
+ event.type = event.data;
+ jQuery.event.handle.apply( this, arguments );
+};
+
+// Create mouseenter and mouseleave events
+jQuery.each({
+ mouseenter: "mouseover",
+ mouseleave: "mouseout"
+}, function( orig, fix ) {
+ jQuery.event.special[ orig ] = {
+ setup: function( data ) {
+ jQuery.event.add( this, fix, data && data.selector ? delegate : withinElement, orig );
+ },
+ teardown: function( data ) {
+ jQuery.event.remove( this, fix, data && data.selector ? delegate : withinElement );
+ }
+ };
+});
+
+// submit delegation
+if ( !jQuery.support.submitBubbles ) {
+
+ jQuery.event.special.submit = {
+ setup: function( data, namespaces ) {
+ if ( !jQuery.nodeName( this, "form" ) ) {
+ jQuery.event.add(this, "click.specialSubmit", function( e ) {
+ var elem = e.target,
+ type = elem.type;
+
+ if ( (type === "submit" || type === "image") && jQuery( elem ).closest("form").length ) {
+ trigger( "submit", this, arguments );
+ }
+ });
+
+ jQuery.event.add(this, "keypress.specialSubmit", function( e ) {
+ var elem = e.target,
+ type = elem.type;
+
+ if ( (type === "text" || type === "password") && jQuery( elem ).closest("form").length && e.keyCode === 13 ) {
+ trigger( "submit", this, arguments );
+ }
+ });
+
+ } else {
+ return false;
+ }
+ },
+
+ teardown: function( namespaces ) {
+ jQuery.event.remove( this, ".specialSubmit" );
+ }
+ };
+
+}
+
+// change delegation, happens here so we have bind.
+if ( !jQuery.support.changeBubbles ) {
+
+ var changeFilters,
+
+ getVal = function( elem ) {
+ var type = elem.type, val = elem.value;
+
+ if ( type === "radio" || type === "checkbox" ) {
+ val = elem.checked;
+
+ } else if ( type === "select-multiple" ) {
+ val = elem.selectedIndex > -1 ?
+ jQuery.map( elem.options, function( elem ) {
+ return elem.selected;
+ }).join("-") :
+ "";
+
+ } else if ( jQuery.nodeName( elem, "select" ) ) {
+ val = elem.selectedIndex;
+ }
+
+ return val;
+ },
+
+ testChange = function testChange( e ) {
+ var elem = e.target, data, val;
+
+ if ( !rformElems.test( elem.nodeName ) || elem.readOnly ) {
+ return;
+ }
+
+ data = jQuery._data( elem, "_change_data" );
+ val = getVal(elem);
+
+ // the current data will be also retrieved by beforeactivate
+ if ( e.type !== "focusout" || elem.type !== "radio" ) {
+ jQuery._data( elem, "_change_data", val );
+ }
+
+ if ( data === undefined || val === data ) {
+ return;
+ }
+
+ if ( data != null || val ) {
+ e.type = "change";
+ e.liveFired = undefined;
+ jQuery.event.trigger( e, arguments[1], elem );
+ }
+ };
+
+ jQuery.event.special.change = {
+ filters: {
+ focusout: testChange,
+
+ beforedeactivate: testChange,
+
+ click: function( e ) {
+ var elem = e.target, type = jQuery.nodeName( elem, "input" ) ? elem.type : "";
+
+ if ( type === "radio" || type === "checkbox" || jQuery.nodeName( elem, "select" ) ) {
+ testChange.call( this, e );
+ }
+ },
+
+ // Change has to be called before submit
+ // Keydown will be called before keypress, which is used in submit-event delegation
+ keydown: function( e ) {
+ var elem = e.target, type = jQuery.nodeName( elem, "input" ) ? elem.type : "";
+
+ if ( (e.keyCode === 13 && !jQuery.nodeName( elem, "textarea" ) ) ||
+ (e.keyCode === 32 && (type === "checkbox" || type === "radio")) ||
+ type === "select-multiple" ) {
+ testChange.call( this, e );
+ }
+ },
+
+ // Beforeactivate happens also before the previous element is blurred
+ // with this event you can't trigger a change event, but you can store
+ // information
+ beforeactivate: function( e ) {
+ var elem = e.target;
+ jQuery._data( elem, "_change_data", getVal(elem) );
+ }
+ },
+
+ setup: function( data, namespaces ) {
+ if ( this.type === "file" ) {
+ return false;
+ }
+
+ for ( var type in changeFilters ) {
+ jQuery.event.add( this, type + ".specialChange", changeFilters[type] );
+ }
+
+ return rformElems.test( this.nodeName );
+ },
+
+ teardown: function( namespaces ) {
+ jQuery.event.remove( this, ".specialChange" );
+
+ return rformElems.test( this.nodeName );
+ }
+ };
+
+ changeFilters = jQuery.event.special.change.filters;
+
+ // Handle when the input is .focus()'d
+ changeFilters.focus = changeFilters.beforeactivate;
+}
+
+function trigger( type, elem, args ) {
+ // Piggyback on a donor event to simulate a different one.
+ // Fake originalEvent to avoid donor's stopPropagation, but if the
+ // simulated event prevents default then we do the same on the donor.
+ // Don't pass args or remember liveFired; they apply to the donor event.
+ var event = jQuery.extend( {}, args[ 0 ] );
+ event.type = type;
+ event.originalEvent = {};
+ event.liveFired = undefined;
+ jQuery.event.handle.call( elem, event );
+ if ( event.isDefaultPrevented() ) {
+ args[ 0 ].preventDefault();
+ }
+}
+
+// Create "bubbling" focus and blur events
+if ( !jQuery.support.focusinBubbles ) {
+ jQuery.each({ focus: "focusin", blur: "focusout" }, function( orig, fix ) {
+
+ // Attach a single capturing handler while someone wants focusin/focusout
+ var attaches = 0;
+
+ jQuery.event.special[ fix ] = {
+ setup: function() {
+ if ( attaches++ === 0 ) {
+ document.addEventListener( orig, handler, true );
+ }
+ },
+ teardown: function() {
+ if ( --attaches === 0 ) {
+ document.removeEventListener( orig, handler, true );
+ }
+ }
+ };
+
+ function handler( donor ) {
+ // Donor event is always a native one; fix it and switch its type.
+ // Let focusin/out handler cancel the donor focus/blur event.
+ var e = jQuery.event.fix( donor );
+ e.type = fix;
+ e.originalEvent = {};
+ jQuery.event.trigger( e, null, e.target );
+ if ( e.isDefaultPrevented() ) {
+ donor.preventDefault();
+ }
+ }
+ });
+}
+
+jQuery.each(["bind", "one"], function( i, name ) {
+ jQuery.fn[ name ] = function( type, data, fn ) {
+ var handler;
+
+ // Handle object literals
+ if ( typeof type === "object" ) {
+ for ( var key in type ) {
+ this[ name ](key, data, type[key], fn);
+ }
+ return this;
+ }
+
+ if ( arguments.length === 2 || data === false ) {
+ fn = data;
+ data = undefined;
+ }
+
+ if ( name === "one" ) {
+ handler = function( event ) {
+ jQuery( this ).unbind( event, handler );
+ return fn.apply( this, arguments );
+ };
+ handler.guid = fn.guid || jQuery.guid++;
+ } else {
+ handler = fn;
+ }
+
+ if ( type === "unload" && name !== "one" ) {
+ this.one( type, data, fn );
+
+ } else {
+ for ( var i = 0, l = this.length; i < l; i++ ) {
+ jQuery.event.add( this[i], type, handler, data );
+ }
+ }
+
+ return this;
+ };
+});
+
+jQuery.fn.extend({
+ unbind: function( type, fn ) {
+ // Handle object literals
+ if ( typeof type === "object" && !type.preventDefault ) {
+ for ( var key in type ) {
+ this.unbind(key, type[key]);
+ }
+
+ } else {
+ for ( var i = 0, l = this.length; i < l; i++ ) {
+ jQuery.event.remove( this[i], type, fn );
+ }
+ }
+
+ return this;
+ },
+
+ delegate: function( selector, types, data, fn ) {
+ return this.live( types, data, fn, selector );
+ },
+
+ undelegate: function( selector, types, fn ) {
+ if ( arguments.length === 0 ) {
+ return this.unbind( "live" );
+
+ } else {
+ return this.die( types, null, fn, selector );
+ }
+ },
+
+ trigger: function( type, data ) {
+ return this.each(function() {
+ jQuery.event.trigger( type, data, this );
+ });
+ },
+
+ triggerHandler: function( type, data ) {
+ if ( this[0] ) {
+ return jQuery.event.trigger( type, data, this[0], true );
+ }
+ },
+
+ toggle: function( fn ) {
+ // Save reference to arguments for access in closure
+ var args = arguments,
+ guid = fn.guid || jQuery.guid++,
+ i = 0,
+ toggler = function( event ) {
+ // Figure out which function to execute
+ var lastToggle = ( jQuery.data( this, "lastToggle" + fn.guid ) || 0 ) % i;
+ jQuery.data( this, "lastToggle" + fn.guid, lastToggle + 1 );
+
+ // Make sure that clicks stop
+ event.preventDefault();
+
+ // and execute the function
+ return args[ lastToggle ].apply( this, arguments ) || false;
+ };
+
+ // link all the functions, so any of them can unbind this click handler
+ toggler.guid = guid;
+ while ( i < args.length ) {
+ args[ i++ ].guid = guid;
+ }
+
+ return this.click( toggler );
+ },
+
+ hover: function( fnOver, fnOut ) {
+ return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );
+ }
+});
+
+var liveMap = {
+ focus: "focusin",
+ blur: "focusout",
+ mouseenter: "mouseover",
+ mouseleave: "mouseout"
+};
+
+jQuery.each(["live", "die"], function( i, name ) {
+ jQuery.fn[ name ] = function( types, data, fn, origSelector /* Internal Use Only */ ) {
+ var type, i = 0, match, namespaces, preType,
+ selector = origSelector || this.selector,
+ context = origSelector ? this : jQuery( this.context );
+
+ if ( typeof types === "object" && !types.preventDefault ) {
+ for ( var key in types ) {
+ context[ name ]( key, data, types[key], selector );
+ }
+
+ return this;
+ }
+
+ if ( name === "die" && !types &&
+ origSelector && origSelector.charAt(0) === "." ) {
+
+ context.unbind( origSelector );
+
+ return this;
+ }
+
+ if ( data === false || jQuery.isFunction( data ) ) {
+ fn = data || returnFalse;
+ data = undefined;
+ }
+
+ types = (types || "").split(" ");
+
+ while ( (type = types[ i++ ]) != null ) {
+ match = rnamespaces.exec( type );
+ namespaces = "";
+
+ if ( match ) {
+ namespaces = match[0];
+ type = type.replace( rnamespaces, "" );
+ }
+
+ if ( type === "hover" ) {
+ types.push( "mouseenter" + namespaces, "mouseleave" + namespaces );
+ continue;
+ }
+
+ preType = type;
+
+ if ( liveMap[ type ] ) {
+ types.push( liveMap[ type ] + namespaces );
+ type = type + namespaces;
+
+ } else {
+ type = (liveMap[ type ] || type) + namespaces;
+ }
+
+ if ( name === "live" ) {
+ // bind live handler
+ for ( var j = 0, l = context.length; j < l; j++ ) {
+ jQuery.event.add( context[j], "live." + liveConvert( type, selector ),
+ { data: data, selector: selector, handler: fn, origType: type, origHandler: fn, preType: preType } );
+ }
+
+ } else {
+ // unbind live handler
+ context.unbind( "live." + liveConvert( type, selector ), fn );
+ }
+ }
+
+ return this;
+ };
+});
+
+function liveHandler( event ) {
+ var stop, maxLevel, related, match, handleObj, elem, j, i, l, data, close, namespace, ret,
+ elems = [],
+ selectors = [],
+ events = jQuery._data( this, "events" );
+
+ // Make sure we avoid non-left-click bubbling in Firefox (#3861) and disabled elements in IE (#6911)
+ if ( event.liveFired === this || !events || !events.live || event.target.disabled || event.button && event.type === "click" ) {
+ return;
+ }
+
+ if ( event.namespace ) {
+ namespace = new RegExp("(^|\\.)" + event.namespace.split(".").join("\\.(?:.*\\.)?") + "(\\.|$)");
+ }
+
+ event.liveFired = this;
+
+ var live = events.live.slice(0);
+
+ for ( j = 0; j < live.length; j++ ) {
+ handleObj = live[j];
+
+ if ( handleObj.origType.replace( rnamespaces, "" ) === event.type ) {
+ selectors.push( handleObj.selector );
+
+ } else {
+ live.splice( j--, 1 );
+ }
+ }
+
+ match = jQuery( event.target ).closest( selectors, event.currentTarget );
+
+ for ( i = 0, l = match.length; i < l; i++ ) {
+ close = match[i];
+
+ for ( j = 0; j < live.length; j++ ) {
+ handleObj = live[j];
+
+ if ( close.selector === handleObj.selector && (!namespace || namespace.test( handleObj.namespace )) && !close.elem.disabled ) {
+ elem = close.elem;
+ related = null;
+
+ // Those two events require additional checking
+ if ( handleObj.preType === "mouseenter" || handleObj.preType === "mouseleave" ) {
+ event.type = handleObj.preType;
+ related = jQuery( event.relatedTarget ).closest( handleObj.selector )[0];
+
+ // Make sure not to accidentally match a child element with the same selector
+ if ( related && jQuery.contains( elem, related ) ) {
+ related = elem;
+ }
+ }
+
+ if ( !related || related !== elem ) {
+ elems.push({ elem: elem, handleObj: handleObj, level: close.level });
+ }
+ }
+ }
+ }
+
+ for ( i = 0, l = elems.length; i < l; i++ ) {
+ match = elems[i];
+
+ if ( maxLevel && match.level > maxLevel ) {
+ break;
+ }
+
+ event.currentTarget = match.elem;
+ event.data = match.handleObj.data;
+ event.handleObj = match.handleObj;
+
+ ret = match.handleObj.origHandler.apply( match.elem, arguments );
+
+ if ( ret === false || event.isPropagationStopped() ) {
+ maxLevel = match.level;
+
+ if ( ret === false ) {
+ stop = false;
+ }
+ if ( event.isImmediatePropagationStopped() ) {
+ break;
+ }
+ }
+ }
+
+ return stop;
+}
+
+function liveConvert( type, selector ) {
+ return (type && type !== "*" ? type + "." : "") + selector.replace(rperiod, "`").replace(rspaces, "&");
+}
+
+jQuery.each( ("blur focus focusin focusout load resize scroll unload click dblclick " +
+ "mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " +
+ "change select submit keydown keypress keyup error").split(" "), function( i, name ) {
+
+ // Handle event binding
+ jQuery.fn[ name ] = function( data, fn ) {
+ if ( fn == null ) {
+ fn = data;
+ data = null;
+ }
+
+ return arguments.length > 0 ?
+ this.bind( name, data, fn ) :
+ this.trigger( name );
+ };
+
+ if ( jQuery.attrFn ) {
+ jQuery.attrFn[ name ] = true;
+ }
+});
+
+
+
+/*!
+ * Sizzle CSS Selector Engine
+ * Copyright 2011, The Dojo Foundation
+ * Released under the MIT, BSD, and GPL Licenses.
+ * More information: http://sizzlejs.com/
+ */
+(function(){
+
+var chunker = /((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,
+ done = 0,
+ toString = Object.prototype.toString,
+ hasDuplicate = false,
+ baseHasDuplicate = true,
+ rBackslash = /\\/g,
+ rNonWord = /\W/;
+
+// Here we check if the JavaScript engine is using some sort of
+// optimization where it does not always call our comparision
+// function. If that is the case, discard the hasDuplicate value.
+// Thus far that includes Google Chrome.
+[0, 0].sort(function() {
+ baseHasDuplicate = false;
+ return 0;
+});
+
+var Sizzle = function( selector, context, results, seed ) {
+ results = results || [];
+ context = context || document;
+
+ var origContext = context;
+
+ if ( context.nodeType !== 1 && context.nodeType !== 9 ) {
+ return [];
+ }
+
+ if ( !selector || typeof selector !== "string" ) {
+ return results;
+ }
+
+ var m, set, checkSet, extra, ret, cur, pop, i,
+ prune = true,
+ contextXML = Sizzle.isXML( context ),
+ parts = [],
+ soFar = selector;
+
+ // Reset the position of the chunker regexp (start from head)
+ do {
+ chunker.exec( "" );
+ m = chunker.exec( soFar );
+
+ if ( m ) {
+ soFar = m[3];
+
+ parts.push( m[1] );
+
+ if ( m[2] ) {
+ extra = m[3];
+ break;
+ }
+ }
+ } while ( m );
+
+ if ( parts.length > 1 && origPOS.exec( selector ) ) {
+
+ if ( parts.length === 2 && Expr.relative[ parts[0] ] ) {
+ set = posProcess( parts[0] + parts[1], context );
+
+ } else {
+ set = Expr.relative[ parts[0] ] ?
+ [ context ] :
+ Sizzle( parts.shift(), context );
+
+ while ( parts.length ) {
+ selector = parts.shift();
+
+ if ( Expr.relative[ selector ] ) {
+ selector += parts.shift();
+ }
+
+ set = posProcess( selector, set );
+ }
+ }
+
+ } else {
+ // Take a shortcut and set the context if the root selector is an ID
+ // (but not if it'll be faster if the inner selector is an ID)
+ if ( !seed && parts.length > 1 && context.nodeType === 9 && !contextXML &&
+ Expr.match.ID.test(parts[0]) && !Expr.match.ID.test(parts[parts.length - 1]) ) {
+
+ ret = Sizzle.find( parts.shift(), context, contextXML );
+ context = ret.expr ?
+ Sizzle.filter( ret.expr, ret.set )[0] :
+ ret.set[0];
+ }
+
+ if ( context ) {
+ ret = seed ?
+ { expr: parts.pop(), set: makeArray(seed) } :
+ Sizzle.find( parts.pop(), parts.length === 1 && (parts[0] === "~" || parts[0] === "+") && context.parentNode ? context.parentNode : context, contextXML );
+
+ set = ret.expr ?
+ Sizzle.filter( ret.expr, ret.set ) :
+ ret.set;
+
+ if ( parts.length > 0 ) {
+ checkSet = makeArray( set );
+
+ } else {
+ prune = false;
+ }
+
+ while ( parts.length ) {
+ cur = parts.pop();
+ pop = cur;
+
+ if ( !Expr.relative[ cur ] ) {
+ cur = "";
+ } else {
+ pop = parts.pop();
+ }
+
+ if ( pop == null ) {
+ pop = context;
+ }
+
+ Expr.relative[ cur ]( checkSet, pop, contextXML );
+ }
+
+ } else {
+ checkSet = parts = [];
+ }
+ }
+
+ if ( !checkSet ) {
+ checkSet = set;
+ }
+
+ if ( !checkSet ) {
+ Sizzle.error( cur || selector );
+ }
+
+ if ( toString.call(checkSet) === "[object Array]" ) {
+ if ( !prune ) {
+ results.push.apply( results, checkSet );
+
+ } else if ( context && context.nodeType === 1 ) {
+ for ( i = 0; checkSet[i] != null; i++ ) {
+ if ( checkSet[i] && (checkSet[i] === true || checkSet[i].nodeType === 1 && Sizzle.contains(context, checkSet[i])) ) {
+ results.push( set[i] );
+ }
+ }
+
+ } else {
+ for ( i = 0; checkSet[i] != null; i++ ) {
+ if ( checkSet[i] && checkSet[i].nodeType === 1 ) {
+ results.push( set[i] );
+ }
+ }
+ }
+
+ } else {
+ makeArray( checkSet, results );
+ }
+
+ if ( extra ) {
+ Sizzle( extra, origContext, results, seed );
+ Sizzle.uniqueSort( results );
+ }
+
+ return results;
+};
+
+Sizzle.uniqueSort = function( results ) {
+ if ( sortOrder ) {
+ hasDuplicate = baseHasDuplicate;
+ results.sort( sortOrder );
+
+ if ( hasDuplicate ) {
+ for ( var i = 1; i < results.length; i++ ) {
+ if ( results[i] === results[ i - 1 ] ) {
+ results.splice( i--, 1 );
+ }
+ }
+ }
+ }
+
+ return results;
+};
+
+Sizzle.matches = function( expr, set ) {
+ return Sizzle( expr, null, null, set );
+};
+
+Sizzle.matchesSelector = function( node, expr ) {
+ return Sizzle( expr, null, null, [node] ).length > 0;
+};
+
+Sizzle.find = function( expr, context, isXML ) {
+ var set;
+
+ if ( !expr ) {
+ return [];
+ }
+
+ for ( var i = 0, l = Expr.order.length; i < l; i++ ) {
+ var match,
+ type = Expr.order[i];
+
+ if ( (match = Expr.leftMatch[ type ].exec( expr )) ) {
+ var left = match[1];
+ match.splice( 1, 1 );
+
+ if ( left.substr( left.length - 1 ) !== "\\" ) {
+ match[1] = (match[1] || "").replace( rBackslash, "" );
+ set = Expr.find[ type ]( match, context, isXML );
+
+ if ( set != null ) {
+ expr = expr.replace( Expr.match[ type ], "" );
+ break;
+ }
+ }
+ }
+ }
+
+ if ( !set ) {
+ set = typeof context.getElementsByTagName !== "undefined" ?
+ context.getElementsByTagName( "*" ) :
+ [];
+ }
+
+ return { set: set, expr: expr };
+};
+
+Sizzle.filter = function( expr, set, inplace, not ) {
+ var match, anyFound,
+ old = expr,
+ result = [],
+ curLoop = set,
+ isXMLFilter = set && set[0] && Sizzle.isXML( set[0] );
+
+ while ( expr && set.length ) {
+ for ( var type in Expr.filter ) {
+ if ( (match = Expr.leftMatch[ type ].exec( expr )) != null && match[2] ) {
+ var found, item,
+ filter = Expr.filter[ type ],
+ left = match[1];
+
+ anyFound = false;
+
+ match.splice(1,1);
+
+ if ( left.substr( left.length - 1 ) === "\\" ) {
+ continue;
+ }
+
+ if ( curLoop === result ) {
+ result = [];
+ }
+
+ if ( Expr.preFilter[ type ] ) {
+ match = Expr.preFilter[ type ]( match, curLoop, inplace, result, not, isXMLFilter );
+
+ if ( !match ) {
+ anyFound = found = true;
+
+ } else if ( match === true ) {
+ continue;
+ }
+ }
+
+ if ( match ) {
+ for ( var i = 0; (item = curLoop[i]) != null; i++ ) {
+ if ( item ) {
+ found = filter( item, match, i, curLoop );
+ var pass = not ^ !!found;
+
+ if ( inplace && found != null ) {
+ if ( pass ) {
+ anyFound = true;
+
+ } else {
+ curLoop[i] = false;
+ }
+
+ } else if ( pass ) {
+ result.push( item );
+ anyFound = true;
+ }
+ }
+ }
+ }
+
+ if ( found !== undefined ) {
+ if ( !inplace ) {
+ curLoop = result;
+ }
+
+ expr = expr.replace( Expr.match[ type ], "" );
+
+ if ( !anyFound ) {
+ return [];
+ }
+
+ break;
+ }
+ }
+ }
+
+ // Improper expression
+ if ( expr === old ) {
+ if ( anyFound == null ) {
+ Sizzle.error( expr );
+
+ } else {
+ break;
+ }
+ }
+
+ old = expr;
+ }
+
+ return curLoop;
+};
+
+Sizzle.error = function( msg ) {
+ throw "Syntax error, unrecognized expression: " + msg;
+};
+
+var Expr = Sizzle.selectors = {
+ order: [ "ID", "NAME", "TAG" ],
+
+ match: {
+ ID: /#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,
+ CLASS: /\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,
+ NAME: /\[name=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*\]/,
+ ATTR: /\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(?:(['"])(.*?)\3|(#?(?:[\w\u00c0-\uFFFF\-]|\\.)*)|)|)\s*\]/,
+ TAG: /^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/,
+ CHILD: /:(only|nth|last|first)-child(?:\(\s*(even|odd|(?:[+\-]?\d+|(?:[+\-]?\d*)?n\s*(?:[+\-]\s*\d+)?))\s*\))?/,
+ POS: /:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/,
+ PSEUDO: /:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/
+ },
+
+ leftMatch: {},
+
+ attrMap: {
+ "class": "className",
+ "for": "htmlFor"
+ },
+
+ attrHandle: {
+ href: function( elem ) {
+ return elem.getAttribute( "href" );
+ },
+ type: function( elem ) {
+ return elem.getAttribute( "type" );
+ }
+ },
+
+ relative: {
+ "+": function(checkSet, part){
+ var isPartStr = typeof part === "string",
+ isTag = isPartStr && !rNonWord.test( part ),
+ isPartStrNotTag = isPartStr && !isTag;
+
+ if ( isTag ) {
+ part = part.toLowerCase();
+ }
+
+ for ( var i = 0, l = checkSet.length, elem; i < l; i++ ) {
+ if ( (elem = checkSet[i]) ) {
+ while ( (elem = elem.previousSibling) && elem.nodeType !== 1 ) {}
+
+ checkSet[i] = isPartStrNotTag || elem && elem.nodeName.toLowerCase() === part ?
+ elem || false :
+ elem === part;
+ }
+ }
+
+ if ( isPartStrNotTag ) {
+ Sizzle.filter( part, checkSet, true );
+ }
+ },
+
+ ">": function( checkSet, part ) {
+ var elem,
+ isPartStr = typeof part === "string",
+ i = 0,
+ l = checkSet.length;
+
+ if ( isPartStr && !rNonWord.test( part ) ) {
+ part = part.toLowerCase();
+
+ for ( ; i < l; i++ ) {
+ elem = checkSet[i];
+
+ if ( elem ) {
+ var parent = elem.parentNode;
+ checkSet[i] = parent.nodeName.toLowerCase() === part ? parent : false;
+ }
+ }
+
+ } else {
+ for ( ; i < l; i++ ) {
+ elem = checkSet[i];
+
+ if ( elem ) {
+ checkSet[i] = isPartStr ?
+ elem.parentNode :
+ elem.parentNode === part;
+ }
+ }
+
+ if ( isPartStr ) {
+ Sizzle.filter( part, checkSet, true );
+ }
+ }
+ },
+
+ "": function(checkSet, part, isXML){
+ var nodeCheck,
+ doneName = done++,
+ checkFn = dirCheck;
+
+ if ( typeof part === "string" && !rNonWord.test( part ) ) {
+ part = part.toLowerCase();
+ nodeCheck = part;
+ checkFn = dirNodeCheck;
+ }
+
+ checkFn( "parentNode", part, doneName, checkSet, nodeCheck, isXML );
+ },
+
+ "~": function( checkSet, part, isXML ) {
+ var nodeCheck,
+ doneName = done++,
+ checkFn = dirCheck;
+
+ if ( typeof part === "string" && !rNonWord.test( part ) ) {
+ part = part.toLowerCase();
+ nodeCheck = part;
+ checkFn = dirNodeCheck;
+ }
+
+ checkFn( "previousSibling", part, doneName, checkSet, nodeCheck, isXML );
+ }
+ },
+
+ find: {
+ ID: function( match, context, isXML ) {
+ if ( typeof context.getElementById !== "undefined" && !isXML ) {
+ var m = context.getElementById(match[1]);
+ // Check parentNode to catch when Blackberry 4.6 returns
+ // nodes that are no longer in the document #6963
+ return m && m.parentNode ? [m] : [];
+ }
+ },
+
+ NAME: function( match, context ) {
+ if ( typeof context.getElementsByName !== "undefined" ) {
+ var ret = [],
+ results = context.getElementsByName( match[1] );
+
+ for ( var i = 0, l = results.length; i < l; i++ ) {
+ if ( results[i].getAttribute("name") === match[1] ) {
+ ret.push( results[i] );
+ }
+ }
+
+ return ret.length === 0 ? null : ret;
+ }
+ },
+
+ TAG: function( match, context ) {
+ if ( typeof context.getElementsByTagName !== "undefined" ) {
+ return context.getElementsByTagName( match[1] );
+ }
+ }
+ },
+ preFilter: {
+ CLASS: function( match, curLoop, inplace, result, not, isXML ) {
+ match = " " + match[1].replace( rBackslash, "" ) + " ";
+
+ if ( isXML ) {
+ return match;
+ }
+
+ for ( var i = 0, elem; (elem = curLoop[i]) != null; i++ ) {
+ if ( elem ) {
+ if ( not ^ (elem.className && (" " + elem.className + " ").replace(/[\t\n\r]/g, " ").indexOf(match) >= 0) ) {
+ if ( !inplace ) {
+ result.push( elem );
+ }
+
+ } else if ( inplace ) {
+ curLoop[i] = false;
+ }
+ }
+ }
+
+ return false;
+ },
+
+ ID: function( match ) {
+ return match[1].replace( rBackslash, "" );
+ },
+
+ TAG: function( match, curLoop ) {
+ return match[1].replace( rBackslash, "" ).toLowerCase();
+ },
+
+ CHILD: function( match ) {
+ if ( match[1] === "nth" ) {
+ if ( !match[2] ) {
+ Sizzle.error( match[0] );
+ }
+
+ match[2] = match[2].replace(/^\+|\s*/g, '');
+
+ // parse equations like 'even', 'odd', '5', '2n', '3n+2', '4n-1', '-n+6'
+ var test = /(-?)(\d*)(?:n([+\-]?\d*))?/.exec(
+ match[2] === "even" && "2n" || match[2] === "odd" && "2n+1" ||
+ !/\D/.test( match[2] ) && "0n+" + match[2] || match[2]);
+
+ // calculate the numbers (first)n+(last) including if they are negative
+ match[2] = (test[1] + (test[2] || 1)) - 0;
+ match[3] = test[3] - 0;
+ }
+ else if ( match[2] ) {
+ Sizzle.error( match[0] );
+ }
+
+ // TODO: Move to normal caching system
+ match[0] = done++;
+
+ return match;
+ },
+
+ ATTR: function( match, curLoop, inplace, result, not, isXML ) {
+ var name = match[1] = match[1].replace( rBackslash, "" );
+
+ if ( !isXML && Expr.attrMap[name] ) {
+ match[1] = Expr.attrMap[name];
+ }
+
+ // Handle if an un-quoted value was used
+ match[4] = ( match[4] || match[5] || "" ).replace( rBackslash, "" );
+
+ if ( match[2] === "~=" ) {
+ match[4] = " " + match[4] + " ";
+ }
+
+ return match;
+ },
+
+ PSEUDO: function( match, curLoop, inplace, result, not ) {
+ if ( match[1] === "not" ) {
+ // If we're dealing with a complex expression, or a simple one
+ if ( ( chunker.exec(match[3]) || "" ).length > 1 || /^\w/.test(match[3]) ) {
+ match[3] = Sizzle(match[3], null, null, curLoop);
+
+ } else {
+ var ret = Sizzle.filter(match[3], curLoop, inplace, true ^ not);
+
+ if ( !inplace ) {
+ result.push.apply( result, ret );
+ }
+
+ return false;
+ }
+
+ } else if ( Expr.match.POS.test( match[0] ) || Expr.match.CHILD.test( match[0] ) ) {
+ return true;
+ }
+
+ return match;
+ },
+
+ POS: function( match ) {
+ match.unshift( true );
+
+ return match;
+ }
+ },
+
+ filters: {
+ enabled: function( elem ) {
+ return elem.disabled === false && elem.type !== "hidden";
+ },
+
+ disabled: function( elem ) {
+ return elem.disabled === true;
+ },
+
+ checked: function( elem ) {
+ return elem.checked === true;
+ },
+
+ selected: function( elem ) {
+ // Accessing this property makes selected-by-default
+ // options in Safari work properly
+ if ( elem.parentNode ) {
+ elem.parentNode.selectedIndex;
+ }
+
+ return elem.selected === true;
+ },
+
+ parent: function( elem ) {
+ return !!elem.firstChild;
+ },
+
+ empty: function( elem ) {
+ return !elem.firstChild;
+ },
+
+ has: function( elem, i, match ) {
+ return !!Sizzle( match[3], elem ).length;
+ },
+
+ header: function( elem ) {
+ return (/h\d/i).test( elem.nodeName );
+ },
+
+ text: function( elem ) {
+ var attr = elem.getAttribute( "type" ), type = elem.type;
+ // IE6 and 7 will map elem.type to 'text' for new HTML5 types (search, etc)
+ // use getAttribute instead to test this case
+ return elem.nodeName.toLowerCase() === "input" && "text" === type && ( attr === type || attr === null );
+ },
+
+ radio: function( elem ) {
+ return elem.nodeName.toLowerCase() === "input" && "radio" === elem.type;
+ },
+
+ checkbox: function( elem ) {
+ return elem.nodeName.toLowerCase() === "input" && "checkbox" === elem.type;
+ },
+
+ file: function( elem ) {
+ return elem.nodeName.toLowerCase() === "input" && "file" === elem.type;
+ },
+
+ password: function( elem ) {
+ return elem.nodeName.toLowerCase() === "input" && "password" === elem.type;
+ },
+
+ submit: function( elem ) {
+ var name = elem.nodeName.toLowerCase();
+ return (name === "input" || name === "button") && "submit" === elem.type;
+ },
+
+ image: function( elem ) {
+ return elem.nodeName.toLowerCase() === "input" && "image" === elem.type;
+ },
+
+ reset: function( elem ) {
+ var name = elem.nodeName.toLowerCase();
+ return (name === "input" || name === "button") && "reset" === elem.type;
+ },
+
+ button: function( elem ) {
+ var name = elem.nodeName.toLowerCase();
+ return name === "input" && "button" === elem.type || name === "button";
+ },
+
+ input: function( elem ) {
+ return (/input|select|textarea|button/i).test( elem.nodeName );
+ },
+
+ focus: function( elem ) {
+ return elem === elem.ownerDocument.activeElement;
+ }
+ },
+ setFilters: {
+ first: function( elem, i ) {
+ return i === 0;
+ },
+
+ last: function( elem, i, match, array ) {
+ return i === array.length - 1;
+ },
+
+ even: function( elem, i ) {
+ return i % 2 === 0;
+ },
+
+ odd: function( elem, i ) {
+ return i % 2 === 1;
+ },
+
+ lt: function( elem, i, match ) {
+ return i < match[3] - 0;
+ },
+
+ gt: function( elem, i, match ) {
+ return i > match[3] - 0;
+ },
+
+ nth: function( elem, i, match ) {
+ return match[3] - 0 === i;
+ },
+
+ eq: function( elem, i, match ) {
+ return match[3] - 0 === i;
+ }
+ },
+ filter: {
+ PSEUDO: function( elem, match, i, array ) {
+ var name = match[1],
+ filter = Expr.filters[ name ];
+
+ if ( filter ) {
+ return filter( elem, i, match, array );
+
+ } else if ( name === "contains" ) {
+ return (elem.textContent || elem.innerText || Sizzle.getText([ elem ]) || "").indexOf(match[3]) >= 0;
+
+ } else if ( name === "not" ) {
+ var not = match[3];
+
+ for ( var j = 0, l = not.length; j < l; j++ ) {
+ if ( not[j] === elem ) {
+ return false;
+ }
+ }
+
+ return true;
+
+ } else {
+ Sizzle.error( name );
+ }
+ },
+
+ CHILD: function( elem, match ) {
+ var type = match[1],
+ node = elem;
+
+ switch ( type ) {
+ case "only":
+ case "first":
+ while ( (node = node.previousSibling) ) {
+ if ( node.nodeType === 1 ) {
+ return false;
+ }
+ }
+
+ if ( type === "first" ) {
+ return true;
+ }
+
+ node = elem;
+
+ case "last":
+ while ( (node = node.nextSibling) ) {
+ if ( node.nodeType === 1 ) {
+ return false;
+ }
+ }
+
+ return true;
+
+ case "nth":
+ var first = match[2],
+ last = match[3];
+
+ if ( first === 1 && last === 0 ) {
+ return true;
+ }
+
+ var doneName = match[0],
+ parent = elem.parentNode;
+
+ if ( parent && (parent.sizcache !== doneName || !elem.nodeIndex) ) {
+ var count = 0;
+
+ for ( node = parent.firstChild; node; node = node.nextSibling ) {
+ if ( node.nodeType === 1 ) {
+ node.nodeIndex = ++count;
+ }
+ }
+
+ parent.sizcache = doneName;
+ }
+
+ var diff = elem.nodeIndex - last;
+
+ if ( first === 0 ) {
+ return diff === 0;
+
+ } else {
+ return ( diff % first === 0 && diff / first >= 0 );
+ }
+ }
+ },
+
+ ID: function( elem, match ) {
+ return elem.nodeType === 1 && elem.getAttribute("id") === match;
+ },
+
+ TAG: function( elem, match ) {
+ return (match === "*" && elem.nodeType === 1) || elem.nodeName.toLowerCase() === match;
+ },
+
+ CLASS: function( elem, match ) {
+ return (" " + (elem.className || elem.getAttribute("class")) + " ")
+ .indexOf( match ) > -1;
+ },
+
+ ATTR: function( elem, match ) {
+ var name = match[1],
+ result = Expr.attrHandle[ name ] ?
+ Expr.attrHandle[ name ]( elem ) :
+ elem[ name ] != null ?
+ elem[ name ] :
+ elem.getAttribute( name ),
+ value = result + "",
+ type = match[2],
+ check = match[4];
+
+ return result == null ?
+ type === "!=" :
+ type === "=" ?
+ value === check :
+ type === "*=" ?
+ value.indexOf(check) >= 0 :
+ type === "~=" ?
+ (" " + value + " ").indexOf(check) >= 0 :
+ !check ?
+ value && result !== false :
+ type === "!=" ?
+ value !== check :
+ type === "^=" ?
+ value.indexOf(check) === 0 :
+ type === "$=" ?
+ value.substr(value.length - check.length) === check :
+ type === "|=" ?
+ value === check || value.substr(0, check.length + 1) === check + "-" :
+ false;
+ },
+
+ POS: function( elem, match, i, array ) {
+ var name = match[2],
+ filter = Expr.setFilters[ name ];
+
+ if ( filter ) {
+ return filter( elem, i, match, array );
+ }
+ }
+ }
+};
+
+var origPOS = Expr.match.POS,
+ fescape = function(all, num){
+ return "\\" + (num - 0 + 1);
+ };
+
+for ( var type in Expr.match ) {
+ Expr.match[ type ] = new RegExp( Expr.match[ type ].source + (/(?![^\[]*\])(?![^\(]*\))/.source) );
+ Expr.leftMatch[ type ] = new RegExp( /(^(?:.|\r|\n)*?)/.source + Expr.match[ type ].source.replace(/\\(\d+)/g, fescape) );
+}
+
+var makeArray = function( array, results ) {
+ array = Array.prototype.slice.call( array, 0 );
+
+ if ( results ) {
+ results.push.apply( results, array );
+ return results;
+ }
+
+ return array;
+};
+
+// Perform a simple check to determine if the browser is capable of
+// converting a NodeList to an array using builtin methods.
+// Also verifies that the returned array holds DOM nodes
+// (which is not the case in the Blackberry browser)
+try {
+ Array.prototype.slice.call( document.documentElement.childNodes, 0 )[0].nodeType;
+
+// Provide a fallback method if it does not work
+} catch( e ) {
+ makeArray = function( array, results ) {
+ var i = 0,
+ ret = results || [];
+
+ if ( toString.call(array) === "[object Array]" ) {
+ Array.prototype.push.apply( ret, array );
+
+ } else {
+ if ( typeof array.length === "number" ) {
+ for ( var l = array.length; i < l; i++ ) {
+ ret.push( array[i] );
+ }
+
+ } else {
+ for ( ; array[i]; i++ ) {
+ ret.push( array[i] );
+ }
+ }
+ }
+
+ return ret;
+ };
+}
+
+var sortOrder, siblingCheck;
+
+if ( document.documentElement.compareDocumentPosition ) {
+ sortOrder = function( a, b ) {
+ if ( a === b ) {
+ hasDuplicate = true;
+ return 0;
+ }
+
+ if ( !a.compareDocumentPosition || !b.compareDocumentPosition ) {
+ return a.compareDocumentPosition ? -1 : 1;
+ }
+
+ return a.compareDocumentPosition(b) & 4 ? -1 : 1;
+ };
+
+} else {
+ sortOrder = function( a, b ) {
+ // The nodes are identical, we can exit early
+ if ( a === b ) {
+ hasDuplicate = true;
+ return 0;
+
+ // Fallback to using sourceIndex (in IE) if it's available on both nodes
+ } else if ( a.sourceIndex && b.sourceIndex ) {
+ return a.sourceIndex - b.sourceIndex;
+ }
+
+ var al, bl,
+ ap = [],
+ bp = [],
+ aup = a.parentNode,
+ bup = b.parentNode,
+ cur = aup;
+
+ // If the nodes are siblings (or identical) we can do a quick check
+ if ( aup === bup ) {
+ return siblingCheck( a, b );
+
+ // If no parents were found then the nodes are disconnected
+ } else if ( !aup ) {
+ return -1;
+
+ } else if ( !bup ) {
+ return 1;
+ }
+
+ // Otherwise they're somewhere else in the tree so we need
+ // to build up a full list of the parentNodes for comparison
+ while ( cur ) {
+ ap.unshift( cur );
+ cur = cur.parentNode;
+ }
+
+ cur = bup;
+
+ while ( cur ) {
+ bp.unshift( cur );
+ cur = cur.parentNode;
+ }
+
+ al = ap.length;
+ bl = bp.length;
+
+ // Start walking down the tree looking for a discrepancy
+ for ( var i = 0; i < al && i < bl; i++ ) {
+ if ( ap[i] !== bp[i] ) {
+ return siblingCheck( ap[i], bp[i] );
+ }
+ }
+
+ // We ended someplace up the tree so do a sibling check
+ return i === al ?
+ siblingCheck( a, bp[i], -1 ) :
+ siblingCheck( ap[i], b, 1 );
+ };
+
+ siblingCheck = function( a, b, ret ) {
+ if ( a === b ) {
+ return ret;
+ }
+
+ var cur = a.nextSibling;
+
+ while ( cur ) {
+ if ( cur === b ) {
+ return -1;
+ }
+
+ cur = cur.nextSibling;
+ }
+
+ return 1;
+ };
+}
+
+// Utility function for retreiving the text value of an array of DOM nodes
+Sizzle.getText = function( elems ) {
+ var ret = "", elem;
+
+ for ( var i = 0; elems[i]; i++ ) {
+ elem = elems[i];
+
+ // Get the text from text nodes and CDATA nodes
+ if ( elem.nodeType === 3 || elem.nodeType === 4 ) {
+ ret += elem.nodeValue;
+
+ // Traverse everything else, except comment nodes
+ } else if ( elem.nodeType !== 8 ) {
+ ret += Sizzle.getText( elem.childNodes );
+ }
+ }
+
+ return ret;
+};
+
+// Check to see if the browser returns elements by name when
+// querying by getElementById (and provide a workaround)
+(function(){
+ // We're going to inject a fake input element with a specified name
+ var form = document.createElement("div"),
+ id = "script" + (new Date()).getTime(),
+ root = document.documentElement;
+
+ form.innerHTML = "<a name='" + id + "'/>";
+
+ // Inject it into the root element, check its status, and remove it quickly
+ root.insertBefore( form, root.firstChild );
+
+ // The workaround has to do additional checks after a getElementById
+ // Which slows things down for other browsers (hence the branching)
+ if ( document.getElementById( id ) ) {
+ Expr.find.ID = function( match, context, isXML ) {
+ if ( typeof context.getElementById !== "undefined" && !isXML ) {
+ var m = context.getElementById(match[1]);
+
+ return m ?
+ m.id === match[1] || typeof m.getAttributeNode !== "undefined" && m.getAttributeNode("id").nodeValue === match[1] ?
+ [m] :
+ undefined :
+ [];
+ }
+ };
+
+ Expr.filter.ID = function( elem, match ) {
+ var node = typeof elem.getAttributeNode !== "undefined" && elem.getAttributeNode("id");
+
+ return elem.nodeType === 1 && node && node.nodeValue === match;
+ };
+ }
+
+ root.removeChild( form );
+
+ // release memory in IE
+ root = form = null;
+})();
+
+(function(){
+ // Check to see if the browser returns only elements
+ // when doing getElementsByTagName("*")
+
+ // Create a fake element
+ var div = document.createElement("div");
+ div.appendChild( document.createComment("") );
+
+ // Make sure no comments are found
+ if ( div.getElementsByTagName("*").length > 0 ) {
+ Expr.find.TAG = function( match, context ) {
+ var results = context.getElementsByTagName( match[1] );
+
+ // Filter out possible comments
+ if ( match[1] === "*" ) {
+ var tmp = [];
+
+ for ( var i = 0; results[i]; i++ ) {
+ if ( results[i].nodeType === 1 ) {
+ tmp.push( results[i] );
+ }
+ }
+
+ results = tmp;
+ }
+
+ return results;
+ };
+ }
+
+ // Check to see if an attribute returns normalized href attributes
+ div.innerHTML = "<a href='#'></a>";
+
+ if ( div.firstChild && typeof div.firstChild.getAttribute !== "undefined" &&
+ div.firstChild.getAttribute("href") !== "#" ) {
+
+ Expr.attrHandle.href = function( elem ) {
+ return elem.getAttribute( "href", 2 );
+ };
+ }
+
+ // release memory in IE
+ div = null;
+})();
+
+if ( document.querySelectorAll ) {
+ (function(){
+ var oldSizzle = Sizzle,
+ div = document.createElement("div"),
+ id = "__sizzle__";
+
+ div.innerHTML = "<p class='TEST'></p>";
+
+ // Safari can't handle uppercase or unicode characters when
+ // in quirks mode.
+ if ( div.querySelectorAll && div.querySelectorAll(".TEST").length === 0 ) {
+ return;
+ }
+
+ Sizzle = function( query, context, extra, seed ) {
+ context = context || document;
+
+ // Only use querySelectorAll on non-XML documents
+ // (ID selectors don't work in non-HTML documents)
+ if ( !seed && !Sizzle.isXML(context) ) {
+ // See if we find a selector to speed up
+ var match = /^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec( query );
+
+ if ( match && (context.nodeType === 1 || context.nodeType === 9) ) {
+ // Speed-up: Sizzle("TAG")
+ if ( match[1] ) {
+ return makeArray( context.getElementsByTagName( query ), extra );
+
+ // Speed-up: Sizzle(".CLASS")
+ } else if ( match[2] && Expr.find.CLASS && context.getElementsByClassName ) {
+ return makeArray( context.getElementsByClassName( match[2] ), extra );
+ }
+ }
+
+ if ( context.nodeType === 9 ) {
+ // Speed-up: Sizzle("body")
+ // The body element only exists once, optimize finding it
+ if ( query === "body" && context.body ) {
+ return makeArray( [ context.body ], extra );
+
+ // Speed-up: Sizzle("#ID")
+ } else if ( match && match[3] ) {
+ var elem = context.getElementById( match[3] );
+
+ // Check parentNode to catch when Blackberry 4.6 returns
+ // nodes that are no longer in the document #6963
+ if ( elem && elem.parentNode ) {
+ // Handle the case where IE and Opera return items
+ // by name instead of ID
+ if ( elem.id === match[3] ) {
+ return makeArray( [ elem ], extra );
+ }
+
+ } else {
+ return makeArray( [], extra );
+ }
+ }
+
+ try {
+ return makeArray( context.querySelectorAll(query), extra );
+ } catch(qsaError) {}
+
+ // qSA works strangely on Element-rooted queries
+ // We can work around this by specifying an extra ID on the root
+ // and working up from there (Thanks to Andrew Dupont for the technique)
+ // IE 8 doesn't work on object elements
+ } else if ( context.nodeType === 1 && context.nodeName.toLowerCase() !== "object" ) {
+ var oldContext = context,
+ old = context.getAttribute( "id" ),
+ nid = old || id,
+ hasParent = context.parentNode,
+ relativeHierarchySelector = /^\s*[+~]/.test( query );
+
+ if ( !old ) {
+ context.setAttribute( "id", nid );
+ } else {
+ nid = nid.replace( /'/g, "\\$&" );
+ }
+ if ( relativeHierarchySelector && hasParent ) {
+ context = context.parentNode;
+ }
+
+ try {
+ if ( !relativeHierarchySelector || hasParent ) {
+ return makeArray( context.querySelectorAll( "[id='" + nid + "'] " + query ), extra );
+ }
+
+ } catch(pseudoError) {
+ } finally {
+ if ( !old ) {
+ oldContext.removeAttribute( "id" );
+ }
+ }
+ }
+ }
+
+ return oldSizzle(query, context, extra, seed);
+ };
+
+ for ( var prop in oldSizzle ) {
+ Sizzle[ prop ] = oldSizzle[ prop ];
+ }
+
+ // release memory in IE
+ div = null;
+ })();
+}
+
+(function(){
+ var html = document.documentElement,
+ matches = html.matchesSelector || html.mozMatchesSelector || html.webkitMatchesSelector || html.msMatchesSelector;
+
+ if ( matches ) {
+ // Check to see if it's possible to do matchesSelector
+ // on a disconnected node (IE 9 fails this)
+ var disconnectedMatch = !matches.call( document.createElement( "div" ), "div" ),
+ pseudoWorks = false;
+
+ try {
+ // This should fail with an exception
+ // Gecko does not error, returns false instead
+ matches.call( document.documentElement, "[test!='']:sizzle" );
+
+ } catch( pseudoError ) {
+ pseudoWorks = true;
+ }
+
+ Sizzle.matchesSelector = function( node, expr ) {
+ // Make sure that attribute selectors are quoted
+ expr = expr.replace(/\=\s*([^'"\]]*)\s*\]/g, "='$1']");
+
+ if ( !Sizzle.isXML( node ) ) {
+ try {
+ if ( pseudoWorks || !Expr.match.PSEUDO.test( expr ) && !/!=/.test( expr ) ) {
+ var ret = matches.call( node, expr );
+
+ // IE 9's matchesSelector returns false on disconnected nodes
+ if ( ret || !disconnectedMatch ||
+ // As well, disconnected nodes are said to be in a document
+ // fragment in IE 9, so check for that
+ node.document && node.document.nodeType !== 11 ) {
+ return ret;
+ }
+ }
+ } catch(e) {}
+ }
+
+ return Sizzle(expr, null, null, [node]).length > 0;
+ };
+ }
+})();
+
+(function(){
+ var div = document.createElement("div");
+
+ div.innerHTML = "<div class='test e'></div><div class='test'></div>";
+
+ // Opera can't find a second classname (in 9.6)
+ // Also, make sure that getElementsByClassName actually exists
+ if ( !div.getElementsByClassName || div.getElementsByClassName("e").length === 0 ) {
+ return;
+ }
+
+ // Safari caches class attributes, doesn't catch changes (in 3.2)
+ div.lastChild.className = "e";
+
+ if ( div.getElementsByClassName("e").length === 1 ) {
+ return;
+ }
+
+ Expr.order.splice(1, 0, "CLASS");
+ Expr.find.CLASS = function( match, context, isXML ) {
+ if ( typeof context.getElementsByClassName !== "undefined" && !isXML ) {
+ return context.getElementsByClassName(match[1]);
+ }
+ };
+
+ // release memory in IE
+ div = null;
+})();
+
+function dirNodeCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {
+ for ( var i = 0, l = checkSet.length; i < l; i++ ) {
+ var elem = checkSet[i];
+
+ if ( elem ) {
+ var match = false;
+
+ elem = elem[dir];
+
+ while ( elem ) {
+ if ( elem.sizcache === doneName ) {
+ match = checkSet[elem.sizset];
+ break;
+ }
+
+ if ( elem.nodeType === 1 && !isXML ){
+ elem.sizcache = doneName;
+ elem.sizset = i;
+ }
+
+ if ( elem.nodeName.toLowerCase() === cur ) {
+ match = elem;
+ break;
+ }
+
+ elem = elem[dir];
+ }
+
+ checkSet[i] = match;
+ }
+ }
+}
+
+function dirCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {
+ for ( var i = 0, l = checkSet.length; i < l; i++ ) {
+ var elem = checkSet[i];
+
+ if ( elem ) {
+ var match = false;
+
+ elem = elem[dir];
+
+ while ( elem ) {
+ if ( elem.sizcache === doneName ) {
+ match = checkSet[elem.sizset];
+ break;
+ }
+
+ if ( elem.nodeType === 1 ) {
+ if ( !isXML ) {
+ elem.sizcache = doneName;
+ elem.sizset = i;
+ }
+
+ if ( typeof cur !== "string" ) {
+ if ( elem === cur ) {
+ match = true;
+ break;
+ }
+
+ } else if ( Sizzle.filter( cur, [elem] ).length > 0 ) {
+ match = elem;
+ break;
+ }
+ }
+
+ elem = elem[dir];
+ }
+
+ checkSet[i] = match;
+ }
+ }
+}
+
+if ( document.documentElement.contains ) {
+ Sizzle.contains = function( a, b ) {
+ return a !== b && (a.contains ? a.contains(b) : true);
+ };
+
+} else if ( document.documentElement.compareDocumentPosition ) {
+ Sizzle.contains = function( a, b ) {
+ return !!(a.compareDocumentPosition(b) & 16);
+ };
+
+} else {
+ Sizzle.contains = function() {
+ return false;
+ };
+}
+
+Sizzle.isXML = function( elem ) {
+ // documentElement is verified for cases where it doesn't yet exist
+ // (such as loading iframes in IE - #4833)
+ var documentElement = (elem ? elem.ownerDocument || elem : 0).documentElement;
+
+ return documentElement ? documentElement.nodeName !== "HTML" : false;
+};
+
+var posProcess = function( selector, context ) {
+ var match,
+ tmpSet = [],
+ later = "",
+ root = context.nodeType ? [context] : context;
+
+ // Position selectors must be done after the filter
+ // And so must :not(positional) so we move all PSEUDOs to the end
+ while ( (match = Expr.match.PSEUDO.exec( selector )) ) {
+ later += match[0];
+ selector = selector.replace( Expr.match.PSEUDO, "" );
+ }
+
+ selector = Expr.relative[selector] ? selector + "*" : selector;
+
+ for ( var i = 0, l = root.length; i < l; i++ ) {
+ Sizzle( selector, root[i], tmpSet );
+ }
+
+ return Sizzle.filter( later, tmpSet );
+};
+
+// EXPOSE
+jQuery.find = Sizzle;
+jQuery.expr = Sizzle.selectors;
+jQuery.expr[":"] = jQuery.expr.filters;
+jQuery.unique = Sizzle.uniqueSort;
+jQuery.text = Sizzle.getText;
+jQuery.isXMLDoc = Sizzle.isXML;
+jQuery.contains = Sizzle.contains;
+
+
+})();
+
+
+var runtil = /Until$/,
+ rparentsprev = /^(?:parents|prevUntil|prevAll)/,
+ // Note: This RegExp should be improved, or likely pulled from Sizzle
+ rmultiselector = /,/,
+ isSimple = /^.[^:#\[\.,]*$/,
+ slice = Array.prototype.slice,
+ POS = jQuery.expr.match.POS,
+ // methods guaranteed to produce a unique set when starting from a unique set
+ guaranteedUnique = {
+ children: true,
+ contents: true,
+ next: true,
+ prev: true
+ };
+
+jQuery.fn.extend({
+ find: function( selector ) {
+ var self = this,
+ i, l;
+
+ if ( typeof selector !== "string" ) {
+ return jQuery( selector ).filter(function() {
+ for ( i = 0, l = self.length; i < l; i++ ) {
+ if ( jQuery.contains( self[ i ], this ) ) {
+ return true;
+ }
+ }
+ });
+ }
+
+ var ret = this.pushStack( "", "find", selector ),
+ length, n, r;
+
+ for ( i = 0, l = this.length; i < l; i++ ) {
+ length = ret.length;
+ jQuery.find( selector, this[i], ret );
+
+ if ( i > 0 ) {
+ // Make sure that the results are unique
+ for ( n = length; n < ret.length; n++ ) {
+ for ( r = 0; r < length; r++ ) {
+ if ( ret[r] === ret[n] ) {
+ ret.splice(n--, 1);
+ break;
+ }
+ }
+ }
+ }
+ }
+
+ return ret;
+ },
+
+ has: function( target ) {
+ var targets = jQuery( target );
+ return this.filter(function() {
+ for ( var i = 0, l = targets.length; i < l; i++ ) {
+ if ( jQuery.contains( this, targets[i] ) ) {
+ return true;
+ }
+ }
+ });
+ },
+
+ not: function( selector ) {
+ return this.pushStack( winnow(this, selector, false), "not", selector);
+ },
+
+ filter: function( selector ) {
+ return this.pushStack( winnow(this, selector, true), "filter", selector );
+ },
+
+ is: function( selector ) {
+ return !!selector && ( typeof selector === "string" ?
+ jQuery.filter( selector, this ).length > 0 :
+ this.filter( selector ).length > 0 );
+ },
+
+ closest: function( selectors, context ) {
+ var ret = [], i, l, cur = this[0];
+
+ // Array
+ if ( jQuery.isArray( selectors ) ) {
+ var match, selector,
+ matches = {},
+ level = 1;
+
+ if ( cur && selectors.length ) {
+ for ( i = 0, l = selectors.length; i < l; i++ ) {
+ selector = selectors[i];
+
+ if ( !matches[ selector ] ) {
+ matches[ selector ] = POS.test( selector ) ?
+ jQuery( selector, context || this.context ) :
+ selector;
+ }
+ }
+
+ while ( cur && cur.ownerDocument && cur !== context ) {
+ for ( selector in matches ) {
+ match = matches[ selector ];
+
+ if ( match.jquery ? match.index( cur ) > -1 : jQuery( cur ).is( match ) ) {
+ ret.push({ selector: selector, elem: cur, level: level });
+ }
+ }
+
+ cur = cur.parentNode;
+ level++;
+ }
+ }
+
+ return ret;
+ }
+
+ // String
+ var pos = POS.test( selectors ) || typeof selectors !== "string" ?
+ jQuery( selectors, context || this.context ) :
+ 0;
+
+ for ( i = 0, l = this.length; i < l; i++ ) {
+ cur = this[i];
+
+ while ( cur ) {
+ if ( pos ? pos.index(cur) > -1 : jQuery.find.matchesSelector(cur, selectors) ) {
+ ret.push( cur );
+ break;
+
+ } else {
+ cur = cur.parentNode;
+ if ( !cur || !cur.ownerDocument || cur === context || cur.nodeType === 11 ) {
+ break;
+ }
+ }
+ }
+ }
+
+ ret = ret.length > 1 ? jQuery.unique( ret ) : ret;
+
+ return this.pushStack( ret, "closest", selectors );
+ },
+
+ // Determine the position of an element within
+ // the matched set of elements
+ index: function( elem ) {
+ if ( !elem || typeof elem === "string" ) {
+ return jQuery.inArray( this[0],
+ // If it receives a string, the selector is used
+ // If it receives nothing, the siblings are used
+ elem ? jQuery( elem ) : this.parent().children() );
+ }
+ // Locate the position of the desired element
+ return jQuery.inArray(
+ // If it receives a jQuery object, the first element is used
+ elem.jquery ? elem[0] : elem, this );
+ },
+
+ add: function( selector, context ) {
+ var set = typeof selector === "string" ?
+ jQuery( selector, context ) :
+ jQuery.makeArray( selector && selector.nodeType ? [ selector ] : selector ),
+ all = jQuery.merge( this.get(), set );
+
+ return this.pushStack( isDisconnected( set[0] ) || isDisconnected( all[0] ) ?
+ all :
+ jQuery.unique( all ) );
+ },
+
+ andSelf: function() {
+ return this.add( this.prevObject );
+ }
+});
+
+// A painfully simple check to see if an element is disconnected
+// from a document (should be improved, where feasible).
+function isDisconnected( node ) {
+ return !node || !node.parentNode || node.parentNode.nodeType === 11;
+}
+
+jQuery.each({
+ parent: function( elem ) {
+ var parent = elem.parentNode;
+ return parent && parent.nodeType !== 11 ? parent : null;
+ },
+ parents: function( elem ) {
+ return jQuery.dir( elem, "parentNode" );
+ },
+ parentsUntil: function( elem, i, until ) {
+ return jQuery.dir( elem, "parentNode", until );
+ },
+ next: function( elem ) {
+ return jQuery.nth( elem, 2, "nextSibling" );
+ },
+ prev: function( elem ) {
+ return jQuery.nth( elem, 2, "previousSibling" );
+ },
+ nextAll: function( elem ) {
+ return jQuery.dir( elem, "nextSibling" );
+ },
+ prevAll: function( elem ) {
+ return jQuery.dir( elem, "previousSibling" );
+ },
+ nextUntil: function( elem, i, until ) {
+ return jQuery.dir( elem, "nextSibling", until );
+ },
+ prevUntil: function( elem, i, until ) {
+ return jQuery.dir( elem, "previousSibling", until );
+ },
+ siblings: function( elem ) {
+ return jQuery.sibling( elem.parentNode.firstChild, elem );
+ },
+ children: function( elem ) {
+ return jQuery.sibling( elem.firstChild );
+ },
+ contents: function( elem ) {
+ return jQuery.nodeName( elem, "iframe" ) ?
+ elem.contentDocument || elem.contentWindow.document :
+ jQuery.makeArray( elem.childNodes );
+ }
+}, function( name, fn ) {
+ jQuery.fn[ name ] = function( until, selector ) {
+ var ret = jQuery.map( this, fn, until ),
+ // The variable 'args' was introduced in
+ // https://github.com/jquery/jquery/commit/52a0238
+ // to work around a bug in Chrome 10 (Dev) and should be removed when the bug is fixed.
+ // http://code.google.com/p/v8/issues/detail?id=1050
+ args = slice.call(arguments);
+
+ if ( !runtil.test( name ) ) {
+ selector = until;
+ }
+
+ if ( selector && typeof selector === "string" ) {
+ ret = jQuery.filter( selector, ret );
+ }
+
+ ret = this.length > 1 && !guaranteedUnique[ name ] ? jQuery.unique( ret ) : ret;
+
+ if ( (this.length > 1 || rmultiselector.test( selector )) && rparentsprev.test( name ) ) {
+ ret = ret.reverse();
+ }
+
+ return this.pushStack( ret, name, args.join(",") );
+ };
+});
+
+jQuery.extend({
+ filter: function( expr, elems, not ) {
+ if ( not ) {
+ expr = ":not(" + expr + ")";
+ }
+
+ return elems.length === 1 ?
+ jQuery.find.matchesSelector(elems[0], expr) ? [ elems[0] ] : [] :
+ jQuery.find.matches(expr, elems);
+ },
+
+ dir: function( elem, dir, until ) {
+ var matched = [],
+ cur = elem[ dir ];
+
+ while ( cur && cur.nodeType !== 9 && (until === undefined || cur.nodeType !== 1 || !jQuery( cur ).is( until )) ) {
+ if ( cur.nodeType === 1 ) {
+ matched.push( cur );
+ }
+ cur = cur[dir];
+ }
+ return matched;
+ },
+
+ nth: function( cur, result, dir, elem ) {
+ result = result || 1;
+ var num = 0;
+
+ for ( ; cur; cur = cur[dir] ) {
+ if ( cur.nodeType === 1 && ++num === result ) {
+ break;
+ }
+ }
+
+ return cur;
+ },
+
+ sibling: function( n, elem ) {
+ var r = [];
+
+ for ( ; n; n = n.nextSibling ) {
+ if ( n.nodeType === 1 && n !== elem ) {
+ r.push( n );
+ }
+ }
+
+ return r;
+ }
+});
+
+// Implement the identical functionality for filter and not
+function winnow( elements, qualifier, keep ) {
+
+ // Can't pass null or undefined to indexOf in Firefox 4
+ // Set to 0 to skip string check
+ qualifier = qualifier || 0;
+
+ if ( jQuery.isFunction( qualifier ) ) {
+ return jQuery.grep(elements, function( elem, i ) {
+ var retVal = !!qualifier.call( elem, i, elem );
+ return retVal === keep;
+ });
+
+ } else if ( qualifier.nodeType ) {
+ return jQuery.grep(elements, function( elem, i ) {
+ return (elem === qualifier) === keep;
+ });
+
+ } else if ( typeof qualifier === "string" ) {
+ var filtered = jQuery.grep(elements, function( elem ) {
+ return elem.nodeType === 1;
+ });
+
+ if ( isSimple.test( qualifier ) ) {
+ return jQuery.filter(qualifier, filtered, !keep);
+ } else {
+ qualifier = jQuery.filter( qualifier, filtered );
+ }
+ }
+
+ return jQuery.grep(elements, function( elem, i ) {
+ return (jQuery.inArray( elem, qualifier ) >= 0) === keep;
+ });
+}
+
+
+
+
+var rinlinejQuery = / jQuery\d+="(?:\d+|null)"/g,
+ rleadingWhitespace = /^\s+/,
+ rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,
+ rtagName = /<([\w:]+)/,
+ rtbody = /<tbody/i,
+ rhtml = /<|&#?\w+;/,
+ rnocache = /<(?:script|object|embed|option|style)/i,
+ // checked="checked" or checked
+ rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i,
+ rscriptType = /\/(java|ecma)script/i,
+ rcleanScript = /^\s*<!(?:\[CDATA\[|\-\-)/,
+ wrapMap = {
+ option: [ 1, "<select multiple='multiple'>", "</select>" ],
+ legend: [ 1, "<fieldset>", "</fieldset>" ],
+ thead: [ 1, "<table>", "</table>" ],
+ tr: [ 2, "<table><tbody>", "</tbody></table>" ],
+ td: [ 3, "<table><tbody><tr>", "</tr></tbody></table>" ],
+ col: [ 2, "<table><tbody></tbody><colgroup>", "</colgroup></table>" ],
+ area: [ 1, "<map>", "</map>" ],
+ _default: [ 0, "", "" ]
+ };
+
+wrapMap.optgroup = wrapMap.option;
+wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;
+wrapMap.th = wrapMap.td;
+
+// IE can't serialize <link> and <script> tags normally
+if ( !jQuery.support.htmlSerialize ) {
+ wrapMap._default = [ 1, "div<div>", "</div>" ];
+}
+
+jQuery.fn.extend({
+ text: function( text ) {
+ if ( jQuery.isFunction(text) ) {
+ return this.each(function(i) {
+ var self = jQuery( this );
+
+ self.text( text.call(this, i, self.text()) );
+ });
+ }
+
+ if ( typeof text !== "object" && text !== undefined ) {
+ return this.empty().append( (this[0] && this[0].ownerDocument || document).createTextNode( text ) );
+ }
+
+ return jQuery.text( this );
+ },
+
+ wrapAll: function( html ) {
+ if ( jQuery.isFunction( html ) ) {
+ return this.each(function(i) {
+ jQuery(this).wrapAll( html.call(this, i) );
+ });
+ }
+
+ if ( this[0] ) {
+ // The elements to wrap the target around
+ var wrap = jQuery( html, this[0].ownerDocument ).eq(0).clone(true);
+
+ if ( this[0].parentNode ) {
+ wrap.insertBefore( this[0] );
+ }
+
+ wrap.map(function() {
+ var elem = this;
+
+ while ( elem.firstChild && elem.firstChild.nodeType === 1 ) {
+ elem = elem.firstChild;
+ }
+
+ return elem;
+ }).append( this );
+ }
+
+ return this;
+ },
+
+ wrapInner: function( html ) {
+ if ( jQuery.isFunction( html ) ) {
+ return this.each(function(i) {
+ jQuery(this).wrapInner( html.call(this, i) );
+ });
+ }
+
+ return this.each(function() {
+ var self = jQuery( this ),
+ contents = self.contents();
+
+ if ( contents.length ) {
+ contents.wrapAll( html );
+
+ } else {
+ self.append( html );
+ }
+ });
+ },
+
+ wrap: function( html ) {
+ return this.each(function() {
+ jQuery( this ).wrapAll( html );
+ });
+ },
+
+ unwrap: function() {
+ return this.parent().each(function() {
+ if ( !jQuery.nodeName( this, "body" ) ) {
+ jQuery( this ).replaceWith( this.childNodes );
+ }
+ }).end();
+ },
+
+ append: function() {
+ return this.domManip(arguments, true, function( elem ) {
+ if ( this.nodeType === 1 ) {
+ this.appendChild( elem );
+ }
+ });
+ },
+
+ prepend: function() {
+ return this.domManip(arguments, true, function( elem ) {
+ if ( this.nodeType === 1 ) {
+ this.insertBefore( elem, this.firstChild );
+ }
+ });
+ },
+
+ before: function() {
+ if ( this[0] && this[0].parentNode ) {
+ return this.domManip(arguments, false, function( elem ) {
+ this.parentNode.insertBefore( elem, this );
+ });
+ } else if ( arguments.length ) {
+ var set = jQuery(arguments[0]);
+ set.push.apply( set, this.toArray() );
+ return this.pushStack( set, "before", arguments );
+ }
+ },
+
+ after: function() {
+ if ( this[0] && this[0].parentNode ) {
+ return this.domManip(arguments, false, function( elem ) {
+ this.parentNode.insertBefore( elem, this.nextSibling );
+ });
+ } else if ( arguments.length ) {
+ var set = this.pushStack( this, "after", arguments );
+ set.push.apply( set, jQuery(arguments[0]).toArray() );
+ return set;
+ }
+ },
+
+ // keepData is for internal use only--do not document
+ remove: function( selector, keepData ) {
+ for ( var i = 0, elem; (elem = this[i]) != null; i++ ) {
+ if ( !selector || jQuery.filter( selector, [ elem ] ).length ) {
+ if ( !keepData && elem.nodeType === 1 ) {
+ jQuery.cleanData( elem.getElementsByTagName("*") );
+ jQuery.cleanData( [ elem ] );
+ }
+
+ if ( elem.parentNode ) {
+ elem.parentNode.removeChild( elem );
+ }
+ }
+ }
+
+ return this;
+ },
+
+ empty: function() {
+ for ( var i = 0, elem; (elem = this[i]) != null; i++ ) {
+ // Remove element nodes and prevent memory leaks
+ if ( elem.nodeType === 1 ) {
+ jQuery.cleanData( elem.getElementsByTagName("*") );
+ }
+
+ // Remove any remaining nodes
+ while ( elem.firstChild ) {
+ elem.removeChild( elem.firstChild );
+ }
+ }
+
+ return this;
+ },
+
+ clone: function( dataAndEvents, deepDataAndEvents ) {
+ dataAndEvents = dataAndEvents == null ? false : dataAndEvents;
+ deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;
+
+ return this.map( function () {
+ return jQuery.clone( this, dataAndEvents, deepDataAndEvents );
+ });
+ },
+
+ html: function( value ) {
+ if ( value === undefined ) {
+ return this[0] && this[0].nodeType === 1 ?
+ this[0].innerHTML.replace(rinlinejQuery, "") :
+ null;
+
+ // See if we can take a shortcut and just use innerHTML
+ } else if ( typeof value === "string" && !rnocache.test( value ) &&
+ (jQuery.support.leadingWhitespace || !rleadingWhitespace.test( value )) &&
+ !wrapMap[ (rtagName.exec( value ) || ["", ""])[1].toLowerCase() ] ) {
+
+ value = value.replace(rxhtmlTag, "<$1></$2>");
+
+ try {
+ for ( var i = 0, l = this.length; i < l; i++ ) {
+ // Remove element nodes and prevent memory leaks
+ if ( this[i].nodeType === 1 ) {
+ jQuery.cleanData( this[i].getElementsByTagName("*") );
+ this[i].innerHTML = value;
+ }
+ }
+
+ // If using innerHTML throws an exception, use the fallback method
+ } catch(e) {
+ this.empty().append( value );
+ }
+
+ } else if ( jQuery.isFunction( value ) ) {
+ this.each(function(i){
+ var self = jQuery( this );
+
+ self.html( value.call(this, i, self.html()) );
+ });
+
+ } else {
+ this.empty().append( value );
+ }
+
+ return this;
+ },
+
+ replaceWith: function( value ) {
+ if ( this[0] && this[0].parentNode ) {
+ // Make sure that the elements are removed from the DOM before they are inserted
+ // this can help fix replacing a parent with child elements
+ if ( jQuery.isFunction( value ) ) {
+ return this.each(function(i) {
+ var self = jQuery(this), old = self.html();
+ self.replaceWith( value.call( this, i, old ) );
+ });
+ }
+
+ if ( typeof value !== "string" ) {
+ value = jQuery( value ).detach();
+ }
+
+ return this.each(function() {
+ var next = this.nextSibling,
+ parent = this.parentNode;
+
+ jQuery( this ).remove();
+
+ if ( next ) {
+ jQuery(next).before( value );
+ } else {
+ jQuery(parent).append( value );
+ }
+ });
+ } else {
+ return this.length ?
+ this.pushStack( jQuery(jQuery.isFunction(value) ? value() : value), "replaceWith", value ) :
+ this;
+ }
+ },
+
+ detach: function( selector ) {
+ return this.remove( selector, true );
+ },
+
+ domManip: function( args, table, callback ) {
+ var results, first, fragment, parent,
+ value = args[0],
+ scripts = [];
+
+ // We can't cloneNode fragments that contain checked, in WebKit
+ if ( !jQuery.support.checkClone && arguments.length === 3 && typeof value === "string" && rchecked.test( value ) ) {
+ return this.each(function() {
+ jQuery(this).domManip( args, table, callback, true );
+ });
+ }
+
+ if ( jQuery.isFunction(value) ) {
+ return this.each(function(i) {
+ var self = jQuery(this);
+ args[0] = value.call(this, i, table ? self.html() : undefined);
+ self.domManip( args, table, callback );
+ });
+ }
+
+ if ( this[0] ) {
+ parent = value && value.parentNode;
+
+ // If we're in a fragment, just use that instead of building a new one
+ if ( jQuery.support.parentNode && parent && parent.nodeType === 11 && parent.childNodes.length === this.length ) {
+ results = { fragment: parent };
+
+ } else {
+ results = jQuery.buildFragment( args, this, scripts );
+ }
+
+ fragment = results.fragment;
+
+ if ( fragment.childNodes.length === 1 ) {
+ first = fragment = fragment.firstChild;
+ } else {
+ first = fragment.firstChild;
+ }
+
+ if ( first ) {
+ table = table && jQuery.nodeName( first, "tr" );
+
+ for ( var i = 0, l = this.length, lastIndex = l - 1; i < l; i++ ) {
+ callback.call(
+ table ?
+ root(this[i], first) :
+ this[i],
+ // Make sure that we do not leak memory by inadvertently discarding
+ // the original fragment (which might have attached data) instead of
+ // using it; in addition, use the original fragment object for the last
+ // item instead of first because it can end up being emptied incorrectly
+ // in certain situations (Bug #8070).
+ // Fragments from the fragment cache must always be cloned and never used
+ // in place.
+ results.cacheable || (l > 1 && i < lastIndex) ?
+ jQuery.clone( fragment, true, true ) :
+ fragment
+ );
+ }
+ }
+
+ if ( scripts.length ) {
+ jQuery.each( scripts, evalScript );
+ }
+ }
+
+ return this;
+ }
+});
+
+function root( elem, cur ) {
+ return jQuery.nodeName(elem, "table") ?
+ (elem.getElementsByTagName("tbody")[0] ||
+ elem.appendChild(elem.ownerDocument.createElement("tbody"))) :
+ elem;
+}
+
+function cloneCopyEvent( src, dest ) {
+
+ if ( dest.nodeType !== 1 || !jQuery.hasData( src ) ) {
+ return;
+ }
+
+ var internalKey = jQuery.expando,
+ oldData = jQuery.data( src ),
+ curData = jQuery.data( dest, oldData );
+
+ // Switch to use the internal data object, if it exists, for the next
+ // stage of data copying
+ if ( (oldData = oldData[ internalKey ]) ) {
+ var events = oldData.events;
+ curData = curData[ internalKey ] = jQuery.extend({}, oldData);
+
+ if ( events ) {
+ delete curData.handle;
+ curData.events = {};
+
+ for ( var type in events ) {
+ for ( var i = 0, l = events[ type ].length; i < l; i++ ) {
+ jQuery.event.add( dest, type + ( events[ type ][ i ].namespace ? "." : "" ) + events[ type ][ i ].namespace, events[ type ][ i ], events[ type ][ i ].data );
+ }
+ }
+ }
+ }
+}
+
+function cloneFixAttributes( src, dest ) {
+ var nodeName;
+
+ // We do not need to do anything for non-Elements
+ if ( dest.nodeType !== 1 ) {
+ return;
+ }
+
+ // clearAttributes removes the attributes, which we don't want,
+ // but also removes the attachEvent events, which we *do* want
+ if ( dest.clearAttributes ) {
+ dest.clearAttributes();
+ }
+
+ // mergeAttributes, in contrast, only merges back on the
+ // original attributes, not the events
+ if ( dest.mergeAttributes ) {
+ dest.mergeAttributes( src );
+ }
+
+ nodeName = dest.nodeName.toLowerCase();
+
+ // IE6-8 fail to clone children inside object elements that use
+ // the proprietary classid attribute value (rather than the type
+ // attribute) to identify the type of content to display
+ if ( nodeName === "object" ) {
+ dest.outerHTML = src.outerHTML;
+
+ } else if ( nodeName === "input" && (src.type === "checkbox" || src.type === "radio") ) {
+ // IE6-8 fails to persist the checked state of a cloned checkbox
+ // or radio button. Worse, IE6-7 fail to give the cloned element
+ // a checked appearance if the defaultChecked value isn't also set
+ if ( src.checked ) {
+ dest.defaultChecked = dest.checked = src.checked;
+ }
+
+ // IE6-7 get confused and end up setting the value of a cloned
+ // checkbox/radio button to an empty string instead of "on"
+ if ( dest.value !== src.value ) {
+ dest.value = src.value;
+ }
+
+ // IE6-8 fails to return the selected option to the default selected
+ // state when cloning options
+ } else if ( nodeName === "option" ) {
+ dest.selected = src.defaultSelected;
+
+ // IE6-8 fails to set the defaultValue to the correct value when
+ // cloning other types of input fields
+ } else if ( nodeName === "input" || nodeName === "textarea" ) {
+ dest.defaultValue = src.defaultValue;
+ }
+
+ // Event data gets referenced instead of copied if the expando
+ // gets copied too
+ dest.removeAttribute( jQuery.expando );
+}
+
+jQuery.buildFragment = function( args, nodes, scripts ) {
+ var fragment, cacheable, cacheresults, doc;
+
+ // nodes may contain either an explicit document object,
+ // a jQuery collection or context object.
+ // If nodes[0] contains a valid object to assign to doc
+ if ( nodes && nodes[0] ) {
+ doc = nodes[0].ownerDocument || nodes[0];
+ }
+
+ // Ensure that an attr object doesn't incorrectly stand in as a document object
+ // Chrome and Firefox seem to allow this to occur and will throw exception
+ // Fixes #8950
+ if ( !doc.createDocumentFragment ) {
+ doc = document;
+ }
+
+ // Only cache "small" (1/2 KB) HTML strings that are associated with the main document
+ // Cloning options loses the selected state, so don't cache them
+ // IE 6 doesn't like it when you put <object> or <embed> elements in a fragment
+ // Also, WebKit does not clone 'checked' attributes on cloneNode, so don't cache
+ if ( args.length === 1 && typeof args[0] === "string" && args[0].length < 512 && doc === document &&
+ args[0].charAt(0) === "<" && !rnocache.test( args[0] ) && (jQuery.support.checkClone || !rchecked.test( args[0] )) ) {
+
+ cacheable = true;
+
+ cacheresults = jQuery.fragments[ args[0] ];
+ if ( cacheresults && cacheresults !== 1 ) {
+ fragment = cacheresults;
+ }
+ }
+
+ if ( !fragment ) {
+ fragment = doc.createDocumentFragment();
+ jQuery.clean( args, doc, fragment, scripts );
+ }
+
+ if ( cacheable ) {
+ jQuery.fragments[ args[0] ] = cacheresults ? fragment : 1;
+ }
+
+ return { fragment: fragment, cacheable: cacheable };
+};
+
+jQuery.fragments = {};
+
+jQuery.each({
+ appendTo: "append",
+ prependTo: "prepend",
+ insertBefore: "before",
+ insertAfter: "after",
+ replaceAll: "replaceWith"
+}, function( name, original ) {
+ jQuery.fn[ name ] = function( selector ) {
+ var ret = [],
+ insert = jQuery( selector ),
+ parent = this.length === 1 && this[0].parentNode;
+
+ if ( parent && parent.nodeType === 11 && parent.childNodes.length === 1 && insert.length === 1 ) {
+ insert[ original ]( this[0] );
+ return this;
+
+ } else {
+ for ( var i = 0, l = insert.length; i < l; i++ ) {
+ var elems = (i > 0 ? this.clone(true) : this).get();
+ jQuery( insert[i] )[ original ]( elems );
+ ret = ret.concat( elems );
+ }
+
+ return this.pushStack( ret, name, insert.selector );
+ }
+ };
+});
+
+function getAll( elem ) {
+ if ( "getElementsByTagName" in elem ) {
+ return elem.getElementsByTagName( "*" );
+
+ } else if ( "querySelectorAll" in elem ) {
+ return elem.querySelectorAll( "*" );
+
+ } else {
+ return [];
+ }
+}
+
+// Used in clean, fixes the defaultChecked property
+function fixDefaultChecked( elem ) {
+ if ( elem.type === "checkbox" || elem.type === "radio" ) {
+ elem.defaultChecked = elem.checked;
+ }
+}
+// Finds all inputs and passes them to fixDefaultChecked
+function findInputs( elem ) {
+ if ( jQuery.nodeName( elem, "input" ) ) {
+ fixDefaultChecked( elem );
+ } else if ( "getElementsByTagName" in elem ) {
+ jQuery.grep( elem.getElementsByTagName("input"), fixDefaultChecked );
+ }
+}
+
+jQuery.extend({
+ clone: function( elem, dataAndEvents, deepDataAndEvents ) {
+ var clone = elem.cloneNode(true),
+ srcElements,
+ destElements,
+ i;
+
+ if ( (!jQuery.support.noCloneEvent || !jQuery.support.noCloneChecked) &&
+ (elem.nodeType === 1 || elem.nodeType === 11) && !jQuery.isXMLDoc(elem) ) {
+ // IE copies events bound via attachEvent when using cloneNode.
+ // Calling detachEvent on the clone will also remove the events
+ // from the original. In order to get around this, we use some
+ // proprietary methods to clear the events. Thanks to MooTools
+ // guys for this hotness.
+
+ cloneFixAttributes( elem, clone );
+
+ // Using Sizzle here is crazy slow, so we use getElementsByTagName
+ // instead
+ srcElements = getAll( elem );
+ destElements = getAll( clone );
+
+ // Weird iteration because IE will replace the length property
+ // with an element if you are cloning the body and one of the
+ // elements on the page has a name or id of "length"
+ for ( i = 0; srcElements[i]; ++i ) {
+ cloneFixAttributes( srcElements[i], destElements[i] );
+ }
+ }
+
+ // Copy the events from the original to the clone
+ if ( dataAndEvents ) {
+ cloneCopyEvent( elem, clone );
+
+ if ( deepDataAndEvents ) {
+ srcElements = getAll( elem );
+ destElements = getAll( clone );
+
+ for ( i = 0; srcElements[i]; ++i ) {
+ cloneCopyEvent( srcElements[i], destElements[i] );
+ }
+ }
+ }
+
+ srcElements = destElements = null;
+
+ // Return the cloned set
+ return clone;
+ },
+
+ clean: function( elems, context, fragment, scripts ) {
+ var checkScriptType;
+
+ context = context || document;
+
+ // !context.createElement fails in IE with an error but returns typeof 'object'
+ if ( typeof context.createElement === "undefined" ) {
+ context = context.ownerDocument || context[0] && context[0].ownerDocument || document;
+ }
+
+ var ret = [], j;
+
+ for ( var i = 0, elem; (elem = elems[i]) != null; i++ ) {
+ if ( typeof elem === "number" ) {
+ elem += "";
+ }
+
+ if ( !elem ) {
+ continue;
+ }
+
+ // Convert html string into DOM nodes
+ if ( typeof elem === "string" ) {
+ if ( !rhtml.test( elem ) ) {
+ elem = context.createTextNode( elem );
+ } else {
+ // Fix "XHTML"-style tags in all browsers
+ elem = elem.replace(rxhtmlTag, "<$1></$2>");
+
+ // Trim whitespace, otherwise indexOf won't work as expected
+ var tag = (rtagName.exec( elem ) || ["", ""])[1].toLowerCase(),
+ wrap = wrapMap[ tag ] || wrapMap._default,
+ depth = wrap[0],
+ div = context.createElement("div");
+
+ // Go to html and back, then peel off extra wrappers
+ div.innerHTML = wrap[1] + elem + wrap[2];
+
+ // Move to the right depth
+ while ( depth-- ) {
+ div = div.lastChild;
+ }
+
+ // Remove IE's autoinserted <tbody> from table fragments
+ if ( !jQuery.support.tbody ) {
+
+ // String was a <table>, *may* have spurious <tbody>
+ var hasBody = rtbody.test(elem),
+ tbody = tag === "table" && !hasBody ?
+ div.firstChild && div.firstChild.childNodes :
+
+ // String was a bare <thead> or <tfoot>
+ wrap[1] === "<table>" && !hasBody ?
+ div.childNodes :
+ [];
+
+ for ( j = tbody.length - 1; j >= 0 ; --j ) {
+ if ( jQuery.nodeName( tbody[ j ], "tbody" ) && !tbody[ j ].childNodes.length ) {
+ tbody[ j ].parentNode.removeChild( tbody[ j ] );
+ }
+ }
+ }
+
+ // IE completely kills leading whitespace when innerHTML is used
+ if ( !jQuery.support.leadingWhitespace && rleadingWhitespace.test( elem ) ) {
+ div.insertBefore( context.createTextNode( rleadingWhitespace.exec(elem)[0] ), div.firstChild );
+ }
+
+ elem = div.childNodes;
+ }
+ }
+
+ // Resets defaultChecked for any radios and checkboxes
+ // about to be appended to the DOM in IE 6/7 (#8060)
+ var len;
+ if ( !jQuery.support.appendChecked ) {
+ if ( elem[0] && typeof (len = elem.length) === "number" ) {
+ for ( j = 0; j < len; j++ ) {
+ findInputs( elem[j] );
+ }
+ } else {
+ findInputs( elem );
+ }
+ }
+
+ if ( elem.nodeType ) {
+ ret.push( elem );
+ } else {
+ ret = jQuery.merge( ret, elem );
+ }
+ }
+
+ if ( fragment ) {
+ checkScriptType = function( elem ) {
+ return !elem.type || rscriptType.test( elem.type );
+ };
+ for ( i = 0; ret[i]; i++ ) {
+ if ( scripts && jQuery.nodeName( ret[i], "script" ) && (!ret[i].type || ret[i].type.toLowerCase() === "text/javascript") ) {
+ scripts.push( ret[i].parentNode ? ret[i].parentNode.removeChild( ret[i] ) : ret[i] );
+
+ } else {
+ if ( ret[i].nodeType === 1 ) {
+ var jsTags = jQuery.grep( ret[i].getElementsByTagName( "script" ), checkScriptType );
+
+ ret.splice.apply( ret, [i + 1, 0].concat( jsTags ) );
+ }
+ fragment.appendChild( ret[i] );
+ }
+ }
+ }
+
+ return ret;
+ },
+
+ cleanData: function( elems ) {
+ var data, id, cache = jQuery.cache, internalKey = jQuery.expando, special = jQuery.event.special,
+ deleteExpando = jQuery.support.deleteExpando;
+
+ for ( var i = 0, elem; (elem = elems[i]) != null; i++ ) {
+ if ( elem.nodeName && jQuery.noData[elem.nodeName.toLowerCase()] ) {
+ continue;
+ }
+
+ id = elem[ jQuery.expando ];
+
+ if ( id ) {
+ data = cache[ id ] && cache[ id ][ internalKey ];
+
+ if ( data && data.events ) {
+ for ( var type in data.events ) {
+ if ( special[ type ] ) {
+ jQuery.event.remove( elem, type );
+
+ // This is a shortcut to avoid jQuery.event.remove's overhead
+ } else {
+ jQuery.removeEvent( elem, type, data.handle );
+ }
+ }
+
+ // Null the DOM reference to avoid IE6/7/8 leak (#7054)
+ if ( data.handle ) {
+ data.handle.elem = null;
+ }
+ }
+
+ if ( deleteExpando ) {
+ delete elem[ jQuery.expando ];
+
+ } else if ( elem.removeAttribute ) {
+ elem.removeAttribute( jQuery.expando );
+ }
+
+ delete cache[ id ];
+ }
+ }
+ }
+});
+
+function evalScript( i, elem ) {
+ if ( elem.src ) {
+ jQuery.ajax({
+ url: elem.src,
+ async: false,
+ dataType: "script"
+ });
+ } else {
+ jQuery.globalEval( ( elem.text || elem.textContent || elem.innerHTML || "" ).replace( rcleanScript, "/*$0*/" ) );
+ }
+
+ if ( elem.parentNode ) {
+ elem.parentNode.removeChild( elem );
+ }
+}
+
+
+
+var ralpha = /alpha\([^)]*\)/i,
+ ropacity = /opacity=([^)]*)/,
+ // fixed for IE9, see #8346
+ rupper = /([A-Z]|^ms)/g,
+ rnumpx = /^-?\d+(?:px)?$/i,
+ rnum = /^-?\d/,
+ rrelNum = /^[+\-]=/,
+ rrelNumFilter = /[^+\-\.\de]+/g,
+
+ cssShow = { position: "absolute", visibility: "hidden", display: "block" },
+ cssWidth = [ "Left", "Right" ],
+ cssHeight = [ "Top", "Bottom" ],
+ curCSS,
+
+ getComputedStyle,
+ currentStyle;
+
+jQuery.fn.css = function( name, value ) {
+ // Setting 'undefined' is a no-op
+ if ( arguments.length === 2 && value === undefined ) {
+ return this;
+ }
+
+ return jQuery.access( this, name, value, true, function( elem, name, value ) {
+ return value !== undefined ?
+ jQuery.style( elem, name, value ) :
+ jQuery.css( elem, name );
+ });
+};
+
+jQuery.extend({
+ // Add in style property hooks for overriding the default
+ // behavior of getting and setting a style property
+ cssHooks: {
+ opacity: {
+ get: function( elem, computed ) {
+ if ( computed ) {
+ // We should always get a number back from opacity
+ var ret = curCSS( elem, "opacity", "opacity" );
+ return ret === "" ? "1" : ret;
+
+ } else {
+ return elem.style.opacity;
+ }
+ }
+ }
+ },
+
+ // Exclude the following css properties to add px
+ cssNumber: {
+ "fillOpacity": true,
+ "fontWeight": true,
+ "lineHeight": true,
+ "opacity": true,
+ "orphans": true,
+ "widows": true,
+ "zIndex": true,
+ "zoom": true
+ },
+
+ // Add in properties whose names you wish to fix before
+ // setting or getting the value
+ cssProps: {
+ // normalize float css property
+ "float": jQuery.support.cssFloat ? "cssFloat" : "styleFloat"
+ },
+
+ // Get and set the style property on a DOM Node
+ style: function( elem, name, value, extra ) {
+ // Don't set styles on text and comment nodes
+ if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {
+ return;
+ }
+
+ // Make sure that we're working with the right name
+ var ret, type, origName = jQuery.camelCase( name ),
+ style = elem.style, hooks = jQuery.cssHooks[ origName ];
+
+ name = jQuery.cssProps[ origName ] || origName;
+
+ // Check if we're setting a value
+ if ( value !== undefined ) {
+ type = typeof value;
+
+ // Make sure that NaN and null values aren't set. See: #7116
+ if ( type === "number" && isNaN( value ) || value == null ) {
+ return;
+ }
+
+ // convert relative number strings (+= or -=) to relative numbers. #7345
+ if ( type === "string" && rrelNum.test( value ) ) {
+ value = +value.replace( rrelNumFilter, "" ) + parseFloat( jQuery.css( elem, name ) );
+ // Fixes bug #9237
+ type = "number";
+ }
+
+ // If a number was passed in, add 'px' to the (except for certain CSS properties)
+ if ( type === "number" && !jQuery.cssNumber[ origName ] ) {
+ value += "px";
+ }
+
+ // If a hook was provided, use that value, otherwise just set the specified value
+ if ( !hooks || !("set" in hooks) || (value = hooks.set( elem, value )) !== undefined ) {
+ // Wrapped to prevent IE from throwing errors when 'invalid' values are provided
+ // Fixes bug #5509
+ try {
+ style[ name ] = value;
+ } catch(e) {}
+ }
+
+ } else {
+ // If a hook was provided get the non-computed value from there
+ if ( hooks && "get" in hooks && (ret = hooks.get( elem, false, extra )) !== undefined ) {
+ return ret;
+ }
+
+ // Otherwise just get the value from the style object
+ return style[ name ];
+ }
+ },
+
+ css: function( elem, name, extra ) {
+ var ret, hooks;
+
+ // Make sure that we're working with the right name
+ name = jQuery.camelCase( name );
+ hooks = jQuery.cssHooks[ name ];
+ name = jQuery.cssProps[ name ] || name;
+
+ // cssFloat needs a special treatment
+ if ( name === "cssFloat" ) {
+ name = "float";
+ }
+
+ // If a hook was provided get the computed value from there
+ if ( hooks && "get" in hooks && (ret = hooks.get( elem, true, extra )) !== undefined ) {
+ return ret;
+
+ // Otherwise, if a way to get the computed value exists, use that
+ } else if ( curCSS ) {
+ return curCSS( elem, name );
+ }
+ },
+
+ // A method for quickly swapping in/out CSS properties to get correct calculations
+ swap: function( elem, options, callback ) {
+ var old = {};
+
+ // Remember the old values, and insert the new ones
+ for ( var name in options ) {
+ old[ name ] = elem.style[ name ];
+ elem.style[ name ] = options[ name ];
+ }
+
+ callback.call( elem );
+
+ // Revert the old values
+ for ( name in options ) {
+ elem.style[ name ] = old[ name ];
+ }
+ }
+});
+
+// DEPRECATED, Use jQuery.css() instead
+jQuery.curCSS = jQuery.css;
+
+jQuery.each(["height", "width"], function( i, name ) {
+ jQuery.cssHooks[ name ] = {
+ get: function( elem, computed, extra ) {
+ var val;
+
+ if ( computed ) {
+ if ( elem.offsetWidth !== 0 ) {
+ return getWH( elem, name, extra );
+ } else {
+ jQuery.swap( elem, cssShow, function() {
+ val = getWH( elem, name, extra );
+ });
+ }
+
+ return val;
+ }
+ },
+
+ set: function( elem, value ) {
+ if ( rnumpx.test( value ) ) {
+ // ignore negative width and height values #1599
+ value = parseFloat( value );
+
+ if ( value >= 0 ) {
+ return value + "px";
+ }
+
+ } else {
+ return value;
+ }
+ }
+ };
+});
+
+if ( !jQuery.support.opacity ) {
+ jQuery.cssHooks.opacity = {
+ get: function( elem, computed ) {
+ // IE uses filters for opacity
+ return ropacity.test( (computed && elem.currentStyle ? elem.currentStyle.filter : elem.style.filter) || "" ) ?
+ ( parseFloat( RegExp.$1 ) / 100 ) + "" :
+ computed ? "1" : "";
+ },
+
+ set: function( elem, value ) {
+ var style = elem.style,
+ currentStyle = elem.currentStyle;
+
+ // IE has trouble with opacity if it does not have layout
+ // Force it by setting the zoom level
+ style.zoom = 1;
+
+ // Set the alpha filter to set the opacity
+ var opacity = jQuery.isNaN( value ) ?
+ "" :
+ "alpha(opacity=" + value * 100 + ")",
+ filter = currentStyle && currentStyle.filter || style.filter || "";
+
+ style.filter = ralpha.test( filter ) ?
+ filter.replace( ralpha, opacity ) :
+ filter + " " + opacity;
+ }
+ };
+}
+
+jQuery(function() {
+ // This hook cannot be added until DOM ready because the support test
+ // for it is not run until after DOM ready
+ if ( !jQuery.support.reliableMarginRight ) {
+ jQuery.cssHooks.marginRight = {
+ get: function( elem, computed ) {
+ // WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right
+ // Work around by temporarily setting element display to inline-block
+ var ret;
+ jQuery.swap( elem, { "display": "inline-block" }, function() {
+ if ( computed ) {
+ ret = curCSS( elem, "margin-right", "marginRight" );
+ } else {
+ ret = elem.style.marginRight;
+ }
+ });
+ return ret;
+ }
+ };
+ }
+});
+
+if ( document.defaultView && document.defaultView.getComputedStyle ) {
+ getComputedStyle = function( elem, name ) {
+ var ret, defaultView, computedStyle;
+
+ name = name.replace( rupper, "-$1" ).toLowerCase();
+
+ if ( !(defaultView = elem.ownerDocument.defaultView) ) {
+ return undefined;
+ }
+
+ if ( (computedStyle = defaultView.getComputedStyle( elem, null )) ) {
+ ret = computedStyle.getPropertyValue( name );
+ if ( ret === "" && !jQuery.contains( elem.ownerDocument.documentElement, elem ) ) {
+ ret = jQuery.style( elem, name );
+ }
+ }
+
+ return ret;
+ };
+}
+
+if ( document.documentElement.currentStyle ) {
+ currentStyle = function( elem, name ) {
+ var left,
+ ret = elem.currentStyle && elem.currentStyle[ name ],
+ rsLeft = elem.runtimeStyle && elem.runtimeStyle[ name ],
+ style = elem.style;
+
+ // From the awesome hack by Dean Edwards
+ // http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291
+
+ // If we're not dealing with a regular pixel number
+ // but a number that has a weird ending, we need to convert it to pixels
+ if ( !rnumpx.test( ret ) && rnum.test( ret ) ) {
+ // Remember the original values
+ left = style.left;
+
+ // Put in the new values to get a computed value out
+ if ( rsLeft ) {
+ elem.runtimeStyle.left = elem.currentStyle.left;
+ }
+ style.left = name === "fontSize" ? "1em" : (ret || 0);
+ ret = style.pixelLeft + "px";
+
+ // Revert the changed values
+ style.left = left;
+ if ( rsLeft ) {
+ elem.runtimeStyle.left = rsLeft;
+ }
+ }
+
+ return ret === "" ? "auto" : ret;
+ };
+}
+
+curCSS = getComputedStyle || currentStyle;
+
+function getWH( elem, name, extra ) {
+
+ // Start with offset property
+ var val = name === "width" ? elem.offsetWidth : elem.offsetHeight,
+ which = name === "width" ? cssWidth : cssHeight;
+
+ if ( val > 0 ) {
+ if ( extra !== "border" ) {
+ jQuery.each( which, function() {
+ if ( !extra ) {
+ val -= parseFloat( jQuery.css( elem, "padding" + this ) ) || 0;
+ }
+ if ( extra === "margin" ) {
+ val += parseFloat( jQuery.css( elem, extra + this ) ) || 0;
+ } else {
+ val -= parseFloat( jQuery.css( elem, "border" + this + "Width" ) ) || 0;
+ }
+ });
+ }
+
+ return val + "px";
+ }
+
+ // Fall back to computed then uncomputed css if necessary
+ val = curCSS( elem, name, name );
+ if ( val < 0 || val == null ) {
+ val = elem.style[ name ] || 0;
+ }
+ // Normalize "", auto, and prepare for extra
+ val = parseFloat( val ) || 0;
+
+ // Add padding, border, margin
+ if ( extra ) {
+ jQuery.each( which, function() {
+ val += parseFloat( jQuery.css( elem, "padding" + this ) ) || 0;
+ if ( extra !== "padding" ) {
+ val += parseFloat( jQuery.css( elem, "border" + this + "Width" ) ) || 0;
+ }
+ if ( extra === "margin" ) {
+ val += parseFloat( jQuery.css( elem, extra + this ) ) || 0;
+ }
+ });
+ }
+
+ return val + "px";
+}
+
+if ( jQuery.expr && jQuery.expr.filters ) {
+ jQuery.expr.filters.hidden = function( elem ) {
+ var width = elem.offsetWidth,
+ height = elem.offsetHeight;
+
+ return (width === 0 && height === 0) || (!jQuery.support.reliableHiddenOffsets && (elem.style.display || jQuery.css( elem, "display" )) === "none");
+ };
+
+ jQuery.expr.filters.visible = function( elem ) {
+ return !jQuery.expr.filters.hidden( elem );
+ };
+}
+
+
+
+
+var r20 = /%20/g,
+ rbracket = /\[\]$/,
+ rCRLF = /\r?\n/g,
+ rhash = /#.*$/,
+ rheaders = /^(.*?):[ \t]*([^\r\n]*)\r?$/mg, // IE leaves an \r character at EOL
+ rinput = /^(?:color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,
+ // #7653, #8125, #8152: local protocol detection
+ rlocalProtocol = /^(?:about|app|app\-storage|.+\-extension|file|widget):$/,
+ rnoContent = /^(?:GET|HEAD)$/,
+ rprotocol = /^\/\//,
+ rquery = /\?/,
+ rscript = /<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,
+ rselectTextarea = /^(?:select|textarea)/i,
+ rspacesAjax = /\s+/,
+ rts = /([?&])_=[^&]*/,
+ rurl = /^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,
+
+ // Keep a copy of the old load method
+ _load = jQuery.fn.load,
+
+ /* Prefilters
+ * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)
+ * 2) These are called:
+ * - BEFORE asking for a transport
+ * - AFTER param serialization (s.data is a string if s.processData is true)
+ * 3) key is the dataType
+ * 4) the catchall symbol "*" can be used
+ * 5) execution will start with transport dataType and THEN continue down to "*" if needed
+ */
+ prefilters = {},
+
+ /* Transports bindings
+ * 1) key is the dataType
+ * 2) the catchall symbol "*" can be used
+ * 3) selection will start with transport dataType and THEN go to "*" if needed
+ */
+ transports = {},
+
+ // Document location
+ ajaxLocation,
+
+ // Document location segments
+ ajaxLocParts;
+
+// #8138, IE may throw an exception when accessing
+// a field from window.location if document.domain has been set
+try {
+ ajaxLocation = location.href;
+} catch( e ) {
+ // Use the href attribute of an A element
+ // since IE will modify it given document.location
+ ajaxLocation = document.createElement( "a" );
+ ajaxLocation.href = "";
+ ajaxLocation = ajaxLocation.href;
+}
+
+// Segment location into parts
+ajaxLocParts = rurl.exec( ajaxLocation.toLowerCase() ) || [];
+
+// Base "constructor" for jQuery.ajaxPrefilter and jQuery.ajaxTransport
+function addToPrefiltersOrTransports( structure ) {
+
+ // dataTypeExpression is optional and defaults to "*"
+ return function( dataTypeExpression, func ) {
+
+ if ( typeof dataTypeExpression !== "string" ) {
+ func = dataTypeExpression;
+ dataTypeExpression = "*";
+ }
+
+ if ( jQuery.isFunction( func ) ) {
+ var dataTypes = dataTypeExpression.toLowerCase().split( rspacesAjax ),
+ i = 0,
+ length = dataTypes.length,
+ dataType,
+ list,
+ placeBefore;
+
+ // For each dataType in the dataTypeExpression
+ for(; i < length; i++ ) {
+ dataType = dataTypes[ i ];
+ // We control if we're asked to add before
+ // any existing element
+ placeBefore = /^\+/.test( dataType );
+ if ( placeBefore ) {
+ dataType = dataType.substr( 1 ) || "*";
+ }
+ list = structure[ dataType ] = structure[ dataType ] || [];
+ // then we add to the structure accordingly
+ list[ placeBefore ? "unshift" : "push" ]( func );
+ }
+ }
+ };
+}
+
+// Base inspection function for prefilters and transports
+function inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR,
+ dataType /* internal */, inspected /* internal */ ) {
+
+ dataType = dataType || options.dataTypes[ 0 ];
+ inspected = inspected || {};
+
+ inspected[ dataType ] = true;
+
+ var list = structure[ dataType ],
+ i = 0,
+ length = list ? list.length : 0,
+ executeOnly = ( structure === prefilters ),
+ selection;
+
+ for(; i < length && ( executeOnly || !selection ); i++ ) {
+ selection = list[ i ]( options, originalOptions, jqXHR );
+ // If we got redirected to another dataType
+ // we try there if executing only and not done already
+ if ( typeof selection === "string" ) {
+ if ( !executeOnly || inspected[ selection ] ) {
+ selection = undefined;
+ } else {
+ options.dataTypes.unshift( selection );
+ selection = inspectPrefiltersOrTransports(
+ structure, options, originalOptions, jqXHR, selection, inspected );
+ }
+ }
+ }
+ // If we're only executing or nothing was selected
+ // we try the catchall dataType if not done already
+ if ( ( executeOnly || !selection ) && !inspected[ "*" ] ) {
+ selection = inspectPrefiltersOrTransports(
+ structure, options, originalOptions, jqXHR, "*", inspected );
+ }
+ // unnecessary when only executing (prefilters)
+ // but it'll be ignored by the caller in that case
+ return selection;
+}
+
+jQuery.fn.extend({
+ load: function( url, params, callback ) {
+ if ( typeof url !== "string" && _load ) {
+ return _load.apply( this, arguments );
+
+ // Don't do a request if no elements are being requested
+ } else if ( !this.length ) {
+ return this;
+ }
+
+ var off = url.indexOf( " " );
+ if ( off >= 0 ) {
+ var selector = url.slice( off, url.length );
+ url = url.slice( 0, off );
+ }
+
+ // Default to a GET request
+ var type = "GET";
+
+ // If the second parameter was provided
+ if ( params ) {
+ // If it's a function
+ if ( jQuery.isFunction( params ) ) {
+ // We assume that it's the callback
+ callback = params;
+ params = undefined;
+
+ // Otherwise, build a param string
+ } else if ( typeof params === "object" ) {
+ params = jQuery.param( params, jQuery.ajaxSettings.traditional );
+ type = "POST";
+ }
+ }
+
+ var self = this;
+
+ // Request the remote document
+ jQuery.ajax({
+ url: url,
+ type: type,
+ dataType: "html",
+ data: params,
+ // Complete callback (responseText is used internally)
+ complete: function( jqXHR, status, responseText ) {
+ // Store the response as specified by the jqXHR object
+ responseText = jqXHR.responseText;
+ // If successful, inject the HTML into all the matched elements
+ if ( jqXHR.isResolved() ) {
+ // #4825: Get the actual response in case
+ // a dataFilter is present in ajaxSettings
+ jqXHR.done(function( r ) {
+ responseText = r;
+ });
+ // See if a selector was specified
+ self.html( selector ?
+ // Create a dummy div to hold the results
+ jQuery("<div>")
+ // inject the contents of the document in, removing the scripts
+ // to avoid any 'Permission Denied' errors in IE
+ .append(responseText.replace(rscript, ""))
+
+ // Locate the specified elements
+ .find(selector) :
+
+ // If not, just inject the full result
+ responseText );
+ }
+
+ if ( callback ) {
+ self.each( callback, [ responseText, status, jqXHR ] );
+ }
+ }
+ });
+
+ return this;
+ },
+
+ serialize: function() {
+ return jQuery.param( this.serializeArray() );
+ },
+
+ serializeArray: function() {
+ return this.map(function(){
+ return this.elements ? jQuery.makeArray( this.elements ) : this;
+ })
+ .filter(function(){
+ return this.name && !this.disabled &&
+ ( this.checked || rselectTextarea.test( this.nodeName ) ||
+ rinput.test( this.type ) );
+ })
+ .map(function( i, elem ){
+ var val = jQuery( this ).val();
+
+ return val == null ?
+ null :
+ jQuery.isArray( val ) ?
+ jQuery.map( val, function( val, i ){
+ return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
+ }) :
+ { name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
+ }).get();
+ }
+});
+
+// Attach a bunch of functions for handling common AJAX events
+jQuery.each( "ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split( " " ), function( i, o ){
+ jQuery.fn[ o ] = function( f ){
+ return this.bind( o, f );
+ };
+});
+
+jQuery.each( [ "get", "post" ], function( i, method ) {
+ jQuery[ method ] = function( url, data, callback, type ) {
+ // shift arguments if data argument was omitted
+ if ( jQuery.isFunction( data ) ) {
+ type = type || callback;
+ callback = data;
+ data = undefined;
+ }
+
+ return jQuery.ajax({
+ type: method,
+ url: url,
+ data: data,
+ success: callback,
+ dataType: type
+ });
+ };
+});
+
+jQuery.extend({
+
+ getScript: function( url, callback ) {
+ return jQuery.get( url, undefined, callback, "script" );
+ },
+
+ getJSON: function( url, data, callback ) {
+ return jQuery.get( url, data, callback, "json" );
+ },
+
+ // Creates a full fledged settings object into target
+ // with both ajaxSettings and settings fields.
+ // If target is omitted, writes into ajaxSettings.
+ ajaxSetup: function ( target, settings ) {
+ if ( !settings ) {
+ // Only one parameter, we extend ajaxSettings
+ settings = target;
+ target = jQuery.extend( true, jQuery.ajaxSettings, settings );
+ } else {
+ // target was provided, we extend into it
+ jQuery.extend( true, target, jQuery.ajaxSettings, settings );
+ }
+ // Flatten fields we don't want deep extended
+ for( var field in { context: 1, url: 1 } ) {
+ if ( field in settings ) {
+ target[ field ] = settings[ field ];
+ } else if( field in jQuery.ajaxSettings ) {
+ target[ field ] = jQuery.ajaxSettings[ field ];
+ }
+ }
+ return target;
+ },
+
+ ajaxSettings: {
+ url: ajaxLocation,
+ isLocal: rlocalProtocol.test( ajaxLocParts[ 1 ] ),
+ global: true,
+ type: "GET",
+ contentType: "application/x-www-form-urlencoded",
+ processData: true,
+ async: true,
+ /*
+ timeout: 0,
+ data: null,
+ dataType: null,
+ username: null,
+ password: null,
+ cache: null,
+ traditional: false,
+ headers: {},
+ */
+
+ accepts: {
+ xml: "application/xml, text/xml",
+ html: "text/html",
+ text: "text/plain",
+ json: "application/json, text/javascript",
+ "*": "*/*"
+ },
+
+ contents: {
+ xml: /xml/,
+ html: /html/,
+ json: /json/
+ },
+
+ responseFields: {
+ xml: "responseXML",
+ text: "responseText"
+ },
+
+ // List of data converters
+ // 1) key format is "source_type destination_type" (a single space in-between)
+ // 2) the catchall symbol "*" can be used for source_type
+ converters: {
+
+ // Convert anything to text
+ "* text": window.String,
+
+ // Text to html (true = no transformation)
+ "text html": true,
+
+ // Evaluate text as a json expression
+ "text json": jQuery.parseJSON,
+
+ // Parse text as xml
+ "text xml": jQuery.parseXML
+ }
+ },
+
+ ajaxPrefilter: addToPrefiltersOrTransports( prefilters ),
+ ajaxTransport: addToPrefiltersOrTransports( transports ),
+
+ // Main method
+ ajax: function( url, options ) {
+
+ // If url is an object, simulate pre-1.5 signature
+ if ( typeof url === "object" ) {
+ options = url;
+ url = undefined;
+ }
+
+ // Force options to be an object
+ options = options || {};
+
+ var // Create the final options object
+ s = jQuery.ajaxSetup( {}, options ),
+ // Callbacks context
+ callbackContext = s.context || s,
+ // Context for global events
+ // It's the callbackContext if one was provided in the options
+ // and if it's a DOM node or a jQuery collection
+ globalEventContext = callbackContext !== s &&
+ ( callbackContext.nodeType || callbackContext instanceof jQuery ) ?
+ jQuery( callbackContext ) : jQuery.event,
+ // Deferreds
+ deferred = jQuery.Deferred(),
+ completeDeferred = jQuery._Deferred(),
+ // Status-dependent callbacks
+ statusCode = s.statusCode || {},
+ // ifModified key
+ ifModifiedKey,
+ // Headers (they are sent all at once)
+ requestHeaders = {},
+ requestHeadersNames = {},
+ // Response headers
+ responseHeadersString,
+ responseHeaders,
+ // transport
+ transport,
+ // timeout handle
+ timeoutTimer,
+ // Cross-domain detection vars
+ parts,
+ // The jqXHR state
+ state = 0,
+ // To know if global events are to be dispatched
+ fireGlobals,
+ // Loop variable
+ i,
+ // Fake xhr
+ jqXHR = {
+
+ readyState: 0,
+
+ // Caches the header
+ setRequestHeader: function( name, value ) {
+ if ( !state ) {
+ var lname = name.toLowerCase();
+ name = requestHeadersNames[ lname ] = requestHeadersNames[ lname ] || name;
+ requestHeaders[ name ] = value;
+ }
+ return this;
+ },
+
+ // Raw string
+ getAllResponseHeaders: function() {
+ return state === 2 ? responseHeadersString : null;
+ },
+
+ // Builds headers hashtable if needed
+ getResponseHeader: function( key ) {
+ var match;
+ if ( state === 2 ) {
+ if ( !responseHeaders ) {
+ responseHeaders = {};
+ while( ( match = rheaders.exec( responseHeadersString ) ) ) {
+ responseHeaders[ match[1].toLowerCase() ] = match[ 2 ];
+ }
+ }
+ match = responseHeaders[ key.toLowerCase() ];
+ }
+ return match === undefined ? null : match;
+ },
+
+ // Overrides response content-type header
+ overrideMimeType: function( type ) {
+ if ( !state ) {
+ s.mimeType = type;
+ }
+ return this;
+ },
+
+ // Cancel the request
+ abort: function( statusText ) {
+ statusText = statusText || "abort";
+ if ( transport ) {
+ transport.abort( statusText );
+ }
+ done( 0, statusText );
+ return this;
+ }
+ };
+
+ // Callback for when everything is done
+ // It is defined here because jslint complains if it is declared
+ // at the end of the function (which would be more logical and readable)
+ function done( status, statusText, responses, headers ) {
+
+ // Called once
+ if ( state === 2 ) {
+ return;
+ }
+
+ // State is "done" now
+ state = 2;
+
+ // Clear timeout if it exists
+ if ( timeoutTimer ) {
+ clearTimeout( timeoutTimer );
+ }
+
+ // Dereference transport for early garbage collection
+ // (no matter how long the jqXHR object will be used)
+ transport = undefined;
+
+ // Cache response headers
+ responseHeadersString = headers || "";
+
+ // Set readyState
+ jqXHR.readyState = status ? 4 : 0;
+
+ var isSuccess,
+ success,
+ error,
+ response = responses ? ajaxHandleResponses( s, jqXHR, responses ) : undefined,
+ lastModified,
+ etag;
+
+ // If successful, handle type chaining
+ if ( status >= 200 && status < 300 || status === 304 ) {
+
+ // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
+ if ( s.ifModified ) {
+
+ if ( ( lastModified = jqXHR.getResponseHeader( "Last-Modified" ) ) ) {
+ jQuery.lastModified[ ifModifiedKey ] = lastModified;
+ }
+ if ( ( etag = jqXHR.getResponseHeader( "Etag" ) ) ) {
+ jQuery.etag[ ifModifiedKey ] = etag;
+ }
+ }
+
+ // If not modified
+ if ( status === 304 ) {
+
+ statusText = "notmodified";
+ isSuccess = true;
+
+ // If we have data
+ } else {
+
+ try {
+ success = ajaxConvert( s, response );
+ statusText = "success";
+ isSuccess = true;
+ } catch(e) {
+ // We have a parsererror
+ statusText = "parsererror";
+ error = e;
+ }
+ }
+ } else {
+ // We extract error from statusText
+ // then normalize statusText and status for non-aborts
+ error = statusText;
+ if( !statusText || status ) {
+ statusText = "error";
+ if ( status < 0 ) {
+ status = 0;
+ }
+ }
+ }
+
+ // Set data for the fake xhr object
+ jqXHR.status = status;
+ jqXHR.statusText = statusText;
+
+ // Success/Error
+ if ( isSuccess ) {
+ deferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );
+ } else {
+ deferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );
+ }
+
+ // Status-dependent callbacks
+ jqXHR.statusCode( statusCode );
+ statusCode = undefined;
+
+ if ( fireGlobals ) {
+ globalEventContext.trigger( "ajax" + ( isSuccess ? "Success" : "Error" ),
+ [ jqXHR, s, isSuccess ? success : error ] );
+ }
+
+ // Complete
+ completeDeferred.resolveWith( callbackContext, [ jqXHR, statusText ] );
+
+ if ( fireGlobals ) {
+ globalEventContext.trigger( "ajaxComplete", [ jqXHR, s] );
+ // Handle the global AJAX counter
+ if ( !( --jQuery.active ) ) {
+ jQuery.event.trigger( "ajaxStop" );
+ }
+ }
+ }
+
+ // Attach deferreds
+ deferred.promise( jqXHR );
+ jqXHR.success = jqXHR.done;
+ jqXHR.error = jqXHR.fail;
+ jqXHR.complete = completeDeferred.done;
+
+ // Status-dependent callbacks
+ jqXHR.statusCode = function( map ) {
+ if ( map ) {
+ var tmp;
+ if ( state < 2 ) {
+ for( tmp in map ) {
+ statusCode[ tmp ] = [ statusCode[tmp], map[tmp] ];
+ }
+ } else {
+ tmp = map[ jqXHR.status ];
+ jqXHR.then( tmp, tmp );
+ }
+ }
+ return this;
+ };
+
+ // Remove hash character (#7531: and string promotion)
+ // Add protocol if not provided (#5866: IE7 issue with protocol-less urls)
+ // We also use the url parameter if available
+ s.url = ( ( url || s.url ) + "" ).replace( rhash, "" ).replace( rprotocol, ajaxLocParts[ 1 ] + "//" );
+
+ // Extract dataTypes list
+ s.dataTypes = jQuery.trim( s.dataType || "*" ).toLowerCase().split( rspacesAjax );
+
+ // Determine if a cross-domain request is in order
+ if ( s.crossDomain == null ) {
+ parts = rurl.exec( s.url.toLowerCase() );
+ s.crossDomain = !!( parts &&
+ ( parts[ 1 ] != ajaxLocParts[ 1 ] || parts[ 2 ] != ajaxLocParts[ 2 ] ||
+ ( parts[ 3 ] || ( parts[ 1 ] === "http:" ? 80 : 443 ) ) !=
+ ( ajaxLocParts[ 3 ] || ( ajaxLocParts[ 1 ] === "http:" ? 80 : 443 ) ) )
+ );
+ }
+
+ // Convert data if not already a string
+ if ( s.data && s.processData && typeof s.data !== "string" ) {
+ s.data = jQuery.param( s.data, s.traditional );
+ }
+
+ // Apply prefilters
+ inspectPrefiltersOrTransports( prefilters, s, options, jqXHR );
+
+ // If request was aborted inside a prefiler, stop there
+ if ( state === 2 ) {
+ return false;
+ }
+
+ // We can fire global events as of now if asked to
+ fireGlobals = s.global;
+
+ // Uppercase the type
+ s.type = s.type.toUpperCase();
+
+ // Determine if request has content
+ s.hasContent = !rnoContent.test( s.type );
+
+ // Watch for a new set of requests
+ if ( fireGlobals && jQuery.active++ === 0 ) {
+ jQuery.event.trigger( "ajaxStart" );
+ }
+
+ // More options handling for requests with no content
+ if ( !s.hasContent ) {
+
+ // If data is available, append data to url
+ if ( s.data ) {
+ s.url += ( rquery.test( s.url ) ? "&" : "?" ) + s.data;
+ }
+
+ // Get ifModifiedKey before adding the anti-cache parameter
+ ifModifiedKey = s.url;
+
+ // Add anti-cache in url if needed
+ if ( s.cache === false ) {
+
+ var ts = jQuery.now(),
+ // try replacing _= if it is there
+ ret = s.url.replace( rts, "$1_=" + ts );
+
+ // if nothing was replaced, add timestamp to the end
+ s.url = ret + ( (ret === s.url ) ? ( rquery.test( s.url ) ? "&" : "?" ) + "_=" + ts : "" );
+ }
+ }
+
+ // Set the correct header, if data is being sent
+ if ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {
+ jqXHR.setRequestHeader( "Content-Type", s.contentType );
+ }
+
+ // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
+ if ( s.ifModified ) {
+ ifModifiedKey = ifModifiedKey || s.url;
+ if ( jQuery.lastModified[ ifModifiedKey ] ) {
+ jqXHR.setRequestHeader( "If-Modified-Since", jQuery.lastModified[ ifModifiedKey ] );
+ }
+ if ( jQuery.etag[ ifModifiedKey ] ) {
+ jqXHR.setRequestHeader( "If-None-Match", jQuery.etag[ ifModifiedKey ] );
+ }
+ }
+
+ // Set the Accepts header for the server, depending on the dataType
+ jqXHR.setRequestHeader(
+ "Accept",
+ s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[0] ] ?
+ s.accepts[ s.dataTypes[0] ] + ( s.dataTypes[ 0 ] !== "*" ? ", */*; q=0.01" : "" ) :
+ s.accepts[ "*" ]
+ );
+
+ // Check for headers option
+ for ( i in s.headers ) {
+ jqXHR.setRequestHeader( i, s.headers[ i ] );
+ }
+
+ // Allow custom headers/mimetypes and early abort
+ if ( s.beforeSend && ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || state === 2 ) ) {
+ // Abort if not done already
+ jqXHR.abort();
+ return false;
+
+ }
+
+ // Install callbacks on deferreds
+ for ( i in { success: 1, error: 1, complete: 1 } ) {
+ jqXHR[ i ]( s[ i ] );
+ }
+
+ // Get transport
+ transport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );
+
+ // If no transport, we auto-abort
+ if ( !transport ) {
+ done( -1, "No Transport" );
+ } else {
+ jqXHR.readyState = 1;
+ // Send global event
+ if ( fireGlobals ) {
+ globalEventContext.trigger( "ajaxSend", [ jqXHR, s ] );
+ }
+ // Timeout
+ if ( s.async && s.timeout > 0 ) {
+ timeoutTimer = setTimeout( function(){
+ jqXHR.abort( "timeout" );
+ }, s.timeout );
+ }
+
+ try {
+ state = 1;
+ transport.send( requestHeaders, done );
+ } catch (e) {
+ // Propagate exception as error if not done
+ if ( status < 2 ) {
+ done( -1, e );
+ // Simply rethrow otherwise
+ } else {
+ jQuery.error( e );
+ }
+ }
+ }
+
+ return jqXHR;
+ },
+
+ // Serialize an array of form elements or a set of
+ // key/values into a query string
+ param: function( a, traditional ) {
+ var s = [],
+ add = function( key, value ) {
+ // If value is a function, invoke it and return its value
+ value = jQuery.isFunction( value ) ? value() : value;
+ s[ s.length ] = encodeURIComponent( key ) + "=" + encodeURIComponent( value );
+ };
+
+ // Set traditional to true for jQuery <= 1.3.2 behavior.
+ if ( traditional === undefined ) {
+ traditional = jQuery.ajaxSettings.traditional;
+ }
+
+ // If an array was passed in, assume that it is an array of form elements.
+ if ( jQuery.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {
+ // Serialize the form elements
+ jQuery.each( a, function() {
+ add( this.name, this.value );
+ });
+
+ } else {
+ // If traditional, encode the "old" way (the way 1.3.2 or older
+ // did it), otherwise encode params recursively.
+ for ( var prefix in a ) {
+ buildParams( prefix, a[ prefix ], traditional, add );
+ }
+ }
+
+ // Return the resulting serialization
+ return s.join( "&" ).replace( r20, "+" );
+ }
+});
+
+function buildParams( prefix, obj, traditional, add ) {
+ if ( jQuery.isArray( obj ) ) {
+ // Serialize array item.
+ jQuery.each( obj, function( i, v ) {
+ if ( traditional || rbracket.test( prefix ) ) {
+ // Treat each array item as a scalar.
+ add( prefix, v );
+
+ } else {
+ // If array item is non-scalar (array or object), encode its
+ // numeric index to resolve deserialization ambiguity issues.
+ // Note that rack (as of 1.0.0) can't currently deserialize
+ // nested arrays properly, and attempting to do so may cause
+ // a server error. Possible fixes are to modify rack's
+ // deserialization algorithm or to provide an option or flag
+ // to force array serialization to be shallow.
+ buildParams( prefix + "[" + ( typeof v === "object" || jQuery.isArray(v) ? i : "" ) + "]", v, traditional, add );
+ }
+ });
+
+ } else if ( !traditional && obj != null && typeof obj === "object" ) {
+ // Serialize object item.
+ for ( var name in obj ) {
+ buildParams( prefix + "[" + name + "]", obj[ name ], traditional, add );
+ }
+
+ } else {
+ // Serialize scalar item.
+ add( prefix, obj );
+ }
+}
+
+// This is still on the jQuery object... for now
+// Want to move this to jQuery.ajax some day
+jQuery.extend({
+
+ // Counter for holding the number of active queries
+ active: 0,
+
+ // Last-Modified header cache for next request
+ lastModified: {},
+ etag: {}
+
+});
+
+/* Handles responses to an ajax request:
+ * - sets all responseXXX fields accordingly
+ * - finds the right dataType (mediates between content-type and expected dataType)
+ * - returns the corresponding response
+ */
+function ajaxHandleResponses( s, jqXHR, responses ) {
+
+ var contents = s.contents,
+ dataTypes = s.dataTypes,
+ responseFields = s.responseFields,
+ ct,
+ type,
+ finalDataType,
+ firstDataType;
+
+ // Fill responseXXX fields
+ for( type in responseFields ) {
+ if ( type in responses ) {
+ jqXHR[ responseFields[type] ] = responses[ type ];
+ }
+ }
+
+ // Remove auto dataType and get content-type in the process
+ while( dataTypes[ 0 ] === "*" ) {
+ dataTypes.shift();
+ if ( ct === undefined ) {
+ ct = s.mimeType || jqXHR.getResponseHeader( "content-type" );
+ }
+ }
+
+ // Check if we're dealing with a known content-type
+ if ( ct ) {
+ for ( type in contents ) {
+ if ( contents[ type ] && contents[ type ].test( ct ) ) {
+ dataTypes.unshift( type );
+ break;
+ }
+ }
+ }
+
+ // Check to see if we have a response for the expected dataType
+ if ( dataTypes[ 0 ] in responses ) {
+ finalDataType = dataTypes[ 0 ];
+ } else {
+ // Try convertible dataTypes
+ for ( type in responses ) {
+ if ( !dataTypes[ 0 ] || s.converters[ type + " " + dataTypes[0] ] ) {
+ finalDataType = type;
+ break;
+ }
+ if ( !firstDataType ) {
+ firstDataType = type;
+ }
+ }
+ // Or just use first one
+ finalDataType = finalDataType || firstDataType;
+ }
+
+ // If we found a dataType
+ // We add the dataType to the list if needed
+ // and return the corresponding response
+ if ( finalDataType ) {
+ if ( finalDataType !== dataTypes[ 0 ] ) {
+ dataTypes.unshift( finalDataType );
+ }
+ return responses[ finalDataType ];
+ }
+}
+
+// Chain conversions given the request and the original response
+function ajaxConvert( s, response ) {
+
+ // Apply the dataFilter if provided
+ if ( s.dataFilter ) {
+ response = s.dataFilter( response, s.dataType );
+ }
+
+ var dataTypes = s.dataTypes,
+ converters = {},
+ i,
+ key,
+ length = dataTypes.length,
+ tmp,
+ // Current and previous dataTypes
+ current = dataTypes[ 0 ],
+ prev,
+ // Conversion expression
+ conversion,
+ // Conversion function
+ conv,
+ // Conversion functions (transitive conversion)
+ conv1,
+ conv2;
+
+ // For each dataType in the chain
+ for( i = 1; i < length; i++ ) {
+
+ // Create converters map
+ // with lowercased keys
+ if ( i === 1 ) {
+ for( key in s.converters ) {
+ if( typeof key === "string" ) {
+ converters[ key.toLowerCase() ] = s.converters[ key ];
+ }
+ }
+ }
+
+ // Get the dataTypes
+ prev = current;
+ current = dataTypes[ i ];
+
+ // If current is auto dataType, update it to prev
+ if( current === "*" ) {
+ current = prev;
+ // If no auto and dataTypes are actually different
+ } else if ( prev !== "*" && prev !== current ) {
+
+ // Get the converter
+ conversion = prev + " " + current;
+ conv = converters[ conversion ] || converters[ "* " + current ];
+
+ // If there is no direct converter, search transitively
+ if ( !conv ) {
+ conv2 = undefined;
+ for( conv1 in converters ) {
+ tmp = conv1.split( " " );
+ if ( tmp[ 0 ] === prev || tmp[ 0 ] === "*" ) {
+ conv2 = converters[ tmp[1] + " " + current ];
+ if ( conv2 ) {
+ conv1 = converters[ conv1 ];
+ if ( conv1 === true ) {
+ conv = conv2;
+ } else if ( conv2 === true ) {
+ conv = conv1;
+ }
+ break;
+ }
+ }
+ }
+ }
+ // If we found no converter, dispatch an error
+ if ( !( conv || conv2 ) ) {
+ jQuery.error( "No conversion from " + conversion.replace(" "," to ") );
+ }
+ // If found converter is not an equivalence
+ if ( conv !== true ) {
+ // Convert with 1 or 2 converters accordingly
+ response = conv ? conv( response ) : conv2( conv1(response) );
+ }
+ }
+ }
+ return response;
+}
+
+
+
+
+var jsc = jQuery.now(),
+ jsre = /(\=)\?(&|$)|\?\?/i;
+
+// Default jsonp settings
+jQuery.ajaxSetup({
+ jsonp: "callback",
+ jsonpCallback: function() {
+ return jQuery.expando + "_" + ( jsc++ );
+ }
+});
+
+// Detect, normalize options and install callbacks for jsonp requests
+jQuery.ajaxPrefilter( "json jsonp", function( s, originalSettings, jqXHR ) {
+
+ var inspectData = s.contentType === "application/x-www-form-urlencoded" &&
+ ( typeof s.data === "string" );
+
+ if ( s.dataTypes[ 0 ] === "jsonp" ||
+ s.jsonp !== false && ( jsre.test( s.url ) ||
+ inspectData && jsre.test( s.data ) ) ) {
+
+ var responseContainer,
+ jsonpCallback = s.jsonpCallback =
+ jQuery.isFunction( s.jsonpCallback ) ? s.jsonpCallback() : s.jsonpCallback,
+ previous = window[ jsonpCallback ],
+ url = s.url,
+ data = s.data,
+ replace = "$1" + jsonpCallback + "$2";
+
+ if ( s.jsonp !== false ) {
+ url = url.replace( jsre, replace );
+ if ( s.url === url ) {
+ if ( inspectData ) {
+ data = data.replace( jsre, replace );
+ }
+ if ( s.data === data ) {
+ // Add callback manually
+ url += (/\?/.test( url ) ? "&" : "?") + s.jsonp + "=" + jsonpCallback;
+ }
+ }
+ }
+
+ s.url = url;
+ s.data = data;
+
+ // Install callback
+ window[ jsonpCallback ] = function( response ) {
+ responseContainer = [ response ];
+ };
+
+ // Clean-up function
+ jqXHR.always(function() {
+ // Set callback back to previous value
+ window[ jsonpCallback ] = previous;
+ // Call if it was a function and we have a response
+ if ( responseContainer && jQuery.isFunction( previous ) ) {
+ window[ jsonpCallback ]( responseContainer[ 0 ] );
+ }
+ });
+
+ // Use data converter to retrieve json after script execution
+ s.converters["script json"] = function() {
+ if ( !responseContainer ) {
+ jQuery.error( jsonpCallback + " was not called" );
+ }
+ return responseContainer[ 0 ];
+ };
+
+ // force json dataType
+ s.dataTypes[ 0 ] = "json";
+
+ // Delegate to script
+ return "script";
+ }
+});
+
+
+
+
+// Install script dataType
+jQuery.ajaxSetup({
+ accepts: {
+ script: "text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"
+ },
+ contents: {
+ script: /javascript|ecmascript/
+ },
+ converters: {
+ "text script": function( text ) {
+ jQuery.globalEval( text );
+ return text;
+ }
+ }
+});
+
+// Handle cache's special case and global
+jQuery.ajaxPrefilter( "script", function( s ) {
+ if ( s.cache === undefined ) {
+ s.cache = false;
+ }
+ if ( s.crossDomain ) {
+ s.type = "GET";
+ s.global = false;
+ }
+});
+
+// Bind script tag hack transport
+jQuery.ajaxTransport( "script", function(s) {
+
+ // This transport only deals with cross domain requests
+ if ( s.crossDomain ) {
+
+ var script,
+ head = document.head || document.getElementsByTagName( "head" )[0] || document.documentElement;
+
+ return {
+
+ send: function( _, callback ) {
+
+ script = document.createElement( "script" );
+
+ script.async = "async";
+
+ if ( s.scriptCharset ) {
+ script.charset = s.scriptCharset;
+ }
+
+ script.src = s.url;
+
+ // Attach handlers for all browsers
+ script.onload = script.onreadystatechange = function( _, isAbort ) {
+
+ if ( isAbort || !script.readyState || /loaded|complete/.test( script.readyState ) ) {
+
+ // Handle memory leak in IE
+ script.onload = script.onreadystatechange = null;
+
+ // Remove the script
+ if ( head && script.parentNode ) {
+ head.removeChild( script );
+ }
+
+ // Dereference the script
+ script = undefined;
+
+ // Callback if not abort
+ if ( !isAbort ) {
+ callback( 200, "success" );
+ }
+ }
+ };
+ // Use insertBefore instead of appendChild to circumvent an IE6 bug.
+ // This arises when a base node is used (#2709 and #4378).
+ head.insertBefore( script, head.firstChild );
+ },
+
+ abort: function() {
+ if ( script ) {
+ script.onload( 0, 1 );
+ }
+ }
+ };
+ }
+});
+
+
+
+
+var // #5280: Internet Explorer will keep connections alive if we don't abort on unload
+ xhrOnUnloadAbort = window.ActiveXObject ? function() {
+ // Abort all pending requests
+ for ( var key in xhrCallbacks ) {
+ xhrCallbacks[ key ]( 0, 1 );
+ }
+ } : false,
+ xhrId = 0,
+ xhrCallbacks;
+
+// Functions to create xhrs
+function createStandardXHR() {
+ try {
+ return new window.XMLHttpRequest();
+ } catch( e ) {}
+}
+
+function createActiveXHR() {
+ try {
+ return new window.ActiveXObject( "Microsoft.XMLHTTP" );
+ } catch( e ) {}
+}
+
+// Create the request object
+// (This is still attached to ajaxSettings for backward compatibility)
+jQuery.ajaxSettings.xhr = window.ActiveXObject ?
+ /* Microsoft failed to properly
+ * implement the XMLHttpRequest in IE7 (can't request local files),
+ * so we use the ActiveXObject when it is available
+ * Additionally XMLHttpRequest can be disabled in IE7/IE8 so
+ * we need a fallback.
+ */
+ function() {
+ return !this.isLocal && createStandardXHR() || createActiveXHR();
+ } :
+ // For all other browsers, use the standard XMLHttpRequest object
+ createStandardXHR;
+
+// Determine support properties
+(function( xhr ) {
+ jQuery.extend( jQuery.support, {
+ ajax: !!xhr,
+ cors: !!xhr && ( "withCredentials" in xhr )
+ });
+})( jQuery.ajaxSettings.xhr() );
+
+// Create transport if the browser can provide an xhr
+if ( jQuery.support.ajax ) {
+
+ jQuery.ajaxTransport(function( s ) {
+ // Cross domain only allowed if supported through XMLHttpRequest
+ if ( !s.crossDomain || jQuery.support.cors ) {
+
+ var callback;
+
+ return {
+ send: function( headers, complete ) {
+
+ // Get a new xhr
+ var xhr = s.xhr(),
+ handle,
+ i;
+
+ // Open the socket
+ // Passing null username, generates a login popup on Opera (#2865)
+ if ( s.username ) {
+ xhr.open( s.type, s.url, s.async, s.username, s.password );
+ } else {
+ xhr.open( s.type, s.url, s.async );
+ }
+
+ // Apply custom fields if provided
+ if ( s.xhrFields ) {
+ for ( i in s.xhrFields ) {
+ xhr[ i ] = s.xhrFields[ i ];
+ }
+ }
+
+ // Override mime type if needed
+ if ( s.mimeType && xhr.overrideMimeType ) {
+ xhr.overrideMimeType( s.mimeType );
+ }
+
+ // X-Requested-With header
+ // For cross-domain requests, seeing as conditions for a preflight are
+ // akin to a jigsaw puzzle, we simply never set it to be sure.
+ // (it can always be set on a per-request basis or even using ajaxSetup)
+ // For same-domain requests, won't change header if already provided.
+ if ( !s.crossDomain && !headers["X-Requested-With"] ) {
+ headers[ "X-Requested-With" ] = "XMLHttpRequest";
+ }
+
+ // Need an extra try/catch for cross domain requests in Firefox 3
+ try {
+ for ( i in headers ) {
+ xhr.setRequestHeader( i, headers[ i ] );
+ }
+ } catch( _ ) {}
+
+ // Do send the request
+ // This may raise an exception which is actually
+ // handled in jQuery.ajax (so no try/catch here)
+ xhr.send( ( s.hasContent && s.data ) || null );
+
+ // Listener
+ callback = function( _, isAbort ) {
+
+ var status,
+ statusText,
+ responseHeaders,
+ responses,
+ xml;
+
+ // Firefox throws exceptions when accessing properties
+ // of an xhr when a network error occured
+ // http://helpful.knobs-dials.com/index.php/Component_returned_failure_code:_0x80040111_(NS_ERROR_NOT_AVAILABLE)
+ try {
+
+ // Was never called and is aborted or complete
+ if ( callback && ( isAbort || xhr.readyState === 4 ) ) {
+
+ // Only called once
+ callback = undefined;
+
+ // Do not keep as active anymore
+ if ( handle ) {
+ xhr.onreadystatechange = jQuery.noop;
+ if ( xhrOnUnloadAbort ) {
+ delete xhrCallbacks[ handle ];
+ }
+ }
+
+ // If it's an abort
+ if ( isAbort ) {
+ // Abort it manually if needed
+ if ( xhr.readyState !== 4 ) {
+ xhr.abort();
+ }
+ } else {
+ status = xhr.status;
+ responseHeaders = xhr.getAllResponseHeaders();
+ responses = {};
+ xml = xhr.responseXML;
+
+ // Construct response list
+ if ( xml && xml.documentElement /* #4958 */ ) {
+ responses.xml = xml;
+ }
+ responses.text = xhr.responseText;
+
+ // Firefox throws an exception when accessing
+ // statusText for faulty cross-domain requests
+ try {
+ statusText = xhr.statusText;
+ } catch( e ) {
+ // We normalize with Webkit giving an empty statusText
+ statusText = "";
+ }
+
+ // Filter status for non standard behaviors
+
+ // If the request is local and we have data: assume a success
+ // (success with no data won't get notified, that's the best we
+ // can do given current implementations)
+ if ( !status && s.isLocal && !s.crossDomain ) {
+ status = responses.text ? 200 : 404;
+ // IE - #1450: sometimes returns 1223 when it should be 204
+ } else if ( status === 1223 ) {
+ status = 204;
+ }
+ }
+ }
+ } catch( firefoxAccessException ) {
+ if ( !isAbort ) {
+ complete( -1, firefoxAccessException );
+ }
+ }
+
+ // Call complete if needed
+ if ( responses ) {
+ complete( status, statusText, responses, responseHeaders );
+ }
+ };
+
+ // if we're in sync mode or it's in cache
+ // and has been retrieved directly (IE6 & IE7)
+ // we need to manually fire the callback
+ if ( !s.async || xhr.readyState === 4 ) {
+ callback();
+ } else {
+ handle = ++xhrId;
+ if ( xhrOnUnloadAbort ) {
+ // Create the active xhrs callbacks list if needed
+ // and attach the unload handler
+ if ( !xhrCallbacks ) {
+ xhrCallbacks = {};
+ jQuery( window ).unload( xhrOnUnloadAbort );
+ }
+ // Add to list of active xhrs callbacks
+ xhrCallbacks[ handle ] = callback;
+ }
+ xhr.onreadystatechange = callback;
+ }
+ },
+
+ abort: function() {
+ if ( callback ) {
+ callback(0,1);
+ }
+ }
+ };
+ }
+ });
+}
+
+
+
+
+var elemdisplay = {},
+ iframe, iframeDoc,
+ rfxtypes = /^(?:toggle|show|hide)$/,
+ rfxnum = /^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,
+ timerId,
+ fxAttrs = [
+ // height animations
+ [ "height", "marginTop", "marginBottom", "paddingTop", "paddingBottom" ],
+ // width animations
+ [ "width", "marginLeft", "marginRight", "paddingLeft", "paddingRight" ],
+ // opacity animations
+ [ "opacity" ]
+ ],
+ fxNow,
+ requestAnimationFrame = window.webkitRequestAnimationFrame ||
+ window.mozRequestAnimationFrame ||
+ window.oRequestAnimationFrame;
+
+jQuery.fn.extend({
+ show: function( speed, easing, callback ) {
+ var elem, display;
+
+ if ( speed || speed === 0 ) {
+ return this.animate( genFx("show", 3), speed, easing, callback);
+
+ } else {
+ for ( var i = 0, j = this.length; i < j; i++ ) {
+ elem = this[i];
+
+ if ( elem.style ) {
+ display = elem.style.display;
+
+ // Reset the inline display of this element to learn if it is
+ // being hidden by cascaded rules or not
+ if ( !jQuery._data(elem, "olddisplay") && display === "none" ) {
+ display = elem.style.display = "";
+ }
+
+ // Set elements which have been overridden with display: none
+ // in a stylesheet to whatever the default browser style is
+ // for such an element
+ if ( display === "" && jQuery.css( elem, "display" ) === "none" ) {
+ jQuery._data(elem, "olddisplay", defaultDisplay(elem.nodeName));
+ }
+ }
+ }
+
+ // Set the display of most of the elements in a second loop
+ // to avoid the constant reflow
+ for ( i = 0; i < j; i++ ) {
+ elem = this[i];
+
+ if ( elem.style ) {
+ display = elem.style.display;
+
+ if ( display === "" || display === "none" ) {
+ elem.style.display = jQuery._data(elem, "olddisplay") || "";
+ }
+ }
+ }
+
+ return this;
+ }
+ },
+
+ hide: function( speed, easing, callback ) {
+ if ( speed || speed === 0 ) {
+ return this.animate( genFx("hide", 3), speed, easing, callback);
+
+ } else {
+ for ( var i = 0, j = this.length; i < j; i++ ) {
+ if ( this[i].style ) {
+ var display = jQuery.css( this[i], "display" );
+
+ if ( display !== "none" && !jQuery._data( this[i], "olddisplay" ) ) {
+ jQuery._data( this[i], "olddisplay", display );
+ }
+ }
+ }
+
+ // Set the display of the elements in a second loop
+ // to avoid the constant reflow
+ for ( i = 0; i < j; i++ ) {
+ if ( this[i].style ) {
+ this[i].style.display = "none";
+ }
+ }
+
+ return this;
+ }
+ },
+
+ // Save the old toggle function
+ _toggle: jQuery.fn.toggle,
+
+ toggle: function( fn, fn2, callback ) {
+ var bool = typeof fn === "boolean";
+
+ if ( jQuery.isFunction(fn) && jQuery.isFunction(fn2) ) {
+ this._toggle.apply( this, arguments );
+
+ } else if ( fn == null || bool ) {
+ this.each(function() {
+ var state = bool ? fn : jQuery(this).is(":hidden");
+ jQuery(this)[ state ? "show" : "hide" ]();
+ });
+
+ } else {
+ this.animate(genFx("toggle", 3), fn, fn2, callback);
+ }
+
+ return this;
+ },
+
+ fadeTo: function( speed, to, easing, callback ) {
+ return this.filter(":hidden").css("opacity", 0).show().end()
+ .animate({opacity: to}, speed, easing, callback);
+ },
+
+ animate: function( prop, speed, easing, callback ) {
+ var optall = jQuery.speed(speed, easing, callback);
+
+ if ( jQuery.isEmptyObject( prop ) ) {
+ return this.each( optall.complete, [ false ] );
+ }
+
+ // Do not change referenced properties as per-property easing will be lost
+ prop = jQuery.extend( {}, prop );
+
+ return this[ optall.queue === false ? "each" : "queue" ](function() {
+ // XXX 'this' does not always have a nodeName when running the
+ // test suite
+
+ if ( optall.queue === false ) {
+ jQuery._mark( this );
+ }
+
+ var opt = jQuery.extend( {}, optall ),
+ isElement = this.nodeType === 1,
+ hidden = isElement && jQuery(this).is(":hidden"),
+ name, val, p,
+ display, e,
+ parts, start, end, unit;
+
+ // will store per property easing and be used to determine when an animation is complete
+ opt.animatedProperties = {};
+
+ for ( p in prop ) {
+
+ // property name normalization
+ name = jQuery.camelCase( p );
+ if ( p !== name ) {
+ prop[ name ] = prop[ p ];
+ delete prop[ p ];
+ }
+
+ val = prop[ name ];
+
+ // easing resolution: per property > opt.specialEasing > opt.easing > 'swing' (default)
+ if ( jQuery.isArray( val ) ) {
+ opt.animatedProperties[ name ] = val[ 1 ];
+ val = prop[ name ] = val[ 0 ];
+ } else {
+ opt.animatedProperties[ name ] = opt.specialEasing && opt.specialEasing[ name ] || opt.easing || 'swing';
+ }
+
+ if ( val === "hide" && hidden || val === "show" && !hidden ) {
+ return opt.complete.call( this );
+ }
+
+ if ( isElement && ( name === "height" || name === "width" ) ) {
+ // Make sure that nothing sneaks out
+ // Record all 3 overflow attributes because IE does not
+ // change the overflow attribute when overflowX and
+ // overflowY are set to the same value
+ opt.overflow = [ this.style.overflow, this.style.overflowX, this.style.overflowY ];
+
+ // Set display property to inline-block for height/width
+ // animations on inline elements that are having width/height
+ // animated
+ if ( jQuery.css( this, "display" ) === "inline" &&
+ jQuery.css( this, "float" ) === "none" ) {
+ if ( !jQuery.support.inlineBlockNeedsLayout ) {
+ this.style.display = "inline-block";
+
+ } else {
+ display = defaultDisplay( this.nodeName );
+
+ // inline-level elements accept inline-block;
+ // block-level elements need to be inline with layout
+ if ( display === "inline" ) {
+ this.style.display = "inline-block";
+
+ } else {
+ this.style.display = "inline";
+ this.style.zoom = 1;
+ }
+ }
+ }
+ }
+ }
+
+ if ( opt.overflow != null ) {
+ this.style.overflow = "hidden";
+ }
+
+ for ( p in prop ) {
+ e = new jQuery.fx( this, opt, p );
+ val = prop[ p ];
+
+ if ( rfxtypes.test(val) ) {
+ e[ val === "toggle" ? hidden ? "show" : "hide" : val ]();
+
+ } else {
+ parts = rfxnum.exec( val );
+ start = e.cur();
+
+ if ( parts ) {
+ end = parseFloat( parts[2] );
+ unit = parts[3] || ( jQuery.cssNumber[ p ] ? "" : "px" );
+
+ // We need to compute starting value
+ if ( unit !== "px" ) {
+ jQuery.style( this, p, (end || 1) + unit);
+ start = ((end || 1) / e.cur()) * start;
+ jQuery.style( this, p, start + unit);
+ }
+
+ // If a +=/-= token was provided, we're doing a relative animation
+ if ( parts[1] ) {
+ end = ( (parts[ 1 ] === "-=" ? -1 : 1) * end ) + start;
+ }
+
+ e.custom( start, end, unit );
+
+ } else {
+ e.custom( start, val, "" );
+ }
+ }
+ }
+
+ // For JS strict compliance
+ return true;
+ });
+ },
+
+ stop: function( clearQueue, gotoEnd ) {
+ if ( clearQueue ) {
+ this.queue([]);
+ }
+
+ this.each(function() {
+ var timers = jQuery.timers,
+ i = timers.length;
+ // clear marker counters if we know they won't be
+ if ( !gotoEnd ) {
+ jQuery._unmark( true, this );
+ }
+ while ( i-- ) {
+ if ( timers[i].elem === this ) {
+ if (gotoEnd) {
+ // force the next step to be the last
+ timers[i](true);
+ }
+
+ timers.splice(i, 1);
+ }
+ }
+ });
+
+ // start the next in the queue if the last step wasn't forced
+ if ( !gotoEnd ) {
+ this.dequeue();
+ }
+
+ return this;
+ }
+
+});
+
+// Animations created synchronously will run synchronously
+function createFxNow() {
+ setTimeout( clearFxNow, 0 );
+ return ( fxNow = jQuery.now() );
+}
+
+function clearFxNow() {
+ fxNow = undefined;
+}
+
+// Generate parameters to create a standard animation
+function genFx( type, num ) {
+ var obj = {};
+
+ jQuery.each( fxAttrs.concat.apply([], fxAttrs.slice(0,num)), function() {
+ obj[ this ] = type;
+ });
+
+ return obj;
+}
+
+// Generate shortcuts for custom animations
+jQuery.each({
+ slideDown: genFx("show", 1),
+ slideUp: genFx("hide", 1),
+ slideToggle: genFx("toggle", 1),
+ fadeIn: { opacity: "show" },
+ fadeOut: { opacity: "hide" },
+ fadeToggle: { opacity: "toggle" }
+}, function( name, props ) {
+ jQuery.fn[ name ] = function( speed, easing, callback ) {
+ return this.animate( props, speed, easing, callback );
+ };
+});
+
+jQuery.extend({
+ speed: function( speed, easing, fn ) {
+ var opt = speed && typeof speed === "object" ? jQuery.extend({}, speed) : {
+ complete: fn || !fn && easing ||
+ jQuery.isFunction( speed ) && speed,
+ duration: speed,
+ easing: fn && easing || easing && !jQuery.isFunction(easing) && easing
+ };
+
+ opt.duration = jQuery.fx.off ? 0 : typeof opt.duration === "number" ? opt.duration :
+ opt.duration in jQuery.fx.speeds ? jQuery.fx.speeds[opt.duration] : jQuery.fx.speeds._default;
+
+ // Queueing
+ opt.old = opt.complete;
+ opt.complete = function( noUnmark ) {
+ if ( jQuery.isFunction( opt.old ) ) {
+ opt.old.call( this );
+ }
+
+ if ( opt.queue !== false ) {
+ jQuery.dequeue( this );
+ } else if ( noUnmark !== false ) {
+ jQuery._unmark( this );
+ }
+ };
+
+ return opt;
+ },
+
+ easing: {
+ linear: function( p, n, firstNum, diff ) {
+ return firstNum + diff * p;
+ },
+ swing: function( p, n, firstNum, diff ) {
+ return ((-Math.cos(p*Math.PI)/2) + 0.5) * diff + firstNum;
+ }
+ },
+
+ timers: [],
+
+ fx: function( elem, options, prop ) {
+ this.options = options;
+ this.elem = elem;
+ this.prop = prop;
+
+ options.orig = options.orig || {};
+ }
+
+});
+
+jQuery.fx.prototype = {
+ // Simple function for setting a style value
+ update: function() {
+ if ( this.options.step ) {
+ this.options.step.call( this.elem, this.now, this );
+ }
+
+ (jQuery.fx.step[this.prop] || jQuery.fx.step._default)( this );
+ },
+
+ // Get the current size
+ cur: function() {
+ if ( this.elem[this.prop] != null && (!this.elem.style || this.elem.style[this.prop] == null) ) {
+ return this.elem[ this.prop ];
+ }
+
+ var parsed,
+ r = jQuery.css( this.elem, this.prop );
+ // Empty strings, null, undefined and "auto" are converted to 0,
+ // complex values such as "rotate(1rad)" are returned as is,
+ // simple values such as "10px" are parsed to Float.
+ return isNaN( parsed = parseFloat( r ) ) ? !r || r === "auto" ? 0 : r : parsed;
+ },
+
+ // Start an animation from one number to another
+ custom: function( from, to, unit ) {
+ var self = this,
+ fx = jQuery.fx,
+ raf;
+
+ this.startTime = fxNow || createFxNow();
+ this.start = from;
+ this.end = to;
+ this.unit = unit || this.unit || ( jQuery.cssNumber[ this.prop ] ? "" : "px" );
+ this.now = this.start;
+ this.pos = this.state = 0;
+
+ function t( gotoEnd ) {
+ return self.step(gotoEnd);
+ }
+
+ t.elem = this.elem;
+
+ if ( t() && jQuery.timers.push(t) && !timerId ) {
+ // Use requestAnimationFrame instead of setInterval if available
+ if ( requestAnimationFrame ) {
+ timerId = true;
+ raf = function() {
+ // When timerId gets set to null at any point, this stops
+ if ( timerId ) {
+ requestAnimationFrame( raf );
+ fx.tick();
+ }
+ };
+ requestAnimationFrame( raf );
+ } else {
+ timerId = setInterval( fx.tick, fx.interval );
+ }
+ }
+ },
+
+ // Simple 'show' function
+ show: function() {
+ // Remember where we started, so that we can go back to it later
+ this.options.orig[this.prop] = jQuery.style( this.elem, this.prop );
+ this.options.show = true;
+
+ // Begin the animation
+ // Make sure that we start at a small width/height to avoid any
+ // flash of content
+ this.custom(this.prop === "width" || this.prop === "height" ? 1 : 0, this.cur());
+
+ // Start by showing the element
+ jQuery( this.elem ).show();
+ },
+
+ // Simple 'hide' function
+ hide: function() {
+ // Remember where we started, so that we can go back to it later
+ this.options.orig[this.prop] = jQuery.style( this.elem, this.prop );
+ this.options.hide = true;
+
+ // Begin the animation
+ this.custom(this.cur(), 0);
+ },
+
+ // Each step of an animation
+ step: function( gotoEnd ) {
+ var t = fxNow || createFxNow(),
+ done = true,
+ elem = this.elem,
+ options = this.options,
+ i, n;
+
+ if ( gotoEnd || t >= options.duration + this.startTime ) {
+ this.now = this.end;
+ this.pos = this.state = 1;
+ this.update();
+
+ options.animatedProperties[ this.prop ] = true;
+
+ for ( i in options.animatedProperties ) {
+ if ( options.animatedProperties[i] !== true ) {
+ done = false;
+ }
+ }
+
+ if ( done ) {
+ // Reset the overflow
+ if ( options.overflow != null && !jQuery.support.shrinkWrapBlocks ) {
+
+ jQuery.each( [ "", "X", "Y" ], function (index, value) {
+ elem.style[ "overflow" + value ] = options.overflow[index];
+ });
+ }
+
+ // Hide the element if the "hide" operation was done
+ if ( options.hide ) {
+ jQuery(elem).hide();
+ }
+
+ // Reset the properties, if the item has been hidden or shown
+ if ( options.hide || options.show ) {
+ for ( var p in options.animatedProperties ) {
+ jQuery.style( elem, p, options.orig[p] );
+ }
+ }
+
+ // Execute the complete function
+ options.complete.call( elem );
+ }
+
+ return false;
+
+ } else {
+ // classical easing cannot be used with an Infinity duration
+ if ( options.duration == Infinity ) {
+ this.now = t;
+ } else {
+ n = t - this.startTime;
+ this.state = n / options.duration;
+
+ // Perform the easing function, defaults to swing
+ this.pos = jQuery.easing[ options.animatedProperties[ this.prop ] ]( this.state, n, 0, 1, options.duration );
+ this.now = this.start + ((this.end - this.start) * this.pos);
+ }
+ // Perform the next step of the animation
+ this.update();
+ }
+
+ return true;
+ }
+};
+
+jQuery.extend( jQuery.fx, {
+ tick: function() {
+ for ( var timers = jQuery.timers, i = 0 ; i < timers.length ; ++i ) {
+ if ( !timers[i]() ) {
+ timers.splice(i--, 1);
+ }
+ }
+
+ if ( !timers.length ) {
+ jQuery.fx.stop();
+ }
+ },
+
+ interval: 13,
+
+ stop: function() {
+ clearInterval( timerId );
+ timerId = null;
+ },
+
+ speeds: {
+ slow: 600,
+ fast: 200,
+ // Default speed
+ _default: 400
+ },
+
+ step: {
+ opacity: function( fx ) {
+ jQuery.style( fx.elem, "opacity", fx.now );
+ },
+
+ _default: function( fx ) {
+ if ( fx.elem.style && fx.elem.style[ fx.prop ] != null ) {
+ fx.elem.style[ fx.prop ] = (fx.prop === "width" || fx.prop === "height" ? Math.max(0, fx.now) : fx.now) + fx.unit;
+ } else {
+ fx.elem[ fx.prop ] = fx.now;
+ }
+ }
+ }
+});
+
+if ( jQuery.expr && jQuery.expr.filters ) {
+ jQuery.expr.filters.animated = function( elem ) {
+ return jQuery.grep(jQuery.timers, function( fn ) {
+ return elem === fn.elem;
+ }).length;
+ };
+}
+
+// Try to restore the default display value of an element
+function defaultDisplay( nodeName ) {
+
+ if ( !elemdisplay[ nodeName ] ) {
+
+ var body = document.body,
+ elem = jQuery( "<" + nodeName + ">" ).appendTo( body ),
+ display = elem.css( "display" );
+
+ elem.remove();
+
+ // If the simple way fails,
+ // get element's real default display by attaching it to a temp iframe
+ if ( display === "none" || display === "" ) {
+ // No iframe to use yet, so create it
+ if ( !iframe ) {
+ iframe = document.createElement( "iframe" );
+ iframe.frameBorder = iframe.width = iframe.height = 0;
+ }
+
+ body.appendChild( iframe );
+
+ // Create a cacheable copy of the iframe document on first call.
+ // IE and Opera will allow us to reuse the iframeDoc without re-writing the fake HTML
+ // document to it; WebKit & Firefox won't allow reusing the iframe document.
+ if ( !iframeDoc || !iframe.createElement ) {
+ iframeDoc = ( iframe.contentWindow || iframe.contentDocument ).document;
+ iframeDoc.write( ( document.compatMode === "CSS1Compat" ? "<!doctype html>" : "" ) + "<html><body>" );
+ iframeDoc.close();
+ }
+
+ elem = iframeDoc.createElement( nodeName );
+
+ iframeDoc.body.appendChild( elem );
+
+ display = jQuery.css( elem, "display" );
+
+ body.removeChild( iframe );
+ }
+
+ // Store the correct default display
+ elemdisplay[ nodeName ] = display;
+ }
+
+ return elemdisplay[ nodeName ];
+}
+
+
+
+
+var rtable = /^t(?:able|d|h)$/i,
+ rroot = /^(?:body|html)$/i;
+
+if ( "getBoundingClientRect" in document.documentElement ) {
+ jQuery.fn.offset = function( options ) {
+ var elem = this[0], box;
+
+ if ( options ) {
+ return this.each(function( i ) {
+ jQuery.offset.setOffset( this, options, i );
+ });
+ }
+
+ if ( !elem || !elem.ownerDocument ) {
+ return null;
+ }
+
+ if ( elem === elem.ownerDocument.body ) {
+ return jQuery.offset.bodyOffset( elem );
+ }
+
+ try {
+ box = elem.getBoundingClientRect();
+ } catch(e) {}
+
+ var doc = elem.ownerDocument,
+ docElem = doc.documentElement;
+
+ // Make sure we're not dealing with a disconnected DOM node
+ if ( !box || !jQuery.contains( docElem, elem ) ) {
+ return box ? { top: box.top, left: box.left } : { top: 0, left: 0 };
+ }
+
+ var body = doc.body,
+ win = getWindow(doc),
+ clientTop = docElem.clientTop || body.clientTop || 0,
+ clientLeft = docElem.clientLeft || body.clientLeft || 0,
+ scrollTop = win.pageYOffset || jQuery.support.boxModel && docElem.scrollTop || body.scrollTop,
+ scrollLeft = win.pageXOffset || jQuery.support.boxModel && docElem.scrollLeft || body.scrollLeft,
+ top = box.top + scrollTop - clientTop,
+ left = box.left + scrollLeft - clientLeft;
+
+ return { top: top, left: left };
+ };
+
+} else {
+ jQuery.fn.offset = function( options ) {
+ var elem = this[0];
+
+ if ( options ) {
+ return this.each(function( i ) {
+ jQuery.offset.setOffset( this, options, i );
+ });
+ }
+
+ if ( !elem || !elem.ownerDocument ) {
+ return null;
+ }
+
+ if ( elem === elem.ownerDocument.body ) {
+ return jQuery.offset.bodyOffset( elem );
+ }
+
+ jQuery.offset.initialize();
+
+ var computedStyle,
+ offsetParent = elem.offsetParent,
+ prevOffsetParent = elem,
+ doc = elem.ownerDocument,
+ docElem = doc.documentElement,
+ body = doc.body,
+ defaultView = doc.defaultView,
+ prevComputedStyle = defaultView ? defaultView.getComputedStyle( elem, null ) : elem.currentStyle,
+ top = elem.offsetTop,
+ left = elem.offsetLeft;
+
+ while ( (elem = elem.parentNode) && elem !== body && elem !== docElem ) {
+ if ( jQuery.offset.supportsFixedPosition && prevComputedStyle.position === "fixed" ) {
+ break;
+ }
+
+ computedStyle = defaultView ? defaultView.getComputedStyle(elem, null) : elem.currentStyle;
+ top -= elem.scrollTop;
+ left -= elem.scrollLeft;
+
+ if ( elem === offsetParent ) {
+ top += elem.offsetTop;
+ left += elem.offsetLeft;
+
+ if ( jQuery.offset.doesNotAddBorder && !(jQuery.offset.doesAddBorderForTableAndCells && rtable.test(elem.nodeName)) ) {
+ top += parseFloat( computedStyle.borderTopWidth ) || 0;
+ left += parseFloat( computedStyle.borderLeftWidth ) || 0;
+ }
+
+ prevOffsetParent = offsetParent;
+ offsetParent = elem.offsetParent;
+ }
+
+ if ( jQuery.offset.subtractsBorderForOverflowNotVisible && computedStyle.overflow !== "visible" ) {
+ top += parseFloat( computedStyle.borderTopWidth ) || 0;
+ left += parseFloat( computedStyle.borderLeftWidth ) || 0;
+ }
+
+ prevComputedStyle = computedStyle;
+ }
+
+ if ( prevComputedStyle.position === "relative" || prevComputedStyle.position === "static" ) {
+ top += body.offsetTop;
+ left += body.offsetLeft;
+ }
+
+ if ( jQuery.offset.supportsFixedPosition && prevComputedStyle.position === "fixed" ) {
+ top += Math.max( docElem.scrollTop, body.scrollTop );
+ left += Math.max( docElem.scrollLeft, body.scrollLeft );
+ }
+
+ return { top: top, left: left };
+ };
+}
+
+jQuery.offset = {
+ initialize: function() {
+ var body = document.body, container = document.createElement("div"), innerDiv, checkDiv, table, td, bodyMarginTop = parseFloat( jQuery.css(body, "marginTop") ) || 0,
+ html = "<div style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;'><div></div></div><table style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;' cellpadding='0' cellspacing='0'><tr><td></td></tr></table>";
+
+ jQuery.extend( container.style, { position: "absolute", top: 0, left: 0, margin: 0, border: 0, width: "1px", height: "1px", visibility: "hidden" } );
+
+ container.innerHTML = html;
+ body.insertBefore( container, body.firstChild );
+ innerDiv = container.firstChild;
+ checkDiv = innerDiv.firstChild;
+ td = innerDiv.nextSibling.firstChild.firstChild;
+
+ this.doesNotAddBorder = (checkDiv.offsetTop !== 5);
+ this.doesAddBorderForTableAndCells = (td.offsetTop === 5);
+
+ checkDiv.style.position = "fixed";
+ checkDiv.style.top = "20px";
+
+ // safari subtracts parent border width here which is 5px
+ this.supportsFixedPosition = (checkDiv.offsetTop === 20 || checkDiv.offsetTop === 15);
+ checkDiv.style.position = checkDiv.style.top = "";
+
+ innerDiv.style.overflow = "hidden";
+ innerDiv.style.position = "relative";
+
+ this.subtractsBorderForOverflowNotVisible = (checkDiv.offsetTop === -5);
+
+ this.doesNotIncludeMarginInBodyOffset = (body.offsetTop !== bodyMarginTop);
+
+ body.removeChild( container );
+ jQuery.offset.initialize = jQuery.noop;
+ },
+
+ bodyOffset: function( body ) {
+ var top = body.offsetTop,
+ left = body.offsetLeft;
+
+ jQuery.offset.initialize();
+
+ if ( jQuery.offset.doesNotIncludeMarginInBodyOffset ) {
+ top += parseFloat( jQuery.css(body, "marginTop") ) || 0;
+ left += parseFloat( jQuery.css(body, "marginLeft") ) || 0;
+ }
+
+ return { top: top, left: left };
+ },
+
+ setOffset: function( elem, options, i ) {
+ var position = jQuery.css( elem, "position" );
+
+ // set position first, in-case top/left are set even on static elem
+ if ( position === "static" ) {
+ elem.style.position = "relative";
+ }
+
+ var curElem = jQuery( elem ),
+ curOffset = curElem.offset(),
+ curCSSTop = jQuery.css( elem, "top" ),
+ curCSSLeft = jQuery.css( elem, "left" ),
+ calculatePosition = (position === "absolute" || position === "fixed") && jQuery.inArray("auto", [curCSSTop, curCSSLeft]) > -1,
+ props = {}, curPosition = {}, curTop, curLeft;
+
+ // need to be able to calculate position if either top or left is auto and position is either absolute or fixed
+ if ( calculatePosition ) {
+ curPosition = curElem.position();
+ curTop = curPosition.top;
+ curLeft = curPosition.left;
+ } else {
+ curTop = parseFloat( curCSSTop ) || 0;
+ curLeft = parseFloat( curCSSLeft ) || 0;
+ }
+
+ if ( jQuery.isFunction( options ) ) {
+ options = options.call( elem, i, curOffset );
+ }
+
+ if (options.top != null) {
+ props.top = (options.top - curOffset.top) + curTop;
+ }
+ if (options.left != null) {
+ props.left = (options.left - curOffset.left) + curLeft;
+ }
+
+ if ( "using" in options ) {
+ options.using.call( elem, props );
+ } else {
+ curElem.css( props );
+ }
+ }
+};
+
+
+jQuery.fn.extend({
+ position: function() {
+ if ( !this[0] ) {
+ return null;
+ }
+
+ var elem = this[0],
+
+ // Get *real* offsetParent
+ offsetParent = this.offsetParent(),
+
+ // Get correct offsets
+ offset = this.offset(),
+ parentOffset = rroot.test(offsetParent[0].nodeName) ? { top: 0, left: 0 } : offsetParent.offset();
+
+ // Subtract element margins
+ // note: when an element has margin: auto the offsetLeft and marginLeft
+ // are the same in Safari causing offset.left to incorrectly be 0
+ offset.top -= parseFloat( jQuery.css(elem, "marginTop") ) || 0;
+ offset.left -= parseFloat( jQuery.css(elem, "marginLeft") ) || 0;
+
+ // Add offsetParent borders
+ parentOffset.top += parseFloat( jQuery.css(offsetParent[0], "borderTopWidth") ) || 0;
+ parentOffset.left += parseFloat( jQuery.css(offsetParent[0], "borderLeftWidth") ) || 0;
+
+ // Subtract the two offsets
+ return {
+ top: offset.top - parentOffset.top,
+ left: offset.left - parentOffset.left
+ };
+ },
+
+ offsetParent: function() {
+ return this.map(function() {
+ var offsetParent = this.offsetParent || document.body;
+ while ( offsetParent && (!rroot.test(offsetParent.nodeName) && jQuery.css(offsetParent, "position") === "static") ) {
+ offsetParent = offsetParent.offsetParent;
+ }
+ return offsetParent;
+ });
+ }
+});
+
+
+// Create scrollLeft and scrollTop methods
+jQuery.each( ["Left", "Top"], function( i, name ) {
+ var method = "scroll" + name;
+
+ jQuery.fn[ method ] = function( val ) {
+ var elem, win;
+
+ if ( val === undefined ) {
+ elem = this[ 0 ];
+
+ if ( !elem ) {
+ return null;
+ }
+
+ win = getWindow( elem );
+
+ // Return the scroll offset
+ return win ? ("pageXOffset" in win) ? win[ i ? "pageYOffset" : "pageXOffset" ] :
+ jQuery.support.boxModel && win.document.documentElement[ method ] ||
+ win.document.body[ method ] :
+ elem[ method ];
+ }
+
+ // Set the scroll offset
+ return this.each(function() {
+ win = getWindow( this );
+
+ if ( win ) {
+ win.scrollTo(
+ !i ? val : jQuery( win ).scrollLeft(),
+ i ? val : jQuery( win ).scrollTop()
+ );
+
+ } else {
+ this[ method ] = val;
+ }
+ });
+ };
+});
+
+function getWindow( elem ) {
+ return jQuery.isWindow( elem ) ?
+ elem :
+ elem.nodeType === 9 ?
+ elem.defaultView || elem.parentWindow :
+ false;
+}
+
+
+
+
+// Create width, height, innerHeight, innerWidth, outerHeight and outerWidth methods
+jQuery.each([ "Height", "Width" ], function( i, name ) {
+
+ var type = name.toLowerCase();
+
+ // innerHeight and innerWidth
+ jQuery.fn[ "inner" + name ] = function() {
+ var elem = this[0];
+ return elem && elem.style ?
+ parseFloat( jQuery.css( elem, type, "padding" ) ) :
+ null;
+ };
+
+ // outerHeight and outerWidth
+ jQuery.fn[ "outer" + name ] = function( margin ) {
+ var elem = this[0];
+ return elem && elem.style ?
+ parseFloat( jQuery.css( elem, type, margin ? "margin" : "border" ) ) :
+ null;
+ };
+
+ jQuery.fn[ type ] = function( size ) {
+ // Get window width or height
+ var elem = this[0];
+ if ( !elem ) {
+ return size == null ? null : this;
+ }
+
+ if ( jQuery.isFunction( size ) ) {
+ return this.each(function( i ) {
+ var self = jQuery( this );
+ self[ type ]( size.call( this, i, self[ type ]() ) );
+ });
+ }
+
+ if ( jQuery.isWindow( elem ) ) {
+ // Everyone else use document.documentElement or document.body depending on Quirks vs Standards mode
+ // 3rd condition allows Nokia support, as it supports the docElem prop but not CSS1Compat
+ var docElemProp = elem.document.documentElement[ "client" + name ];
+ return elem.document.compatMode === "CSS1Compat" && docElemProp ||
+ elem.document.body[ "client" + name ] || docElemProp;
+
+ // Get document width or height
+ } else if ( elem.nodeType === 9 ) {
+ // Either scroll[Width/Height] or offset[Width/Height], whichever is greater
+ return Math.max(
+ elem.documentElement["client" + name],
+ elem.body["scroll" + name], elem.documentElement["scroll" + name],
+ elem.body["offset" + name], elem.documentElement["offset" + name]
+ );
+
+ // Get or set width or height on the element
+ } else if ( size === undefined ) {
+ var orig = jQuery.css( elem, type ),
+ ret = parseFloat( orig );
+
+ return jQuery.isNaN( ret ) ? orig : ret;
+
+ // Set the width or height on the element (default to pixels if value is unitless)
+ } else {
+ return this.css( type, typeof size === "string" ? size : size + "px" );
+ }
+ };
+
+});
+
+
+// Expose jQuery to the global object
+window.jQuery = window.$ = jQuery;
+})(window);
diff --git a/bug/bug/jquery-validation-1.8.1.zip b/bug/bug/jquery-validation-1.8.1.zip
new file mode 100644
index 0000000..44815b0
--- /dev/null
+++ b/bug/bug/jquery-validation-1.8.1.zip
Binary files differ
diff --git a/bug/bug/jquery-validation-1.8.1/README.md b/bug/bug/jquery-validation-1.8.1/README.md
new file mode 100644
index 0000000..7a4a427
--- /dev/null
+++ b/bug/bug/jquery-validation-1.8.1/README.md
@@ -0,0 +1,8 @@
+[jQuery Validation Plugin](http://bassistance.de/jquery-plugins/jquery-plugin-validation/) - Form validation made easy
+================================
+
+The jQuery Validation Plugin provides drop-in validation for your existing forms, while making all kinds of customizations to fit your application really easy.
+
+If you've wrote custom methods that you'd like to contribute to additional-methods.js, create a branch, add the method there and send a pull request for that branch.
+
+If you've wrote a patch for some bug listed on http://plugins.jquery.com/project/issues/validate, please provide a link to that issue in your commit message.
diff --git a/bug/bug/jquery-validation-1.8.1/additional-methods.js b/bug/bug/jquery-validation-1.8.1/additional-methods.js
new file mode 100644
index 0000000..7f3cccd
--- /dev/null
+++ b/bug/bug/jquery-validation-1.8.1/additional-methods.js
@@ -0,0 +1,280 @@
+/**
+ * jQuery Validation Plugin 1.8.1
+ *
+ * http://bassistance.de/jquery-plugins/jquery-plugin-validation/
+ * http://docs.jquery.com/Plugins/Validation
+ *
+ * Copyright (c) 2006 - 2011 Jörn Zaefferer
+ *
+ * Dual licensed under the MIT and GPL licenses:
+ * http://www.opensource.org/licenses/mit-license.php
+ * http://www.gnu.org/licenses/gpl.html
+ */
+
+(function() {
+
+ function stripHtml(value) {
+ // remove html tags and space chars
+ return value.replace(/<.[^<>]*?>/g, ' ').replace(/&nbsp;|&#160;/gi, ' ')
+ // remove numbers and punctuation
+ .replace(/[0-9.(),;:!?%#$'"_+=\/-]*/g,'');
+ }
+ jQuery.validator.addMethod("maxWords", function(value, element, params) {
+ return this.optional(element) || stripHtml(value).match(/\b\w+\b/g).length < params;
+ }, jQuery.validator.format("Please enter {0} words or less."));
+
+ jQuery.validator.addMethod("minWords", function(value, element, params) {
+ return this.optional(element) || stripHtml(value).match(/\b\w+\b/g).length >= params;
+ }, jQuery.validator.format("Please enter at least {0} words."));
+
+ jQuery.validator.addMethod("rangeWords", function(value, element, params) {
+ return this.optional(element) || stripHtml(value).match(/\b\w+\b/g).length >= params[0] && value.match(/bw+b/g).length < params[1];
+ }, jQuery.validator.format("Please enter between {0} and {1} words."));
+
+})();
+
+jQuery.validator.addMethod("letterswithbasicpunc", function(value, element) {
+ return this.optional(element) || /^[a-z-.,()'\"\s]+$/i.test(value);
+}, "Letters or punctuation only please");
+
+jQuery.validator.addMethod("alphanumeric", function(value, element) {
+ return this.optional(element) || /^\w+$/i.test(value);
+}, "Letters, numbers, spaces or underscores only please");
+
+jQuery.validator.addMethod("lettersonly", function(value, element) {
+ return this.optional(element) || /^[a-z]+$/i.test(value);
+}, "Letters only please");
+
+jQuery.validator.addMethod("nowhitespace", function(value, element) {
+ return this.optional(element) || /^\S+$/i.test(value);
+}, "No white space please");
+
+jQuery.validator.addMethod("ziprange", function(value, element) {
+ return this.optional(element) || /^90[2-5]\d\{2}-\d{4}$/.test(value);
+}, "Your ZIP-code must be in the range 902xx-xxxx to 905-xx-xxxx");
+
+jQuery.validator.addMethod("integer", function(value, element) {
+ return this.optional(element) || /^-?\d+$/.test(value);
+}, "A positive or negative non-decimal number please");
+
+/**
+* Return true, if the value is a valid vehicle identification number (VIN).
+*
+* Works with all kind of text inputs.
+*
+* @example <input type="text" size="20" name="VehicleID" class="{required:true,vinUS:true}" />
+* @desc Declares a required input element whose value must be a valid vehicle identification number.
+*
+* @name jQuery.validator.methods.vinUS
+* @type Boolean
+* @cat Plugins/Validate/Methods
+*/
+jQuery.validator.addMethod(
+ "vinUS",
+ function(v){
+ if (v.length != 17)
+ return false;
+ var i, n, d, f, cd, cdv;
+ var LL = ["A","B","C","D","E","F","G","H","J","K","L","M","N","P","R","S","T","U","V","W","X","Y","Z"];
+ var VL = [1,2,3,4,5,6,7,8,1,2,3,4,5,7,9,2,3,4,5,6,7,8,9];
+ var FL = [8,7,6,5,4,3,2,10,0,9,8,7,6,5,4,3,2];
+ var rs = 0;
+ for(i = 0; i < 17; i++){
+ f = FL[i];
+ d = v.slice(i,i+1);
+ if(i == 8){
+ cdv = d;
+ }
+ if(!isNaN(d)){
+ d *= f;
+ }
+ else{
+ for(n = 0; n < LL.length; n++){
+ if(d.toUpperCase() === LL[n]){
+ d = VL[n];
+ d *= f;
+ if(isNaN(cdv) && n == 8){
+ cdv = LL[n];
+ }
+ break;
+ }
+ }
+ }
+ rs += d;
+ }
+ cd = rs % 11;
+ if(cd == 10){cd = "X";}
+ if(cd == cdv){return true;}
+ return false;
+ },
+ "The specified vehicle identification number (VIN) is invalid."
+);
+
+/**
+ * Return true, if the value is a valid date, also making this formal check dd/mm/yyyy.
+ *
+ * @example jQuery.validator.methods.date("01/01/1900")
+ * @result true
+ *
+ * @example jQuery.validator.methods.date("01/13/1990")
+ * @result false
+ *
+ * @example jQuery.validator.methods.date("01.01.1900")
+ * @result false
+ *
+ * @example <input name="pippo" class="{dateITA:true}" />
+ * @desc Declares an optional input element whose value must be a valid date.
+ *
+ * @name jQuery.validator.methods.dateITA
+ * @type Boolean
+ * @cat Plugins/Validate/Methods
+ */
+jQuery.validator.addMethod(
+ "dateITA",
+ function(value, element) {
+ var check = false;
+ var re = /^\d{1,2}\/\d{1,2}\/\d{4}$/;
+ if( re.test(value)){
+ var adata = value.split('/');
+ var gg = parseInt(adata[0],10);
+ var mm = parseInt(adata[1],10);
+ var aaaa = parseInt(adata[2],10);
+ var xdata = new Date(aaaa,mm-1,gg);
+ if ( ( xdata.getFullYear() == aaaa ) && ( xdata.getMonth () == mm - 1 ) && ( xdata.getDate() == gg ) )
+ check = true;
+ else
+ check = false;
+ } else
+ check = false;
+ return this.optional(element) || check;
+ },
+ "Please enter a correct date"
+);
+
+jQuery.validator.addMethod("dateNL", function(value, element) {
+ return this.optional(element) || /^\d\d?[\.\/-]\d\d?[\.\/-]\d\d\d?\d?$/.test(value);
+ }, "Vul hier een geldige datum in."
+);
+
+jQuery.validator.addMethod("time", function(value, element) {
+ return this.optional(element) || /^([01][0-9])|(2[0123]):([0-5])([0-9])$/.test(value);
+ }, "Please enter a valid time, between 00:00 and 23:59"
+);
+
+/**
+ * matches US phone number format
+ *
+ * where the area code may not start with 1 and the prefix may not start with 1
+ * allows '-' or ' ' as a separator and allows parens around area code
+ * some people may want to put a '1' in front of their number
+ *
+ * 1(212)-999-2345
+ * or
+ * 212 999 2344
+ * or
+ * 212-999-0983
+ *
+ * but not
+ * 111-123-5434
+ * and not
+ * 212 123 4567
+ */
+jQuery.validator.addMethod("phoneUS", function(phone_number, element) {
+ phone_number = phone_number.replace(/\s+/g, "");
+ return this.optional(element) || phone_number.length > 9 &&
+ phone_number.match(/^(1-?)?(\([2-9]\d{2}\)|[2-9]\d{2})-?[2-9]\d{2}-?\d{4}$/);
+}, "Please specify a valid phone number");
+
+jQuery.validator.addMethod('phoneUK', function(phone_number, element) {
+return this.optional(element) || phone_number.length > 9 &&
+phone_number.match(/^(\(?(0|\+44)[1-9]{1}\d{1,4}?\)?\s?\d{3,4}\s?\d{3,4})$/);
+}, 'Please specify a valid phone number');
+
+jQuery.validator.addMethod('mobileUK', function(phone_number, element) {
+return this.optional(element) || phone_number.length > 9 &&
+phone_number.match(/^((0|\+44)7(5|6|7|8|9){1}\d{2}\s?\d{6})$/);
+}, 'Please specify a valid mobile number');
+
+// TODO check if value starts with <, otherwise don't try stripping anything
+jQuery.validator.addMethod("strippedminlength", function(value, element, param) {
+ return jQuery(value).text().length >= param;
+}, jQuery.validator.format("Please enter at least {0} characters"));
+
+// same as email, but TLD is optional
+jQuery.validator.addMethod("email2", function(value, element, param) {
+ return this.optional(element) || /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)*(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i.test(value);
+}, jQuery.validator.messages.email);
+
+// same as url, but TLD is optional
+jQuery.validator.addMethod("url2", function(value, element, param) {
+ return this.optional(element) || /^(https?|ftp):\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)*(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(\#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/i.test(value);
+}, jQuery.validator.messages.url);
+
+// NOTICE: Modified version of Castle.Components.Validator.CreditCardValidator
+// Redistributed under the the Apache License 2.0 at http://www.apache.org/licenses/LICENSE-2.0
+// Valid Types: mastercard, visa, amex, dinersclub, enroute, discover, jcb, unknown, all (overrides all other settings)
+jQuery.validator.addMethod("creditcardtypes", function(value, element, param) {
+
+ if (/[^0-9-]+/.test(value))
+ return false;
+
+ value = value.replace(/\D/g, "");
+
+ var validTypes = 0x0000;
+
+ if (param.mastercard)
+ validTypes |= 0x0001;
+ if (param.visa)
+ validTypes |= 0x0002;
+ if (param.amex)
+ validTypes |= 0x0004;
+ if (param.dinersclub)
+ validTypes |= 0x0008;
+ if (param.enroute)
+ validTypes |= 0x0010;
+ if (param.discover)
+ validTypes |= 0x0020;
+ if (param.jcb)
+ validTypes |= 0x0040;
+ if (param.unknown)
+ validTypes |= 0x0080;
+ if (param.all)
+ validTypes = 0x0001 | 0x0002 | 0x0004 | 0x0008 | 0x0010 | 0x0020 | 0x0040 | 0x0080;
+
+ if (validTypes & 0x0001 && /^(51|52|53|54|55)/.test(value)) { //mastercard
+ return value.length == 16;
+ }
+ if (validTypes & 0x0002 && /^(4)/.test(value)) { //visa
+ return value.length == 16;
+ }
+ if (validTypes & 0x0004 && /^(34|37)/.test(value)) { //amex
+ return value.length == 15;
+ }
+ if (validTypes & 0x0008 && /^(300|301|302|303|304|305|36|38)/.test(value)) { //dinersclub
+ return value.length == 14;
+ }
+ if (validTypes & 0x0010 && /^(2014|2149)/.test(value)) { //enroute
+ return value.length == 15;
+ }
+ if (validTypes & 0x0020 && /^(6011)/.test(value)) { //discover
+ return value.length == 16;
+ }
+ if (validTypes & 0x0040 && /^(3)/.test(value)) { //jcb
+ return value.length == 16;
+ }
+ if (validTypes & 0x0040 && /^(2131|1800)/.test(value)) { //jcb
+ return value.length == 15;
+ }
+ if (validTypes & 0x0080) { //unknown
+ return true;
+ }
+ return false;
+}, "Please enter a valid credit card number.");
+
+jQuery.validator.addMethod("ipv4", function(value, element, param) {
+ return this.optional(element) || /^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/i.test(value);
+}, "Please enter a valid IP v4 address.");
+
+jQuery.validator.addMethod("ipv6", function(value, element, param) {
+ return this.optional(element) || /^((([0-9A-Fa-f]{1,4}:){7}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){6}:[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){5}:([0-9A-Fa-f]{1,4}:)?[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){4}:([0-9A-Fa-f]{1,4}:){0,2}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){3}:([0-9A-Fa-f]{1,4}:){0,3}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){2}:([0-9A-Fa-f]{1,4}:){0,4}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){6}((\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b)\.){3}(\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b))|(([0-9A-Fa-f]{1,4}:){0,5}:((\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b)\.){3}(\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b))|(::([0-9A-Fa-f]{1,4}:){0,5}((\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b)\.){3}(\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b))|([0-9A-Fa-f]{1,4}::([0-9A-Fa-f]{1,4}:){0,5}[0-9A-Fa-f]{1,4})|(::([0-9A-Fa-f]{1,4}:){0,6}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){1,7}:))$/i.test(value);
+}, "Please enter a valid IP v6 address.");
diff --git a/bug/bug/jquery-validation-1.8.1/additional-methods.min.js b/bug/bug/jquery-validation-1.8.1/additional-methods.min.js
new file mode 100644
index 0000000..ff5dff3
--- /dev/null
+++ b/bug/bug/jquery-validation-1.8.1/additional-methods.min.js
@@ -0,0 +1,28 @@
+/**
+ * jQuery Validation Plugin 1.8.1
+ *
+ * http://bassistance.de/jquery-plugins/jquery-plugin-validation/
+ * http://docs.jquery.com/Plugins/Validation
+ *
+ * Copyright (c) 2006 - 2011 Jörn Zaefferer
+ *
+ * Dual licensed under the MIT and GPL licenses:
+ * http://www.opensource.org/licenses/mit-license.php
+ * http://www.gnu.org/licenses/gpl.html
+ */
+(function(){function a(b){return b.replace(/<.[^<>]*?>/g," ").replace(/&nbsp;|&#160;/gi," ").replace(/[0-9.(),;:!?%#$'"_+=\/-]*/g,"")}jQuery.validator.addMethod("maxWords",function(b,c,d){return this.optional(c)||a(b).match(/\b\w+\b/g).length<d},jQuery.validator.format("Please enter {0} words or less."));jQuery.validator.addMethod("minWords",function(b,c,d){return this.optional(c)||a(b).match(/\b\w+\b/g).length>=d},jQuery.validator.format("Please enter at least {0} words."));jQuery.validator.addMethod("rangeWords",
+function(b,c,d){return this.optional(c)||a(b).match(/\b\w+\b/g).length>=d[0]&&b.match(/bw+b/g).length<d[1]},jQuery.validator.format("Please enter between {0} and {1} words."))})();jQuery.validator.addMethod("letterswithbasicpunc",function(a,b){return this.optional(b)||/^[a-z-.,()'\"\s]+$/i.test(a)},"Letters or punctuation only please");jQuery.validator.addMethod("alphanumeric",function(a,b){return this.optional(b)||/^\w+$/i.test(a)},"Letters, numbers, spaces or underscores only please");
+jQuery.validator.addMethod("lettersonly",function(a,b){return this.optional(b)||/^[a-z]+$/i.test(a)},"Letters only please");jQuery.validator.addMethod("nowhitespace",function(a,b){return this.optional(b)||/^\S+$/i.test(a)},"No white space please");jQuery.validator.addMethod("ziprange",function(a,b){return this.optional(b)||/^90[2-5]\d\{2}-\d{4}$/.test(a)},"Your ZIP-code must be in the range 902xx-xxxx to 905-xx-xxxx");
+jQuery.validator.addMethod("integer",function(a,b){return this.optional(b)||/^-?\d+$/.test(a)},"A positive or negative non-decimal number please");
+jQuery.validator.addMethod("vinUS",function(a){if(a.length!=17)return false;var b,c,d,f,e,g=["A","B","C","D","E","F","G","H","J","K","L","M","N","P","R","S","T","U","V","W","X","Y","Z"],i=[1,2,3,4,5,6,7,8,1,2,3,4,5,7,9,2,3,4,5,6,7,8,9],j=[8,7,6,5,4,3,2,10,0,9,8,7,6,5,4,3,2],h=0;for(b=0;b<17;b++){f=j[b];d=a.slice(b,b+1);if(b==8)e=d;if(isNaN(d))for(c=0;c<g.length;c++){if(d.toUpperCase()===g[c]){d=i[c];d*=f;if(isNaN(e)&&c==8)e=g[c];break}}else d*=f;h+=d}a=h%11;if(a==10)a="X";if(a==e)return true;return false},
+"The specified vehicle identification number (VIN) is invalid.");jQuery.validator.addMethod("dateITA",function(a,b){var c=false;if(/^\d{1,2}\/\d{1,2}\/\d{4}$/.test(a)){var d=a.split("/");c=parseInt(d[0],10);var f=parseInt(d[1],10);d=parseInt(d[2],10);var e=new Date(d,f-1,c);c=e.getFullYear()==d&&e.getMonth()==f-1&&e.getDate()==c?true:false}else c=false;return this.optional(b)||c},"Please enter a correct date");
+jQuery.validator.addMethod("dateNL",function(a,b){return this.optional(b)||/^\d\d?[\.\/-]\d\d?[\.\/-]\d\d\d?\d?$/.test(a)},"Vul hier een geldige datum in.");jQuery.validator.addMethod("time",function(a,b){return this.optional(b)||/^([01][0-9])|(2[0123]):([0-5])([0-9])$/.test(a)},"Please enter a valid time, between 00:00 and 23:59");
+jQuery.validator.addMethod("phoneUS",function(a,b){a=a.replace(/\s+/g,"");return this.optional(b)||a.length>9&&a.match(/^(1-?)?(\([2-9]\d{2}\)|[2-9]\d{2})-?[2-9]\d{2}-?\d{4}$/)},"Please specify a valid phone number");jQuery.validator.addMethod("phoneUK",function(a,b){return this.optional(b)||a.length>9&&a.match(/^(\(?(0|\+44)[1-9]{1}\d{1,4}?\)?\s?\d{3,4}\s?\d{3,4})$/)},"Please specify a valid phone number");
+jQuery.validator.addMethod("mobileUK",function(a,b){return this.optional(b)||a.length>9&&a.match(/^((0|\+44)7(5|6|7|8|9){1}\d{2}\s?\d{6})$/)},"Please specify a valid mobile number");jQuery.validator.addMethod("strippedminlength",function(a,b,c){return jQuery(a).text().length>=c},jQuery.validator.format("Please enter at least {0} characters"));
+jQuery.validator.addMethod("email2",function(a,b){return this.optional(b)||/^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)*(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i.test(a)},jQuery.validator.messages.email);
+jQuery.validator.addMethod("url2",function(a,b){return this.optional(b)||/^(https?|ftp):\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)*(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(\#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/i.test(a)},
+jQuery.validator.messages.url);
+jQuery.validator.addMethod("creditcardtypes",function(a,b,c){if(/[^0-9-]+/.test(a))return false;a=a.replace(/\D/g,"");b=0;if(c.mastercard)b|=1;if(c.visa)b|=2;if(c.amex)b|=4;if(c.dinersclub)b|=8;if(c.enroute)b|=16;if(c.discover)b|=32;if(c.jcb)b|=64;if(c.unknown)b|=128;if(c.all)b=255;if(b&1&&/^(51|52|53|54|55)/.test(a))return a.length==16;if(b&2&&/^(4)/.test(a))return a.length==16;if(b&4&&/^(34|37)/.test(a))return a.length==15;if(b&8&&/^(300|301|302|303|304|305|36|38)/.test(a))return a.length==14;if(b&
+16&&/^(2014|2149)/.test(a))return a.length==15;if(b&32&&/^(6011)/.test(a))return a.length==16;if(b&64&&/^(3)/.test(a))return a.length==16;if(b&64&&/^(2131|1800)/.test(a))return a.length==15;if(b&128)return true;return false},"Please enter a valid credit card number.");
+jQuery.validator.addMethod("ipv4",function(a,b){return this.optional(b)||/^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/i.test(a)},"Please enter a valid IP v4 address.");
+jQuery.validator.addMethod("ipv6",function(a,b){return this.optional(b)||/^((([0-9A-Fa-f]{1,4}:){7}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){6}:[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){5}:([0-9A-Fa-f]{1,4}:)?[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){4}:([0-9A-Fa-f]{1,4}:){0,2}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){3}:([0-9A-Fa-f]{1,4}:){0,3}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){2}:([0-9A-Fa-f]{1,4}:){0,4}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){6}((\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b)\.){3}(\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b))|(([0-9A-Fa-f]{1,4}:){0,5}:((\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b)\.){3}(\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b))|(::([0-9A-Fa-f]{1,4}:){0,5}((\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b)\.){3}(\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b))|([0-9A-Fa-f]{1,4}::([0-9A-Fa-f]{1,4}:){0,5}[0-9A-Fa-f]{1,4})|(::([0-9A-Fa-f]{1,4}:){0,6}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){1,7}:))$/i.test(a)},"Please enter a valid IP v6 address.");
diff --git a/bug/bug/jquery-validation-1.8.1/changelog.txt b/bug/bug/jquery-validation-1.8.1/changelog.txt
new file mode 100644
index 0000000..15e59ec
--- /dev/null
+++ b/bug/bug/jquery-validation-1.8.1/changelog.txt
@@ -0,0 +1,258 @@
+1.9.0
+---
+* Added Thai (TH) localization, fixes #85
+* Added Vietnamese (VI) localization, thanks Ngoc
+* Fixed issue #78. Error/Valid styling applies to all radio buttons of same group for required validation.
+* Don't use form.elements as that isn't supported in jQuery 1.6 anymore. Its buggy as hell anyway (IE6-8: form.elements === form).
+
+1.8.0
+---
+* Improved NL localization (http://plugins.jquery.com/node/14120)
+* Added Georgian (GE) localization, thanks Avtandil Kikabidze
+* Added Serbian (SR) localization, thanks Aleksandar Milovac
+* Added ipv4 and ipv6 to additional methods, thanks Natal Ngétal
+* Added Japanese (JA) localization, thanks Bryan Meyerovich
+* Added Catalan (CA) localization, thanks Xavier de Pedro
+* Fixed missing var statements within for-in loops
+* Fix for remote validation, where a formatted message got messed up (https://github.com/jzaefferer/jquery-validation/issues/11)
+* Bugfixes for compability with jQuery 1.5.1, while maintaining backwards-compability
+
+1.7
+---
+* Added Lithuanian (LT) localization
+* Added Greek (EL) localization (http://plugins.jquery.com/node/12319)
+* Added Latvian (LV) localization (http://plugins.jquery.com/node/12349)
+* Added Hebrew (HE) localization (http://plugins.jquery.com/node/12039)
+* Fixed Spanish (ES) localization (http://plugins.jquery.com/node/12696)
+* Added jQuery UI themerolled demo
+* Removed cmxform.js
+* Fixed four missing semicolons (http://plugins.jquery.com/node/12639)
+* Renamed phone-method in additional-methods.js to phoneUS
+* Added phoneUK and mobileUK methods to additional-methods.js (http://plugins.jquery.com/node/12359)
+* Deep extend options to avoid modifying multiple forms when using the rules-method on a single element (http://plugins.jquery.com/node/12411)
+* Bugfixes for compability with jQuery 1.4.2, while maintaining backwards-compability
+
+1.6
+---
+* Added Arabic (AR), Portuguese (PTPT), Persian (FA), Finnish (FI) and Bulgarian (BR) localization
+* Updated Swedish (SE) localization (some missing html iso characters)
+* Fixed $.validator.addMethod to properly handle empty string vs. undefined for the message argument
+* Fixed two accidental global variables
+* Enhanced min/max/rangeWords (in additional-methods.js) to strip html before counting; good when counting words in a richtext editor
+* Added localized methods for DE, NL and PT, removing the dateDE and numberDE methods (use messages_de.js and methods_de.js with date and number methods instead)
+* Fixed remote form submit synchronization, kudos to Matas Petrikas
+* Improved interactive select validation, now validating also on click (via option or select, inconsistent across browsers); doesn't work in Safari, which doesn't trigger a click event at all on select elements; fixes http://plugins.jquery.com/node/11520
+* Updated to latest form plugin (2.36), fixing http://plugins.jquery.com/node/11487
+* Bind to blur event for equalTo target to revalidate when that target changes, fixes http://plugins.jquery.com/node/11450
+* Simplified select validation, delegating to jQuery's val() method to get the select value; should fix http://plugins.jquery.com/node/11239
+* Fixed default message for digits (http://plugins.jquery.com/node/9853)
+* Fixed issue with cached remote message (http://plugins.jquery.com/node/11029 and http://plugins.jquery.com/node/9351)
+* Fixed a missing semicolon in additional-methods.js (http://plugins.jquery.com/node/9233)
+* Added automatic detection of substitution parameters in messages, removing the need to provide format functions (http://plugins.jquery.com/node/11195)
+* Fixed an issue with :filled/:blank somewhat caused by Sizzle (http://plugins.jquery.com/node/11144)
+* Added an integer method to additional-methods.js (http://plugins.jquery.com/node/9612)
+* Fixed errorsFor method where the for-attribute contains characters that need escaping to be valid inside a selector (http://plugins.jquery.com/node/9611)
+
+1.5.5
+---
+* Fix for http://plugins.jquery.com/node/8659
+* Fixed trailing comma in messages_cs.js
+
+1.5.4
+---
+* Fixed remote method bug (http://plugins.jquery.com/node/8658)
+
+1.5.3
+---
+* Fixed a bug related to the wrapper-option, where all ancestor-elements that matched the wrapper-option where selected (http://plugins.jquery.com/node/7624)
+* Updated multipart demo to use latest jQuery UI accordion
+* Added dateNL and time methods to additionalMethods.js
+* Added Traditional Chinese (Taiwan, tw) and Kazakhstan (KK) localization
+* Moved jQuery.format (fomerly String.format) to jQuery.validator.format, jQuery.format is deprecated and will be removed in 1.6 (see http://code.google.com/p/jquery-utils/issues/detail?id=15 for details)
+* Cleaned up messages_pl.js and messages_ptbr.js (still defined messages for max/min/rangeValue, which were removed in 1.4)
+* Fixed flawed boolean logic in valid-plugin-method for multiple elements; now all elements need to be valid for a boolean-true result (http://plugins.jquery.com/node/8481)
+* Enhancement $.validator.addMethod: An undefined third message-argument won't overwrite an existing message (http://plugins.jquery.com/node/8443)
+* Enhancement to submitHandler option: When used, click events on submit buttons are captured and the submitting button is inserted into the form before calling submitHandler, and removed afterwards; keeps submit buttons intact (http://plugins.jquery.com/node/7183#comment-3585)
+* Added option validClass, default "valid", which adds that class to all valid elements, after validation (http://dev.jquery.com/ticket/2205)
+* Added creditcardtypes method to additionalMethods.js, including tests (via http://dev.jquery.com/ticket/3635)
+* Improved remote method to allow serverside message as a string, or true for valid, or false for invalid using the clientside defined message (http://dev.jquery.com/ticket/3807)
+* Improved accept method to also accept a Drupal-style comma-seperated list of values (http://plugins.jquery.com/node/8580)
+
+1.5.2
+---
+* Fixed messages in additional-methods.js for maxWords, minWords, and rangeWords to include call to $.format
+* Fixed value passed to methods to exclude carriage return (\r), same as jQuery's val() does
+* Added slovak (sk) localization
+* Added demo for intergration with jQuery UI tabs
+* Added selects-grouping example to tabs demo (see second tab, birthdate field)
+
+1.5.1
+---
+* Updated marketo demo to use invalidHandler option instead of binding invalid-form event
+* Added TinyMCE integration example
+* Added ukrainian (ua) localization
+* Fixed length validation to work with trimmed value (regression from 1.5 where general trimming before validation was removed)
+* Various small fixes for compability with both 1.2.6 and 1.3
+
+1.5
+---
+* Improved basic demo, validating confirm-password field after password changed
+* Fixed basic validation to pass the untrimmed input value as the first parameter to validation methods, changed required accordingly; breaks existing custom method that rely on the trimming
+* Added norwegian (no), italian (it), hungarian (hu) and romanian (ro) localization
+* Fixed #3195: Two flaws in swedish localization
+* Fixed #3503: Extended rules("add") to accept messages propery: use to specify add custom messages to an element via rules("add", { messages: { required: "Required! " } });
+* Fixed #3356: Regression from #2908 when using meta-option
+* Fixed #3370: Added ignoreTitle option, set to skip reading messages from the title attribute, helps to avoid issues with Google Toolbar; default is false for compability
+* Fixed #3516: Trigger invalid-form event even when remote validation is involved
+* Added invalidHandler option as a shortcut to bind("invalid-form", function() {})
+* Fixed Safari issue for loading indicator in ajaxSubmit-integration-demo (append to body first, then hide)
+* Added test for creditcard validation and improved default message
+* Enhanced remote validation, accepting options to passthrough to $.ajax as paramter (either url string or options, including url property plus everything else that $.ajax supports)
+
+1.4
+---
+* Fixed #2931, validate elements in document order and ignore type=image inputs
+* Fixed usage of $ and jQuery variables, now fully comptible with all variations of noConflict usage
+* Implemented #2908, enabling custom messages via metadata ala class="{required:true,messages:{required:'required field'}}", added demo/custom-messages-metadata-demo.html
+* Removed deprecated methods minValue (min), maxValue (max), rangeValue (rangevalue), minLength (minlength), maxLength (maxlength), rangeLength (rangelength)
+* Fixed #2215 regression: Call unhighlight only for current elements, not everything
+* Implemented #2989, enabling image button to cancel validation
+* Fixed issue where IE incorrectly validates against maxlength=0
+* Added czech (cs) localization
+* Reset validator.submitted on validator.resetForm(), enabling a full reset when necessary
+* Fixed #3035, skipping all falsy attributes when reading rules (0, undefined, empty string), removed part of the maxlength workaround (for 0)
+* Added dutch (nl) localization (#3201)
+
+1.3
+---
+* Fixed invalid-form event, now only triggered when form is invalid
+* Added spanish (es), russian (ru), portuguese brazilian (ptbr), turkish (tr), and polish (pl) localization
+* Added removeAttrs plugin to facilate adding and removing multiple attributes
+* Added groups option to display a single message for multiple elements, via groups: { arbitraryGroupName: "fieldName1 fieldName2[, fieldNameN" }
+* Enhanced rules() for adding and removing (static) rules: rules("add", "method1[, methodN]"/{method1:param[, method_n:param]}) and rules("remove"[, "method1[, method_n]")
+* Enhanced rules-option, accepts space-seperated string-list of methods, eg. {birthdate: "required date"}
+* Fixed checkbox group validation with inline rules: As long as the rules are specified on the first element, the group is now properly validated on click
+* Fixed #2473, ignoring all rules with an explicit parameter of boolean-false, eg. required:false is the same as not specifying required at all (it was handled as required:true so far)
+* Fixed #2424, with a modified patch from #2473: Methods returning a dependency-mismatch don't stop other rules from being evaluated anymore; still, success isn't applied for optional fields
+* Fixed url and email validation to not use trimmed values
+* Fixed creditcard validation to accept only digits and dashes ("asdf" is not a valid creditcard number)
+* Allow both button and input elements for cancel buttons (via class="cancel")
+* Fixed #2215: Fixed message display to call unhighlight as part of showing and hiding messages, no more visual side-effects while checking an element and extracted validator.checkForm to validate a form without UI sideeffects
+* Rewrote custom selectors (:blank, :filled, :unchecked) with functions for compability with AIR
+
+1.2.1
+-----
+
+* Bundled delegeate plugin with validate plugin - its always required anyway
+* Improved remote validation to include parts from the ajaxQueue plugin for proper synchronization (no additional plugin necessary)
+* Fixed stopRequest to prevent pendingRequest < 0
+* Added jQuery.validator.autoCreateRanges property, defaults to false, enable to convert min/max to range and minlength/maxlength to rangelength; this basically fixes the issue introduced by automatically creating ranges in 1.2
+* Fixed optional-methods to not highlight anything at all if the field is blank, that is, don't trigger success
+* Allow false/null for highlight/unhighlight options instead of forcing a do-nothing-callback even when nothing needs to be highlighted
+* Fixed validate() call with no elements selected, returning undefined instead of throwing an error
+* Improved demo, replacing metadata with classes/attributes for specifying rules
+* Fixed error when no custom message is used for remote validation
+* Modified email and url validation to require domain label and top label
+* Fixed url and email validation to require TLD (actually to require domain label); 1.2 version (TLD is optional) is moved to additionals as url2 and email2
+* Fixed dynamic-totals demo in IE6/7 and improved templating, using textarea to store multiline template and string interpolation
+* Added login form example with "Email password" link that makes the password field optional
+* Enhanced dynamic-totals demo with an example of a single message for two fields
+
+1.2
+---
+
+* Added AJAX-captcha validation example (based on http://psyrens.com/captcha/)
+* Added remember-the-milk-demo (thanks RTM team for the permission!)
+* Added marketo-demo (thanks Glen Lipka!)
+* Added support for ajax-validation, see method "remote"; serverside returns JSON, true for valid elements, false or a String for invalid, String is used as message
+* Added highlight and unhighlight options, by default toggles errorClass on element, allows custom highlighting
+* Added valid() plugin method for easy programmatic checking of forms and fields without the need to use the validator API
+* Added rules() plguin method to read and write rules for an element (currently read only)
+* Replaced regex for email method, thanks to the contribution by Scott Gonzalez, see http://projects.scottsplayground.com/email_address_validation/
+* Restructured event architecture to rely solely on delegation, both improving performance, and ease-of-use for the developer (requires jquery.delegate.js)
+* Moved documentation from inline to http://docs.jquery.com/Plugins/Validation - including interactive examples for all methods
+* Removed validator.refresh(), validation is now completey dynamic
+* Renamed minValue to min, maxValue to max and rangeValue to range, deprecating the previous names (to be removed in 1.3)
+* Renamed minLength to minlength, maxLength to maxlength and rangeLength to rangelength, deprecating the previous names (to be removed in 1.3)
+* Added feature to merge min + max into and range and minlength + maxlength into rangelength
+* Added support for dynamic rule parameters, allowing to specify a function as a parameter eg. for minlength, called when validating the element
+* Allow to specify null or an empty string as a message to display nothing (see marketo demo)
+* Rules overhaul: Now supports combination of rules-option, metadata, classes (new) and attributes (new), see rules() for details
+
+1.1.2
+---
+
+* Replaced regex for URL method, thanks to the contribution by Scott Gonzalez, see http://projects.scottsplayground.com/iri/
+* Improved email method to better handle unicode characters
+* Fixed error container to hide when all elements are valid, not only on form submit
+* Fixed String.format to jQuery.format (moving into jQuery namespace)
+* Fixed accept method to accept both upper and lowercase extensions
+* Fixed validate() plugin method to create only one validator instance for a given form and always return that one instance (avoids binding events multiple times)
+* Changed debug-mode console log from "error" to "warn" level
+
+1.1.1
+-----
+
+* Fixed invalid XHTML, preventing error label creation in IE since jQuery 1.1.4
+* Fixed and improved String.format: Global search & replace, better handling of array arguments
+* Fixed cancel-button handling to use validator-object for storing state instead of form element
+* Fixed name selectors to handle "complex" names, eg. containing brackets ("list[]")
+* Added button and disabled elements to exclude from validation
+* Moved element event handlers to refresh to be able to add handlers to new elements
+* Fixed email validation to allow long top level domains (eg. ".travel")
+* Moved showErrors() from valid() to form()
+* Added validator.size(): returns the number of current errors
+* Call submitHandler with validator as scope for easier access of it's methods, eg. to find error labels using errorsFor(Element)
+* Compatible with jQuery 1.1.x and 1.2.x
+
+1.1
+---
+
+* Added validation on blur, keyup and click (for checkboxes and radiobutton). Replaces event-option.
+* Fixed resetForm
+* Fixed custom-methods-demo
+
+1.0
+---
+
+* Improved number and numberDE methods to check for correct decimal numbers with delimiters
+* Only elements that have rules are checked (otherwise success-option is applied to all elements)
+* Added creditcard number method (thanks to Brian Klug)
+* Added ignore-option, eg. ignore: "[@type=hidden]", using that expression to exclude elements to validate. Default: none, though submit and reset buttons are always ignored
+* Heavily enhanced Functions-as-messages by providing a flexible String.format helper
+* Accept Functions as messages, providing runtime-custom-messages
+* Fixed exclusion of elements without rules from successList
+* Fixed custom-method-demo, replaced the alert with message displaying the number of errors
+* Fixed form-submit-prevention when using submitHandler
+* Completely removed dependency on element IDs, though they are still used (when present) to link error labels to inputs. Achieved by using
+ an array with {name, message, element} instead of an object with id:message pairs for the internal errorList.
+* Added support for specifying simple rules as simple strings, eg. "required" is equivalent to {required: true}
+* Added feature: Add errorClass to invalid field�s parent element, making it easy to style the label/field container or the label for the field.
+* Added feature: focusCleanup - If enabled, removes the errorClass from the invalid elements and hides all errors messages whenever the element is focused.
+* Added success option to show the a field was validated successfully
+* Fixed Opera select-issue (avoiding a attribute-collision)
+* Fixed problems with focussing hidden elements in IE
+* Added feature to skip validation for submit buttons with class "cancel"
+* Fixed potential issues with Google Toolbar by prefering plugin option messages over title attribute
+* submitHandler is only called when an actual submit event was handled, validator.form() returns false only for invalid forms
+* Invalid elements are now focused only on submit or via validator.focusInvalid(), avoiding all trouble with focus-on-blur
+* IE6 error container layout issue is solved
+* Customize error element via errorElement option
+* Added validator.refresh() to find new inputs in the form
+* Added accept validation method, checks file extensions
+* Improved dependecy feature by adding two custom expressions: ":blank" to select elements with an empty value and �:filled� to select elements with a value, both excluding whitespace
+* Added a resetForm() method to the validator: Resets each form element (using the form plugin, if available), removes classes on invalid elements and hides all error messages
+* Fixed docs for validator.showErrors()
+* Fixed error label creation to always use html() instead of text(), allowing arbitrary HTML passed in as messages
+* Fixed error label creation to use specified error class
+* Added dependency feature: The requires method accepts both String (jQuery expressions) and Functions as the argument
+* Heavily improved customizing of error message display: Use normal messages and show/hide an additional container; Completely replace message display with own mechanism (while being able to delegate to the default handler; Customize placing of generated labels (instead of default below-element)
+* Fixed two major bugs in IE (error containers) and Opera (metadata)
+* Modified validation methods to accept empty fields as valid (exception: of course �required� and also �equalTo� methods)
+* Renamed "min" to "minLength", "max" to "maxLength", "length" to "rangeLength"
+* Added "minValue", "maxValue" and "rangeValue"
+* Streamlined API for support of different events. The default, submit, can be disabled. If any event is specified, that is applied to each element (instead of the entire form). Combining keyup-validation with submit-validation is now extremely easy to setup
+* Added support for one-message-per-rule when defining messages via plugin settings
+* Added support to wrap metadata in some parent element. Useful when metadata is used for other plugins, too.
+* Refactored tests and demos: Less files, better demos
+* Improved documentation: More examples for methods, more reference texts explaining some basics \ No newline at end of file
diff --git a/bug/bug/jquery-validation-1.8.1/demo/ajaxSubmit-intergration-demo.html b/bug/bug/jquery-validation-1.8.1/demo/ajaxSubmit-intergration-demo.html
new file mode 100644
index 0000000..5d531bb
--- /dev/null
+++ b/bug/bug/jquery-validation-1.8.1/demo/ajaxSubmit-intergration-demo.html
@@ -0,0 +1,85 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+<title>Test for jQuery validate() plugin</title>
+<link rel="stylesheet" type="text/css" media="screen" href="css/screen.css" />
+<style type="text/css">
+.warning { color: red; }
+</style>
+<script src="../lib/jquery.js" type="text/javascript"></script>
+<script src="../lib/jquery.form.js" type="text/javascript"></script>
+<script src="../jquery.validate.js" type="text/javascript"></script>
+
+<script type="text/javascript">
+ jQuery(function() {
+ // show a simple loading indicator
+ var loader = jQuery('<div id="loader"><img src="images/loading.gif" alt="loading..." /></div>')
+ .css({position: "relative", top: "1em", left: "25em"})
+ .appendTo("body")
+ .hide();
+ jQuery().ajaxStart(function() {
+ loader.show();
+ }).ajaxStop(function() {
+ loader.hide();
+ }).ajaxError(function(a, b, e) {
+ throw e;
+ });
+
+ var v = jQuery("#form").validate({
+ submitHandler: function(form) {
+ jQuery(form).ajaxSubmit({
+ target: "#result"
+ });
+ }
+ });
+
+ jQuery("#reset").click(function() {
+ v.resetForm();
+ });
+ });
+</script>
+
+</head>
+<body>
+
+<h1 id="banner"><a href="http://bassistance.de/jquery-plugins/jquery-plugin-validation/">jQuery Validation Plugin</a> Demo</h1>
+<div id="main">
+
+<form method="post" class="cmxform" id="form" action="form.php">
+ <fieldset>
+ <legend>Login Form (Enter "foobar" as password)</legend>
+ <p>
+ <label for="user">Username</label>
+ <input id="user" name="user" title="Please enter your username (at least 3 characters)" class="required" minlength="3" />
+ </p>
+ <p>
+ <label for="pass">Password</label>
+ <input type="password" name="password" id="password" class="required" minlength"5" />
+ </p>
+ <p>
+ <input class="submit" type="submit" value="Login"/>
+ </p>
+ </fieldset>
+</form>
+
+<div id="result">Please login!</div>
+
+<br/>
+
+<button id="reset">Programmatically reset above form!</button>
+
+<p>Backend file: <a href="form.phps">form.phps</a></p>
+
+<a href="index.html">Back to main page</a>
+
+</div>
+
+<script src="http://www.google-analytics.com/urchin.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+_uacct = "UA-2623402-1";
+urchinTracker();
+</script>
+</body>
+</html> \ No newline at end of file
diff --git a/bug/bug/jquery-validation-1.8.1/demo/captcha/captcha.js b/bug/bug/jquery-validation-1.8.1/demo/captcha/captcha.js
new file mode 100644
index 0000000..245bc45
--- /dev/null
+++ b/bug/bug/jquery-validation-1.8.1/demo/captcha/captcha.js
@@ -0,0 +1,27 @@
+$(function(){
+ $("#refreshimg").click(function(){
+ $.post('newsession.php');
+ $("#captchaimage").load('image_req.php');
+ return false;
+ });
+
+ $("#captchaform").validate({
+ rules: {
+ captcha: {
+ required: true,
+ remote: "process.php"
+ }
+ },
+ messages: {
+ captcha: "Correct captcha is required. Click the captcha to generate a new one"
+ },
+ submitHandler: function() {
+ alert("Correct captcha!");
+ },
+ success: function(label) {
+ label.addClass("valid").text("Valid captcha!")
+ },
+ onkeyup: false
+ });
+
+});
diff --git a/bug/bug/jquery-validation-1.8.1/demo/captcha/fonts/Anorexia.ttf b/bug/bug/jquery-validation-1.8.1/demo/captcha/fonts/Anorexia.ttf
new file mode 100644
index 0000000..453eeb0
--- /dev/null
+++ b/bug/bug/jquery-validation-1.8.1/demo/captcha/fonts/Anorexia.ttf
Binary files differ
diff --git a/bug/bug/jquery-validation-1.8.1/demo/captcha/image_req.php b/bug/bug/jquery-validation-1.8.1/demo/captcha/image_req.php
new file mode 100644
index 0000000..6a65774
--- /dev/null
+++ b/bug/bug/jquery-validation-1.8.1/demo/captcha/image_req.php
@@ -0,0 +1,6 @@
+<?php
+
+// Echo the image - timestamp appended to prevent caching
+echo '<a href="index.php" onclick="refreshimg(); return false;" title="Click to refresh image"><img src="images/image.jpg?' . time() . '" width="132" height="46" alt="Captcha image" /></a>';
+
+?> \ No newline at end of file
diff --git a/bug/bug/jquery-validation-1.8.1/demo/captcha/images/button.png b/bug/bug/jquery-validation-1.8.1/demo/captcha/images/button.png
new file mode 100644
index 0000000..7ef79de
--- /dev/null
+++ b/bug/bug/jquery-validation-1.8.1/demo/captcha/images/button.png
Binary files differ
diff --git a/bug/bug/jquery-validation-1.8.1/demo/captcha/images/button.psd b/bug/bug/jquery-validation-1.8.1/demo/captcha/images/button.psd
new file mode 100644
index 0000000..a3bee84
--- /dev/null
+++ b/bug/bug/jquery-validation-1.8.1/demo/captcha/images/button.psd
Binary files differ
diff --git a/bug/bug/jquery-validation-1.8.1/demo/captcha/images/image.php b/bug/bug/jquery-validation-1.8.1/demo/captcha/images/image.php
new file mode 100644
index 0000000..bc571ab
--- /dev/null
+++ b/bug/bug/jquery-validation-1.8.1/demo/captcha/images/image.php
@@ -0,0 +1,35 @@
+<?php
+
+// Begin the session
+session_start();
+
+// If the session is not present, set the variable to an error message
+if(!isset($_SESSION['captcha_id']))
+ $str = 'ERROR!';
+// Else if it is present, set the variable to the session contents
+else
+ $str = $_SESSION['captcha_id'];
+
+// Set the content type
+//header('Content-type: image/png');
+header('Cache-control: no-cache');
+
+// Create an image from button.png
+$image = imagecreatefrompng('button.png');
+
+// Set the font colour
+$colour = imagecolorallocate($image, 183, 178, 152);
+
+// Set the font
+$font = '../fonts/Anorexia.ttf';
+
+// Set a random integer for the rotation between -15 and 15 degrees
+$rotate = rand(-15, 15);
+
+// Create an image using our original image and adding the detail
+imagettftext($image, 14, $rotate, 18, 30, $colour, $font, $str);
+
+// Output the image as a png
+imagepng($image);
+
+?> \ No newline at end of file
diff --git a/bug/bug/jquery-validation-1.8.1/demo/captcha/index.php b/bug/bug/jquery-validation-1.8.1/demo/captcha/index.php
new file mode 100644
index 0000000..74bd54f
--- /dev/null
+++ b/bug/bug/jquery-validation-1.8.1/demo/captcha/index.php
@@ -0,0 +1,66 @@
+<?php
+
+// Make the page validate
+ini_set('session.use_trans_sid', '0');
+
+// Include the random string file
+require 'rand.php';
+
+// Begin the session
+session_start();
+
+// Set the session contents
+$_SESSION['captcha_id'] = $str;
+
+?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+
+<head>
+ <title>AJAX CAPTCHA</title>
+ <meta http-equiv="Content-type" content="text/html; charset=utf-8" />
+ <meta name="keywords" content="AJAX,JHR,PHP,CAPTCHA,download,PHP CAPTCHA,AJAX CAPTCHA,AJAX PHP CAPTCHA,download AJAX CAPTCHA,download AJAX PHP CAPTCHA" />
+ <meta name="description" content="An AJAX CAPTCHA script, written in PHP" />
+
+ <script type="text/javascript" src="../../lib/jquery.js"></script>
+ <script type="text/javascript" src="../../jquery.validate.js"></script>
+ <script type="text/javascript" src="captcha.js"></script>
+
+ <link rel="stylesheet" type="text/css" href="style.css" />
+ <style type="text/css">
+ img { border: 1px solid #eee; }
+ p#statusgreen { font-size: 1.2em; background-color: #fff; color: #0a0; }
+ p#statusred { font-size: 1.2em; background-color: #fff; color: #a00; }
+ fieldset label { display: block; }
+ fieldset div#captchaimage { float: left; margin-right: 15px; }
+ fieldset input#captcha { width: 25%; border: 1px solid #ddd; padding: 2px; }
+ fieldset input#submit { display: block; margin: 2% 0% 0% 0%; }
+ #captcha.success {
+ border: 1px solid #49c24f;
+ background: #bcffbf;
+ }
+ #captcha.error {
+ border: 1px solid #c24949;
+ background: #ffbcbc;
+ }
+ </style>
+</head>
+
+<body>
+
+<h1><acronym title="Asynchronous JavaScript And XML">AJAX</acronym> <acronym title="Completely Automated Public Turing test to tell Computers and Humans Apart">CAPTCHA</acronym>, based on <a href="http://psyrens.com/captcha/">http://psyrens.com/captcha/</a></h1>
+
+<form id="captchaform" action="">
+<fieldset>
+ <div id="captchaimage"><a href="<?php echo $_SERVER['PHP_SELF']; ?>" id="refreshimg" title="Click to refresh image"><img src="images/image.php?<?php echo time(); ?>" width="132" height="46" alt="Captcha image" /></a></div>
+ <label for="captcha">Enter the characters as seen on the image above (case insensitive):</label>
+ <input type="text" maxlength="6" name="captcha" id="captcha" />
+ <input type="submit" name="submit" id="submit" value="Check" />
+</fieldset>
+</form>
+
+<p>If you can&#39;t decipher the text on the image, click it to dynamically generate a new one.</p>
+
+</body>
+
+</html> \ No newline at end of file
diff --git a/bug/bug/jquery-validation-1.8.1/demo/captcha/newsession.php b/bug/bug/jquery-validation-1.8.1/demo/captcha/newsession.php
new file mode 100644
index 0000000..36ff45e
--- /dev/null
+++ b/bug/bug/jquery-validation-1.8.1/demo/captcha/newsession.php
@@ -0,0 +1,12 @@
+<?php
+
+// Include the random string file
+require 'rand.php';
+
+// Begin a new session
+session_start();
+
+// Set the session contents
+$_SESSION['captcha_id'] = $str;
+
+?> \ No newline at end of file
diff --git a/bug/bug/jquery-validation-1.8.1/demo/captcha/process.php b/bug/bug/jquery-validation-1.8.1/demo/captcha/process.php
new file mode 100644
index 0000000..24fe3a8
--- /dev/null
+++ b/bug/bug/jquery-validation-1.8.1/demo/captcha/process.php
@@ -0,0 +1,14 @@
+<?php
+
+// Begin the session
+session_start();
+
+// To avoid case conflicts, make the input uppercase and check against the session value
+// If it's correct, echo '1' as a string
+if(strtoupper($_GET['captcha']) == $_SESSION['captcha_id'])
+ echo 'true';
+// Else echo '0' as a string
+else
+ echo 'false';
+
+?> \ No newline at end of file
diff --git a/bug/bug/jquery-validation-1.8.1/demo/captcha/rand.php b/bug/bug/jquery-validation-1.8.1/demo/captcha/rand.php
new file mode 100644
index 0000000..88b595e
--- /dev/null
+++ b/bug/bug/jquery-validation-1.8.1/demo/captcha/rand.php
@@ -0,0 +1,11 @@
+<?php
+
+// Create a random string, leaving out 'o' to avoid confusion with '0'
+$char = strtoupper(substr(str_shuffle('abcdefghjkmnpqrstuvwxyz'), 0, 4));
+
+// Concatenate the random string onto the random numbers
+// The font 'Anorexia' doesn't have a character for '8', so the numbers will only go up to 7
+// '0' is left out to avoid confusion with 'O'
+$str = rand(1, 7) . rand(1, 7) . $char;
+
+?> \ No newline at end of file
diff --git a/bug/bug/jquery-validation-1.8.1/demo/captcha/style.css b/bug/bug/jquery-validation-1.8.1/demo/captcha/style.css
new file mode 100644
index 0000000..c0bbe5f
--- /dev/null
+++ b/bug/bug/jquery-validation-1.8.1/demo/captcha/style.css
@@ -0,0 +1,140 @@
+body {
+ margin: 3% 5%;
+ padding: 0;
+ background-color: #fff;
+ color: #333;
+ font: 0.9em/1.3 Helvetica, Arial, Verdana, Sans-serif;
+}
+
+a:link, a:visited {
+ background-color: #fff;
+ color: #333;
+ text-decoration: underline;
+}
+
+a:hover, a:focus, a:active {
+ background-color: #ffb;
+ color: #454545;
+ text-decoration: underline;
+}
+
+h1 {
+ margin: 2% 0%;
+ padding: 1%;
+ border-bottom: 1px solid #ddd;
+ background-color: #f8f8f8;
+ color: #666;
+ font: normal 1.5em Helvetica, Arial, Verdana, Sans-serif;
+}
+
+h2 {
+ margin: 2% 0%;
+ padding: 1%;
+ border-bottom: 1px solid #ddd;
+ background-color: #f8f8f8;
+ color: #666;
+ font: normal 1.3em Helvetica, Arial, Verdana, Sans-serif;
+}
+
+h3 {
+ margin: 2% 0%;
+ padding: 1%;
+ border-bottom: 1px solid #ddd;
+ background-color: #f8f8f8;
+ color: #666;
+ font: normal 1.2em Helvetica, Arial, Verdana, Sans-serif;
+}
+
+table {
+ margin: 0;
+ padding: 0;
+ width: 100%;
+}
+
+table th {
+ border: 1px solid #ddd;
+ font-weight: bold;
+ text-align: left;
+ padding: 1%;
+}
+
+table td {
+ border: 1px solid #ddd;
+ padding: 1%;
+}
+
+dl, dt, dd {
+ margin: 0;
+ padding: 0;
+}
+
+form {
+ margin: 0;
+ padding: 0;
+}
+
+fieldset {
+ border: 1px solid #ddd;
+ margin: 0% 0% 2% 0%;
+ padding: 2%;
+}
+
+fieldset legend {
+ margin: 0;
+ padding: 0 4px;
+ background-color: inherit;
+ color: #333;
+}
+
+code {
+ font: 1em "Courier New", Courier, Monospace;
+}
+
+pre code {
+ font: 1.1em "Courier New", Courier, Monospace;
+ border-bottom: 1px solid #eee;
+}
+
+img {
+ border: 1px solid #eee;
+}
+
+p#statusgreen {
+ font-size: 1.2em;
+ background-color: #fff;
+ color: #0a0;
+}
+
+p#statusred {
+ font-size: 1.2em;
+ background-color: #fff;
+ color: #a00;
+}
+
+fieldset label {
+ display: block;
+}
+
+fieldset label.error {
+ color: red;
+}
+
+fieldset label.valid {
+ color: green;
+}
+
+fieldset div#captchaimage {
+ float: left;
+ margin-right: 15px;
+}
+
+fieldset input#captcha {
+ width: 25%;
+ border: 1px solid #ddd;
+ padding: 2px;
+}
+
+fieldset input#submit {
+ display: block;
+ margin: 2% 0% 0% 0%;
+} \ No newline at end of file
diff --git a/bug/bug/jquery-validation-1.8.1/demo/css/chili.css b/bug/bug/jquery-validation-1.8.1/demo/css/chili.css
new file mode 100644
index 0000000..6990449
--- /dev/null
+++ b/bug/bug/jquery-validation-1.8.1/demo/css/chili.css
@@ -0,0 +1,15 @@
+.jscom, .mix htcom { color: #4040c2; }
+.com { color: green; }
+.regexp { color: maroon; }
+.string { color: teal; }
+.keywords { color: blue; }
+.global { color: #008; }
+.numbers { color: #880; }
+.comm { color: green; }
+.tag { color: blue; }
+.entity { color: blue; }
+.string { color: teal; }
+.aname { color: maroon; }
+.avalue { color: maroon; }
+.jquery { color: #00a; }
+.plugin { color: red; } \ No newline at end of file
diff --git a/bug/bug/jquery-validation-1.8.1/demo/css/cmxform.css b/bug/bug/jquery-validation-1.8.1/demo/css/cmxform.css
new file mode 100644
index 0000000..120f5a4
--- /dev/null
+++ b/bug/bug/jquery-validation-1.8.1/demo/css/cmxform.css
@@ -0,0 +1,46 @@
+/**********************************
+
+Name: cmxform Styles
+
+***********************************/
+form.cmxform {
+ width: 370px;
+ font-size: 1.0em;
+ color: #333;
+}
+
+form.cmxform legend {
+ padding-left: 0;
+}
+
+form.cmxform legend, form.cmxform label {
+ color: #333;
+}
+
+form.cmxform fieldset {
+ border: none;
+ border-top: 1px solid #C9DCA6;
+ background: url(../images/cmxform-fieldset.gif) left bottom repeat-x;
+ background-color: #F8FDEF;
+}
+
+form.cmxform fieldset fieldset {
+ background: none;
+}
+
+form.cmxform fieldset p, form.cmxform fieldset fieldset {
+ padding: 5px 10px 7px;
+ background: url(../images/cmxform-divider.gif) left bottom repeat-x;
+}
+
+form.cmxform label.error, label.error {
+ /* remove the next line when you have trouble in IE6 with labels in list */
+ color: red;
+ font-style: italic
+}
+div.error { display: none; }
+input { border: 1px solid black; }
+input.checkbox { border: none }
+input:focus { border: 1px dotted black; }
+input.error { border: 1px dotted red; }
+form.cmxform .gray * { color: gray; } \ No newline at end of file
diff --git a/bug/bug/jquery-validation-1.8.1/demo/css/cmxformTemplate.css b/bug/bug/jquery-validation-1.8.1/demo/css/cmxformTemplate.css
new file mode 100644
index 0000000..ac52f71
--- /dev/null
+++ b/bug/bug/jquery-validation-1.8.1/demo/css/cmxformTemplate.css
@@ -0,0 +1,55 @@
+/**********************************
+
+Use: cmxform template
+
+***********************************/
+form.cmxform fieldset {
+ margin-bottom: 10px;
+}
+
+form.cmxform legend {
+ padding: 0 2px;
+ font-weight: bold;
+ _margin: 0 -7px; /* IE Win */
+}
+
+form.cmxform label {
+ display: inline-block;
+ line-height: 1.8;
+ vertical-align: top;
+ cursor: hand;
+}
+
+form.cmxform fieldset p {
+ list-style: none;
+ padding: 5px;
+ margin: 0;
+}
+
+form.cmxform fieldset fieldset {
+ border: none;
+ margin: 3px 0 0;
+}
+
+form.cmxform fieldset fieldset legend {
+ padding: 0 0 5px;
+ font-weight: normal;
+}
+
+form.cmxform fieldset fieldset label {
+ display: block;
+ width: auto;
+}
+
+form.cmxform label { width: 100px; } /* Width of labels */
+form.cmxform fieldset fieldset label { margin-left: 103px; } /* Width plus 3 (html space) */
+form.cmxform label.error {
+ margin-left: 103px;
+ width: 220px;
+}
+
+form.cmxform input.submit {
+ margin-left: 103px;
+}
+
+/*\*//*/ form.cmxform legend { display: inline-block; } /* IE Mac legend fix */ \ No newline at end of file
diff --git a/bug/bug/jquery-validation-1.8.1/demo/css/core.css b/bug/bug/jquery-validation-1.8.1/demo/css/core.css
new file mode 100644
index 0000000..84494e8
--- /dev/null
+++ b/bug/bug/jquery-validation-1.8.1/demo/css/core.css
@@ -0,0 +1,21 @@
+body, div { font-family: 'lucida grande', helvetica, verdana, arial, sans-serif }
+body { margin: 0; padding: 0; font-size: small; color: #333 }
+h1, h2 { font-family: 'trebuchet ms', verdana, arial; padding: 10px; margin: 0 }
+h1 { font-size: large }
+#main { padding: 1em; }
+#banner { padding: 15px; background-color: #06b; color: white; font-size: large; border-bottom: 1px solid #ccc;
+ background: url(../images/bg.gif) repeat-x; text-align: center }
+#banner a { color: white; }
+
+p { margin: 10px 0; }
+
+li { margin-left: 10px; }
+
+h3 { margin: 1em 0 0; }
+
+h1 { font-size: 2em; }
+h2 { font-size: 1.8em; }
+h3 { font-size: 1.6em; }
+h4 { font-size: 1.4em; }
+h5 { font-size: 1.2em; }
+
diff --git a/bug/bug/jquery-validation-1.8.1/demo/css/reset.css b/bug/bug/jquery-validation-1.8.1/demo/css/reset.css
new file mode 100644
index 0000000..5c376b3
--- /dev/null
+++ b/bug/bug/jquery-validation-1.8.1/demo/css/reset.css
@@ -0,0 +1,61 @@
+/**********************************
+
+Use: Reset Styles for all browsers
+
+***********************************/
+
+body, p, blockquote {
+ margin: 0;
+ padding: 0;
+}
+
+a img, iframe { border: none; }
+
+/* Headers
+------------------------------*/
+
+h1, h2, h3, h4, h5, h6 {
+ margin: 0;
+ padding: 0;
+ font-size: 100%;
+}
+
+/* Lists
+------------------------------*/
+
+ul, ol, dl, li, dt, dd {
+ margin: 0;
+ padding: 0;
+}
+
+/* Links
+------------------------------*/
+
+a, a:link {}
+a:visited {}
+a:hover {}
+a:active {}
+
+/* Forms
+------------------------------*/
+
+form, fieldset {
+ margin: 0;
+ padding: 0;
+}
+
+fieldset { border: 1px solid #000; }
+
+legend {
+ padding: 0;
+ color: #000;
+}
+
+input, textarea, select {
+ margin: 0;
+ padding: 1px;
+ font-size: 100%;
+ font-family: inherit;
+}
+
+select { padding: 0; } \ No newline at end of file
diff --git a/bug/bug/jquery-validation-1.8.1/demo/css/screen.css b/bug/bug/jquery-validation-1.8.1/demo/css/screen.css
new file mode 100644
index 0000000..840f572
--- /dev/null
+++ b/bug/bug/jquery-validation-1.8.1/demo/css/screen.css
@@ -0,0 +1,11 @@
+/**********************************
+
+Use: Main Screen Import
+
+***********************************/
+
+@import "reset.css";
+@import "core.css";
+
+@import "cmxformTemplate.css";
+@import "cmxform.css"; \ No newline at end of file
diff --git a/bug/bug/jquery-validation-1.8.1/demo/custom-messages-metadata-demo.html b/bug/bug/jquery-validation-1.8.1/demo/custom-messages-metadata-demo.html
new file mode 100644
index 0000000..46e3d6e
--- /dev/null
+++ b/bug/bug/jquery-validation-1.8.1/demo/custom-messages-metadata-demo.html
@@ -0,0 +1,92 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+<title>jQuery validation plug-in - comment form example</title>
+
+<link rel="stylesheet" type="text/css" media="screen" href="css/screen.css" />
+
+<script src="../lib/jquery.js" type="text/javascript"></script>
+<script src="../jquery.validate.js" type="text/javascript"></script>
+<script src="../lib/jquery.metadata.js" type="text/javascript"></script>
+
+<script type="text/javascript">
+$(document).ready(function() {
+ $("#commentForm").validate({meta: "validate"});
+ $("#commentForm2").validate();
+ $("#commentForm3").validate({
+ messages: {
+ email: {
+ required: 'Enter this!'
+ }
+ }
+ });
+
+});
+</script>
+
+<style type="text/css">
+form { width: 500px; }
+form label { width: 250px; }
+form label.error,
+form input.submit { margin-left: 253px; }
+</style>
+
+</head>
+<body>
+
+<h1 id="banner"><a href="http://bassistance.de/jquery-plugins/jquery-plugin-validation/">jQuery Validation Plugin</a> Demo</h1>
+<div id="main">
+
+<p>Take a look at the source to see how messages can be customized with metadata.</p>
+
+<!-- Custom messages with custom "meta" setting -->
+<form class="cmxform" id="commentForm" method="post" action="">
+ <fieldset>
+ <legend>Please enter your email address</legend>
+ <p>
+
+ <label for="cemail">E-Mail *</label>
+ <input id="cemail" name="email" class="{validate:{required:true, email:true, messages:{required:'Please enter your email address', email:'Please enter a valid email address'}}}"/>
+ </p>
+ <p>
+ <input class="submit" type="submit" value="Submit"/>
+ </p>
+ </fieldset>
+</form>
+<!-- Custom messages with default "meta" setting -->
+<form class="cmxform" id="commentForm2" method="post" action="">
+ <fieldset>
+ <legend>Please enter your email address</legend>
+ <p>
+
+ <label for="cemail">E-Mail *</label>
+ <input id="cemail" name="email" class="{required:true, email:true, messages:{required:'Please enter your email address', email:'Please enter a valid email address'}}"/>
+ </p>
+ <p>
+ <input class="submit" type="submit" value="Submit"/>
+ </p>
+ </fieldset>
+</form>
+<!-- Custom message for "required" in metadata is overriden by a validate option -->
+<form class="cmxform" id="commentForm3" method="post" action="">
+ <fieldset>
+ <legend>Please enter your email address</legend>
+ <p>
+
+ <label for="cemail">E-Mail *</label>
+ <input id="cemail" name="email" class="{required:true, email:true, messages:{email:'Please enter a valid email address'}}"/>
+ </p>
+ <p>
+ <input class="submit" type="submit" value="Submit"/>
+ </p>
+ </fieldset>
+</form>
+
+<a href="index.html">Back to main page</a>
+
+<script src="http://www.google-analytics.com/urchin.js" type="text/javascript"></script>
+<script type="text/javascript">_uacct = "UA-2623402-1";urchinTracker();</script>
+
+</body>
+</html> \ No newline at end of file
diff --git a/bug/bug/jquery-validation-1.8.1/demo/custom-methods-demo.html b/bug/bug/jquery-validation-1.8.1/demo/custom-methods-demo.html
new file mode 100644
index 0000000..89b8fa6
--- /dev/null
+++ b/bug/bug/jquery-validation-1.8.1/demo/custom-methods-demo.html
@@ -0,0 +1,122 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+<title>Test for jQuery validate() plugin</title>
+
+<link rel="stylesheet" type="text/css" media="screen" href="css/screen.css" />
+
+<script src="../lib/jquery.js" type="text/javascript"></script>
+<script src="../jquery.validate.js" type="text/javascript"></script>
+
+<script type="text/javascript">
+ // extend the current rules with new groovy ones
+
+ // this one requires the text "buga", we define a default message, too
+ $.validator.addMethod("buga", function(value) {
+ return value == "buga";
+ }, 'Please enter "buga"!');
+
+ // this one requires the value to be the same as the first parameter
+ $.validator.methods.equal = function(value, element, param) {
+ return value == param;
+ };
+
+ $().ready(function() {
+ var validator = $("#texttests").bind("invalid-form.validate", function() {
+ $("#summary").html("Your form contains " + validator.numberOfInvalids() + " errors, see details below.");
+ }).validate({
+ debug: true,
+ errorElement: "em",
+ errorContainer: $("#warning, #summary"),
+ errorPlacement: function(error, element) {
+ error.appendTo( element.parent("td").next("td") );
+ },
+ success: function(label) {
+ label.text("ok!").addClass("success");
+ },
+ rules: {
+ number: {
+ required:true,
+ minlength:3,
+ maxlength:15,
+ number:true
+ },
+ secret: "buga",
+ math: {
+ equal: 11
+ }
+ }
+ });
+
+ });
+</script>
+
+<style type="text/css">
+form.cmxform { width: 50em; }
+em.error {
+ background:url("images/unchecked.gif") no-repeat 0px 0px;
+ padding-left: 16px;
+}
+em.success {
+ background:url("images/checked.gif") no-repeat 0px 0px;
+ padding-left: 16px;
+}
+
+form.cmxform label.error {
+ margin-left: auto;
+ width: 250px;
+}
+em.error { color: black; }
+#warning { display: none; }
+</style>
+
+</head>
+<body>
+
+<h1 id="banner"><a href="http://bassistance.de/jquery-plugins/jquery-plugin-validation/">jQuery Validation Plugin</a> Demo</h1>
+<div id="main">
+
+<form class="cmxform" id="texttests" method="get" action="foo.html">
+ <h2 id="summary"></h2>
+
+ <fieldset>
+ <legend>Example with custom methods and heavily customized error display</legend>
+ <table>
+ <tr>
+ <td><label for="number">textarea</label></td>
+ <td><input id="number" name="number"
+ title="Please enter a number with at least 3 and max 15 characters!" />
+ </td>
+ <td></td>
+ </tr>
+ <tr>
+ <td><label for="secret">Secret</label></td>
+ <td><input name="secret" id="secret" /></td>
+ <td></td>
+ </tr>
+ <tr>
+ <td><label for="math">7 + 4 = </label></td>
+ <td><input id="math" name="math" title="Please enter the correct result!" /></td>
+ <td></td>
+ </tr>
+ </table>
+ <input class="submit" type="submit" value="Submit"/>
+ </fieldset>
+</form>
+
+<h3 id="warning">Your form contains tons of errors! Please try again.</h3>
+
+<p><a href="index.html">Back to main page</a></p>
+
+</div>
+
+<script src="http://www.google-analytics.com/urchin.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+_uacct = "UA-2623402-1";
+urchinTracker();
+</script>
+</body>
+</html> \ No newline at end of file
diff --git a/bug/bug/jquery-validation-1.8.1/demo/dynamic-totals.html b/bug/bug/jquery-validation-1.8.1/demo/dynamic-totals.html
new file mode 100644
index 0000000..5ea4582
--- /dev/null
+++ b/bug/bug/jquery-validation-1.8.1/demo/dynamic-totals.html
@@ -0,0 +1,151 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+<title>jQuery validation plug-in - dynamic forms demo</title>
+
+<link rel="stylesheet" type="text/css" media="screen" href="css/screen.css" />
+
+<script src="../lib/jquery.js" type="text/javascript"></script>
+<script src="../jquery.validate.js" type="text/javascript"></script>
+
+<script type="text/javascript">
+// only for demo purposes
+$.validator.setDefaults({
+ submitHandler: function() {
+ alert("submitted!");
+ }
+});
+$.validator.messages.max = jQuery.format("Your totals musn't exceed {0}!");
+
+$.validator.addMethod("quantity", function(value, element) {
+ return !this.optional(element) && !this.optional($(element).parent().prev().children("select")[0]);
+}, "Please select both the item and its amount.");
+
+$().ready(function() {
+ $("#orderform").validate({
+ errorPlacement: function(error, element) {
+ error.appendTo( element.parent().next() );
+ },
+ highlight: function(element, errorClass) {
+ $(element).addClass(errorClass).parent().prev().children("select").addClass(errorClass);
+ }
+ });
+
+ var template = jQuery.format($("#template").val());
+ function addRow() {
+ $(template(i++)).appendTo("#orderitems tbody");
+ }
+
+ var i = 1;
+ // start with one row
+ addRow();
+ // add more rows on click
+ $("#add").click(addRow);
+
+ // check keyup on quantity inputs to update totals field
+ $("#orderform").delegate("keyup", "input.quantity", function(event) {
+ var totals = 0;
+ $("#orderitems input.quantity").each(function() {
+ totals += +this.value;
+ });
+ $("#totals").attr("value", totals).valid();
+ });
+
+});
+</script>
+
+<style type="text/css">
+form.cmxform { width: 50em; }
+em.error {
+ background:url("images/unchecked.gif") no-repeat 0px 0px;
+ padding-left: 16px;
+}
+em.success {
+ background:url("images/checked.gif") no-repeat 0px 0px;
+ padding-left: 16px;
+}
+
+form.cmxform label.error {
+ margin-left: auto;
+ width: 250px;
+}
+form.cmxform input.submit {
+ margin-left: 0;
+}
+em.error { color: black; }
+#warning { display: none; }
+select.error {
+ border: 1px dotted red;
+}
+</style>
+
+</head>
+<body>
+
+<h1 id="banner"><a href="http://bassistance.de/jquery-plugins/jquery-plugin-validation/">jQuery Validation Plugin</a> Demo</h1>
+<div id="main">
+
+<textarea style="display:none" id="template">
+ <tr>
+ <td>
+ <label>{0}. Item</label>
+ </td>
+ <td class='type'>
+ <select name="item-type-{0}">
+ <option value="">Select...</option>
+ <option value="0">Learning jQuery</option>
+ <option value="1">jQuery Reference Guide</option>
+ <option value="2">jQuery Cookbook</option>
+ <option vlaue="3">jQuery In Action</option>
+ <option value="4">jQuery For Designers</option>
+ </select>
+ </td>
+ <td class='quantity'>
+ <input size='4' class="quantity" min="1" id="item-quantity-{0}" name="item-quantity-{0}" />
+ </td>
+ <td class='quantity-error'></td>
+ </tr>
+</textarea>
+
+<form id="orderform" class="cmxform" method="get" action="foo.html">
+ <h2 id="summary"></h2>
+
+ <fieldset>
+ <legend>Example with custom methods and heavily customized error display</legend>
+ <table id="orderitems">
+ <tbody>
+
+ </tbody>
+ <tfoot>
+ <tr>
+ <td colspan="2"><label>Totals (max 25)</label></td>
+ <td class="totals"><input id="totals" name="totals" value="0" max="25" readonly="readonly" size='4' /></td>
+ <td class="totals-error"></td>
+ </tr>
+ <tr>
+ <td colspan="2">&nbsp;</td>
+ <td><input class="submit" type="submit" value="Submit"/></td>
+ </tr>
+ </tfoot>
+ </table>
+ </fieldset>
+</form>
+
+<button id="add">Add another input to the form</button>
+
+<h1 id="warning">Your form contains tons of errors! Please try again.</h1>
+
+<p><a href="index.html">Back to main page</a></p>
+
+</div>
+
+<script src="http://www.google-analytics.com/urchin.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+_uacct = "UA-2623402-1";
+urchinTracker();
+</script>
+</body>
+</html> \ No newline at end of file
diff --git a/bug/bug/jquery-validation-1.8.1/demo/errorcontainer-demo.html b/bug/bug/jquery-validation-1.8.1/demo/errorcontainer-demo.html
new file mode 100644
index 0000000..2c062ea
--- /dev/null
+++ b/bug/bug/jquery-validation-1.8.1/demo/errorcontainer-demo.html
@@ -0,0 +1,161 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+<title>Test for jQuery validate() plugin</title>
+
+<link rel="stylesheet" type="text/css" media="screen" href="css/screen.css" />
+
+<script src="../lib/jquery.js" type="text/javascript"></script>
+<script src="../lib/jquery.metadata.js" type="text/javascript"></script>
+<script src="../jquery.validate.js" type="text/javascript"></script>
+
+<style type="text/css">
+.cmxform fieldset p.error label { color: red; }
+div.container {
+ background-color: #eee;
+ border: 1px solid red;
+ margin: 5px;
+ padding: 5px;
+}
+div.container ol li {
+ list-style-type: disc;
+ margin-left: 20px;
+}
+div.container { display: none }
+.container label.error {
+ display: inline;
+}
+form.cmxform { width: 30em; }
+form.cmxform label.error {
+ display: block;
+ margin-left: 1em;
+ width: auto;
+}
+</style>
+
+<script type="text/javascript">
+// only for demo purposes
+$.validator.setDefaults({
+ submitHandler: function() {
+ alert("submitted! (skipping validation for cancel button)");
+ }
+});
+
+$().ready(function() {
+ $("#form1").validate({
+ errorLabelContainer: $("#form1 div.error")
+ });
+
+ var container = $('div.container');
+ // validate the form when it is submitted
+ var validator = $("#form2").validate({
+ errorContainer: container,
+ errorLabelContainer: $("ol", container),
+ wrapper: 'li',
+ meta: "validate"
+ });
+
+ $(".cancel").click(function() {
+ validator.resetForm();
+ });
+});
+</script>
+
+</head>
+<body>
+
+<h1 id="banner"><a href="http://bassistance.de/jquery-plugins/jquery-plugin-validation/">jQuery Validation Plugin</a> Demo</h1>
+<div id="main">
+
+<form method="get" class="cmxform" id="form1" action="">
+ <fieldset>
+ <legend>Login Form</legend>
+ <p>
+ <label>Username</label>
+ <input name="user" title="Please enter your username (at least 3 characters)" class="{required:true,minlength:3}" />
+ </p>
+ <p>
+ <label>Password</label>
+ <input type="password" maxlength="12" name="password" title="Please enter your password, between 5 and 12 characters" class="{required:true,minlength:5}" />
+ </p>
+ <div class="error">
+ </div>
+ <p>
+ <input class="submit" type="submit" value="Login"/>
+ </p>
+ </fieldset>
+</form>
+
+<!-- our error container -->
+<div class="container">
+ <h4>There are serious errors in your form submission, please see below for details.</h4>
+ <ol>
+ <li><label for="email" class="error">Please enter your email address</label></li>
+ <li><label for="phone" class="error">Please enter your phone <b>number</b> (between 2 and 8 characters)</label></li>
+ <li><label for="address" class="error">Please enter your address (at least 3 characters)</label></li>
+ <li><label for="avatar" class="error">Please select an image (png, jpg, jpeg, gif)</label></li>
+ <li><label for="cv" class="error">Please select a document (doc, docx, txt, pdf)</label></li>
+ </ol>
+</div>
+
+<form class="cmxform" id="form2" method="get" action="">
+ <fieldset>
+ <legend>Validating a complete form</legend>
+ <p>
+ <label for="email">Email</label>
+ <input id="email" name="email" class="{validate:{required:true,email:true}}" />
+ </p>
+ <p>
+ <label for="agree">Favorite Color</label>
+ <select id="color" name="color" title="Please select your favorite color!" class="{validate:{required:true}}">
+ <option></option>
+ <option>Red</option>
+ <option>Blue</option>
+ <option>Yellow</option>
+ </select>
+ </p>
+ <p>
+ <label for="phone">Phone</label>
+ <input id="phone" name="phone" class="some styles {validate:{required:true,number:true, rangelength:[2,8]}}" />
+ </p>
+ <p>
+ <label for="address">Address</label>
+ <input id="address" name="address" class="some other styles {validate:{required:true,minlength:3}}" />
+ </p>
+ <p>
+ <label for="avatar">Avatar</label>
+ <input type="file" id="avatar" name="avatar" class="{validate:{required:true,accept:true}}" />
+ </p>
+ <p>
+ <label for="agree">Please agree to our policy</label>
+ <input type="checkbox" class="checkbox" id="agree" title="Please agree to our policy!" name="agree" class="{validate:{required:true}}" />
+ </p>
+ <p>
+ <label for="cv">CV</label>
+ <input type="file" id="cv" name="cv" class="{validate:{required:true,accept:'docx?|txt|pdf'}}" />
+ </p>
+ <p>
+ <input class="submit" type="submit" value="Submit"/>
+ <input class="cancel" type="submit" value="Cancel"/>
+ </p>
+ </fieldset>
+</form>
+
+<div class="container">
+ <h4>There are serious errors in your form submission, please see details above the form!</h4>
+</div>
+
+<a href="index.html">Back to main page</a>
+
+</div>
+
+<script src="http://www.google-analytics.com/urchin.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+_uacct = "UA-2623402-1";
+urchinTracker();
+</script>
+</body>
+</html> \ No newline at end of file
diff --git a/bug/bug/jquery-validation-1.8.1/demo/example.html b/bug/bug/jquery-validation-1.8.1/demo/example.html
new file mode 100644
index 0000000..5b83f6d
--- /dev/null
+++ b/bug/bug/jquery-validation-1.8.1/demo/example.html
@@ -0,0 +1,53 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+<title>jQuery validation plug-in - comment form example</title>
+
+<link rel="stylesheet" type="text/css" media="screen" href="css/screen.css" />
+
+<script src="../lib/jquery.js" type="text/javascript"></script>
+<script src="../jquery.validate.js" type="text/javascript"></script>
+
+<script type="text/javascript">
+$(document).ready(function() {
+ $("#commentForm").validate();
+});
+</script>
+
+<style type="text/css">
+#commentForm { width: 500px; }
+#commentForm label { width: 250px; }
+#commentForm label.error, #commentForm input.submit { margin-left: 253px; }
+</style>
+
+</head>
+<body>
+
+<form class="cmxform" id="commentForm" method="post" action="">
+ <fieldset>
+ <legend>Please provide your name, email address (won't be published) and a comment</legend>
+ <p>
+ <label for="cname">Name (required, at least 2 characters)</label>
+ <input id="cname" name="name" class="required" minlength="2" />
+ </p>
+ <p>
+ <label for="cemail">E-Mail (required)</label>
+ <input id="cemail" name="email" class="required email" />
+ </p>
+ <p>
+ <label for="curl">URL (optional)</label>
+ <input id="curl" name="url" class="url" value="" />
+ </p>
+ <p>
+ <label for="ccomment">Your comment (required)</label>
+ <textarea id="ccomment" name="comment" class="required"></textarea>
+ </p>
+ <p>
+ <input class="submit" type="submit" value="Submit"/>
+ </p>
+ </fieldset>
+</form>
+
+</body>
+</html> \ No newline at end of file
diff --git a/bug/bug/jquery-validation-1.8.1/demo/form.php b/bug/bug/jquery-validation-1.8.1/demo/form.php
new file mode 100644
index 0000000..b25c6ef
--- /dev/null
+++ b/bug/bug/jquery-validation-1.8.1/demo/form.php
@@ -0,0 +1,10 @@
+<?php
+// wait a second to simulate a some latency
+usleep(500000);
+$user = $_REQUEST['user'];
+$pw = $_REQUEST['password'];
+if($user && $pw && $pw == "foobar")
+ echo "Hi $user, welcome back.";
+else
+ echo "Your password is wrong (must be foobar).";
+?> \ No newline at end of file
diff --git a/bug/bug/jquery-validation-1.8.1/demo/form.phps b/bug/bug/jquery-validation-1.8.1/demo/form.phps
new file mode 100644
index 0000000..b25c6ef
--- /dev/null
+++ b/bug/bug/jquery-validation-1.8.1/demo/form.phps
@@ -0,0 +1,10 @@
+<?php
+// wait a second to simulate a some latency
+usleep(500000);
+$user = $_REQUEST['user'];
+$pw = $_REQUEST['password'];
+if($user && $pw && $pw == "foobar")
+ echo "Hi $user, welcome back.";
+else
+ echo "Your password is wrong (must be foobar).";
+?> \ No newline at end of file
diff --git a/bug/bug/jquery-validation-1.8.1/demo/images/bg.gif b/bug/bug/jquery-validation-1.8.1/demo/images/bg.gif
new file mode 100644
index 0000000..846add0
--- /dev/null
+++ b/bug/bug/jquery-validation-1.8.1/demo/images/bg.gif
Binary files differ
diff --git a/bug/bug/jquery-validation-1.8.1/demo/images/checked.gif b/bug/bug/jquery-validation-1.8.1/demo/images/checked.gif
new file mode 100644
index 0000000..5e33a78
--- /dev/null
+++ b/bug/bug/jquery-validation-1.8.1/demo/images/checked.gif
Binary files differ
diff --git a/bug/bug/jquery-validation-1.8.1/demo/images/cmxform-divider.gif b/bug/bug/jquery-validation-1.8.1/demo/images/cmxform-divider.gif
new file mode 100644
index 0000000..718a977
--- /dev/null
+++ b/bug/bug/jquery-validation-1.8.1/demo/images/cmxform-divider.gif
Binary files differ
diff --git a/bug/bug/jquery-validation-1.8.1/demo/images/cmxform-fieldset.gif b/bug/bug/jquery-validation-1.8.1/demo/images/cmxform-fieldset.gif
new file mode 100644
index 0000000..9c48ea4
--- /dev/null
+++ b/bug/bug/jquery-validation-1.8.1/demo/images/cmxform-fieldset.gif
Binary files differ
diff --git a/bug/bug/jquery-validation-1.8.1/demo/images/loading.gif b/bug/bug/jquery-validation-1.8.1/demo/images/loading.gif
new file mode 100644
index 0000000..93c46a6
--- /dev/null
+++ b/bug/bug/jquery-validation-1.8.1/demo/images/loading.gif
Binary files differ
diff --git a/bug/bug/jquery-validation-1.8.1/demo/images/unchecked.gif b/bug/bug/jquery-validation-1.8.1/demo/images/unchecked.gif
new file mode 100644
index 0000000..06ecaba
--- /dev/null
+++ b/bug/bug/jquery-validation-1.8.1/demo/images/unchecked.gif
Binary files differ
diff --git a/bug/bug/jquery-validation-1.8.1/demo/index.html b/bug/bug/jquery-validation-1.8.1/demo/index.html
new file mode 100644
index 0000000..20087f7
--- /dev/null
+++ b/bug/bug/jquery-validation-1.8.1/demo/index.html
@@ -0,0 +1,230 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+<title>jQuery validation plug-in - main demo</title>
+
+<link rel="stylesheet" type="text/css" media="screen" href="css/screen.css" />
+
+<script src="../lib/jquery.js" type="text/javascript"></script>
+<script src="../jquery.validate.js" type="text/javascript"></script>
+
+<script type="text/javascript">
+$.validator.setDefaults({
+ submitHandler: function() { alert("submitted!"); }
+});
+
+$().ready(function() {
+ // validate the comment form when it is submitted
+ $("#commentForm").validate();
+
+ // validate signup form on keyup and submit
+ $("#signupForm").validate({
+ rules: {
+ firstname: "required",
+ lastname: "required",
+ username: {
+ required: true,
+ minlength: 2
+ },
+ password: {
+ required: true,
+ minlength: 5
+ },
+ confirm_password: {
+ required: true,
+ minlength: 5,
+ equalTo: "#password"
+ },
+ email: {
+ required: true,
+ email: true
+ },
+ topic: {
+ required: "#newsletter:checked",
+ minlength: 2
+ },
+ agree: "required"
+ },
+ messages: {
+ firstname: "Please enter your firstname",
+ lastname: "Please enter your lastname",
+ username: {
+ required: "Please enter a username",
+ minlength: "Your username must consist of at least 2 characters"
+ },
+ password: {
+ required: "Please provide a password",
+ minlength: "Your password must be at least 5 characters long"
+ },
+ confirm_password: {
+ required: "Please provide a password",
+ minlength: "Your password must be at least 5 characters long",
+ equalTo: "Please enter the same password as above"
+ },
+ email: "Please enter a valid email address",
+ agree: "Please accept our policy"
+ }
+ });
+
+ // propose username by combining first- and lastname
+ $("#username").focus(function() {
+ var firstname = $("#firstname").val();
+ var lastname = $("#lastname").val();
+ if(firstname && lastname && !this.value) {
+ this.value = firstname + "." + lastname;
+ }
+ });
+
+ //code to hide topic selection, disable for demo
+ var newsletter = $("#newsletter");
+ // newsletter topics are optional, hide at first
+ var inital = newsletter.is(":checked");
+ var topics = $("#newsletter_topics")[inital ? "removeClass" : "addClass"]("gray");
+ var topicInputs = topics.find("input").attr("disabled", !inital);
+ // show when newsletter is checked
+ newsletter.click(function() {
+ topics[this.checked ? "removeClass" : "addClass"]("gray");
+ topicInputs.attr("disabled", !this.checked);
+ });
+});
+</script>
+
+<style type="text/css">
+#commentForm { width: 500px; }
+#commentForm label { width: 250px; }
+#commentForm label.error, #commentForm input.submit { margin-left: 253px; }
+#signupForm { width: 670px; }
+#signupForm label.error {
+ margin-left: 10px;
+ width: auto;
+ display: inline;
+}
+#newsletter_topics label.error {
+ display: none;
+ margin-left: 103px;
+}
+</style>
+
+</head>
+<body>
+
+<h1 id="banner"><a href="http://bassistance.de/jquery-plugins/jquery-plugin-validation/">jQuery Validation Plugin</a> Demo</h1>
+<div id="main">
+
+<p>Default submitHandler is set to display an alert into of submitting the form</p>
+
+<form class="cmxform" id="commentForm" method="get" action="">
+ <fieldset>
+ <legend>Please provide your name, email address (won't be published) and a comment</legend>
+ <p>
+ <label for="cname">Name (required, at least 2 characters)</label>
+ <input id="cname" name="name" class="required" minlength="2" />
+ <p>
+ <label for="cemail">E-Mail (required)</label>
+ <input id="cemail" name="email" class="required email" />
+ </p>
+ <p>
+ <label for="curl">URL (optional)</label>
+ <input id="curl" name="url" class="url" value="" />
+ </p>
+ <p>
+ <label for="ccomment">Your comment (required)</label>
+ <textarea id="ccomment" name="comment" class="required"></textarea>
+ </p>
+ <p>
+ <input class="submit" type="submit" value="Submit"/>
+ </p>
+ </fieldset>
+</form>
+
+<form class="cmxform" id="signupForm" method="get" action="">
+ <fieldset>
+ <legend>Validating a complete form</legend>
+ <p>
+ <label for="firstname">Firstname</label>
+ <input id="firstname" name="firstname" />
+ </p>
+ <p>
+ <label for="lastname">Lastname</label>
+ <input id="lastname" name="lastname" />
+ </p>
+ <p>
+ <label for="username">Username</label>
+ <input id="username" name="username" />
+ </p>
+ <p>
+ <label for="password">Password</label>
+ <input id="password" name="password" type="password" />
+ </p>
+ <p>
+ <label for="confirm_password">Confirm password</label>
+ <input id="confirm_password" name="confirm_password" type="password" />
+ </p>
+ <p>
+ <label for="email">Email</label>
+ <input id="email" name="email" />
+ </p>
+ <p>
+ <label for="agree">Please agree to our policy</label>
+ <input type="checkbox" class="checkbox" id="agree" name="agree" />
+ </p>
+ <p>
+ <label for="newsletter">I'd like to receive the newsletter</label>
+ <input type="checkbox" class="checkbox" id="newsletter" name="newsletter" />
+ </p>
+ <fieldset id="newsletter_topics">
+ <legend>Topics (select at least two) - note: would be hidden when newsletter isn't selected, but is visible here for the demo</legend>
+ <label for="topic_marketflash">
+ <input type="checkbox" id="topic_marketflash" value="marketflash" name="topic" />
+ Marketflash
+ </label>
+ <label for="topic_fuzz">
+ <input type="checkbox" id="topic_fuzz" value="fuzz" name="topic" />
+ Latest fuzz
+ </label>
+ <label for="topic_digester">
+ <input type="checkbox" id="topic_digester" value="digester" name="topic" />
+ Mailing list digester
+ </label>
+ <label for="topic" class="error">Please select at least two topics you'd like to receive.</label>
+ </fieldset>
+ <p>
+ <input class="submit" type="submit" value="Submit"/>
+ </p>
+ </fieldset>
+</form>
+
+<h3>Syntetic examples</h3>
+<ul>
+ <li><a href="errorcontainer-demo.html">Error message containers in action</a></li>
+ <li><a href="custom-messages-metadata-demo.html">Custom Messages as Metadata</a></li>
+ <li><a href="radio-checkbox-select-demo.html">Radio and checkbox buttons and selects</a></li>
+ <li><a href="ajaxSubmit-intergration-demo.html">Integration with Form Plugin (AJAX submit)</a></li>
+ <li><a href="custom-methods-demo.html">Custom methods and message display.</a></li>
+ <li><a href="dynamic-totals.html">Dynamic forms</a></li>
+ <li><a href="themerollered.html">Forms styled with jQuery UI Themeroller</a></li>
+</ul>
+<h3>Real-world examples</h3>
+<ul>
+ <li><a href="milk/">Remember The Milk signup form</a></li>
+ <li><a href="marketo/">Marketo signup form</a></li>
+ <li><a href="multipart/">Buy and Sell a House multipart form</a></li>
+ <li><a href="captcha/">Remote captcha validation</a></li>
+</ul>
+
+<h3>Testsuite</h3>
+<ul>
+ <li><a href="../test/">Validation Testsuite</a></li>
+</ul>
+
+</div>
+
+<script src="http://www.google-analytics.com/urchin.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+_uacct = "UA-2623402-1";
+urchinTracker();
+</script>
+</body>
+</html> \ No newline at end of file
diff --git a/bug/bug/jquery-validation-1.8.1/demo/js/chili-1.7.pack.js b/bug/bug/jquery-validation-1.8.1/demo/js/chili-1.7.pack.js
new file mode 100644
index 0000000..90e7735
--- /dev/null
+++ b/bug/bug/jquery-validation-1.8.1/demo/js/chili-1.7.pack.js
@@ -0,0 +1 @@
+eval(function(p,a,c,k,e,d){e=function(c){return(c<a?"":e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)d[e(c)]=k[c]||e(c);k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1;};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p;}('8={3b:"1.6",2o:"1B.1Y,1B.23,1B.2e",2i:"",2H:1a,12:"",2C:1a,Z:"",2a:\'<H V="$0">$$</H>\',R:"&#F;",1j:"&#F;&#F;&#F;&#F;",1f:"&#F;<1W/>",3c:5(){9 $(y).39("1k")[0]},I:{},N:{}};(5($){$(5(){5 1J(l,a){5 2I(A,h){4 3=(1v h.3=="1h")?h.3:h.3.1w;k.1m({A:A,3:"("+3+")",u:1+(3.c(/\\\\./g,"%").c(/\\[.*?\\]/g,"%").3a(/\\((?!\\?)/g)||[]).u,z:(h.z)?h.z:8.2a})}5 2z(){4 1E=0;4 1x=x 2A;Q(4 i=0;i<k.u;i++){4 3=k[i].3;3=3.c(/\\\\\\\\|\\\\(\\d+)/g,5(m,1F){9!1F?m:"\\\\"+(1E+1+1t(1F))});1x.1m(3);1E+=k[i].u}4 1w=1x.3d("|");9 x 1u(1w,(a.3g)?"2j":"g")}5 1S(o){9 o.c(/&/g,"&3h;").c(/</g,"&3e;")}5 1R(o){9 o.c(/ +/g,5(1X){9 1X.c(/ /g,R)})}5 G(o){o=1S(o);7(R){o=1R(o)}9 o}5 2m(2E){4 i=0;4 j=1;4 h;19(h=k[i++]){4 1b=D;7(1b[j]){4 1U=/(\\\\\\$)|(?:\\$\\$)|(?:\\$(\\d+))/g;4 z=h.z.c(1U,5(m,1V,K){4 3f=\'\';7(1V){9"$"}v 7(!K){9 G(1b[j])}v 7(K=="0"){9 h.A}v{9 G(1b[j+1t(K,10)])}});4 1A=D[D.u-2];4 2h=D[D.u-1];4 2G=2h.2v(11,1A);11=1A+2E.u;14+=G(2G)+z;9 z}v{j+=h.u}}}4 R=8.R;4 k=x 2A;Q(4 A 2r a.k){2I(A,a.k[A])}4 14="";4 11=0;l.c(2z(),2m);4 2y=l.2v(11,l.u);14+=G(2y);9 14}5 2B(X){7(!8.N[X]){4 Y=\'<Y 32="1p" 33="p/2u"\'+\' 30="\'+X+\'">\';8.N[X]=1H;7($.31.34){4 W=J.1L(Y);4 $W=$(W);$("2d").1O($W)}v{$("2d").1O(Y)}}}5 1q(e,a){4 l=e&&e.1g&&e.1g[0]&&e.1g[0].37;7(!l)l="";l=l.c(/\\r\\n?/g,"\\n");4 C=1J(l,a);7(8.1j){C=C.c(/\\t/g,8.1j)}7(8.1f){C=C.c(/\\n/g,8.1f)}$(e).38(C)}5 1o(q,13){4 1l={12:8.12,2x:q+".1d",Z:8.Z,2w:q+".2u"};4 B;7(13&&1v 13=="2l")B=$.35(1l,13);v B=1l;9{a:B.12+B.2x,1p:B.Z+B.2w}}7($.2q)$.2q({36:"2l.15"});4 2n=x 1u("\\\\b"+8.2i+"\\\\b","2j");4 1e=[];$(8.2o).2D(5(){4 e=y;4 1n=$(e).3i("V");7(!1n){9}4 q=$.3u(1n.c(2n,""));7(\'\'!=q){1e.1m(e);4 f=1o(q,e.15);7(8.2H||e.15){7(!8.N[f.a]){1D{8.N[f.a]=1H;$.3v(f.a,5(M){M.f=f.a;8.I[f.a]=M;7(8.2C){2B(f.1p)}$("."+q).2D(5(){4 f=1o(q,y.15);7(M.f==f.a){1q(y,M)}})})}1I(3s){3t("a 3w Q: "+q+\'@\'+3z)}}}v{4 a=8.I[f.a];7(a){1q(e,a)}}}});7(J.1i&&J.1i.29){5 22(p){7(\'\'==p){9""}1z{4 16=(x 3A()).2k()}19(p.3x(16)>-1);p=p.c(/\\<1W[^>]*?\\>/3y,16);4 e=J.1L(\'<1k>\');e.3l=p;p=e.3m.c(x 1u(16,"g"),\'\\r\\n\');9 p}4 T="";4 18=1G;$(1e).3j().G("1k").U("2c",5(){18=y}).U("1M",5(){7(18==y)T=J.1i.29().3k});$("3n").U("3q",5(){7(\'\'!=T){2p.3r.3o(\'3p\',22(T));2V.2R=1a}}).U("2c",5(){T=""}).U("1M",5(){18=1G})}})})(1Z);8.I["1Y.1d"]={k:{2M:{3:/\\/\\*[^*]*\\*+(?:[^\\/][^*]*\\*+)*\\//},25:{3:/\\<!--(?:.|\\n)*?--\\>/},2f:{3:/\\/\\/.*/},2P:{3:/2L|2T|2J|2O|2N|2X|2K|2Z|2U|2S|2W|2Y|2Q|51|c-50/},53:{3:/\\/[^\\/\\\\\\n]*(?:\\\\.[^\\/\\\\\\n]*)*\\/[52]*/},1h:{3:/(?:\\\'[^\\\'\\\\\\n]*(?:\\\\.[^\\\'\\\\\\n]*)*\\\')|(?:\\"[^\\"\\\\\\n]*(?:\\\\.[^\\"\\\\\\n]*)*\\")/},27:{3:/\\b[+-]?(?:\\d*\\.?\\d+|\\d+\\.?\\d*)(?:[1r][+-]?\\d+)?\\b/},4X:{3:/\\b(D|1N|1K|1I|2t|2s|4W|1z|v|1a|Q|5|7|2r|4Z|x|1G|9|1Q|y|1H|1D|1v|4|4Y|19|59)\\b/},1y:{3:/\\b(58|2k|2p|5b|5a|55|J|54|57|1t|56|4L|4K|4N|4M|4H|4G|4J)\\b/},1C:{3:/(?:\\<\\w+)|(?:\\>)|(?:\\<\\/\\w+\\>)|(?:\\/\\>)/},26:{3:/\\s+\\w+(?=\\s*=)/},20:{3:/([\\"\\\'])(?:(?:[^\\1\\\\\\r\\n]*?(?:\\1\\1|\\\\.))*[^\\1\\\\\\r\\n]*?)\\1/},21:{3:/&[\\w#]+?;/},4I:{3:/(\\$|1Z)/}}};8.I["23.1d"]={k:{25:{3:/\\<!--(?:.|\\n)*?--\\>/},1h:{3:/(?:\\\'[^\\\'\\\\\\n]*(?:\\\\.[^\\\'\\\\\\n]*)*\\\')|(?:\\"[^\\"\\\\\\n]*(?:\\\\.[^\\"\\\\\\n]*)*\\")/},27:{3:/\\b[+-]?(?:\\d*\\.?\\d+|\\d+\\.?\\d*)(?:[1r][+-]?\\d+)?\\b/},1C:{3:/(?:\\<\\w+)|(?:\\>)|(?:\\<\\/\\w+\\>)|(?:\\/\\>)/},26:{3:/\\s+\\w+(?=\\s*=)/},20:{3:/([\\"\\\'])(?:(?:[^\\1\\\\\\r\\n]*?(?:\\1\\1|\\\\.))*[^\\1\\\\\\r\\n]*?)\\1/},21:{3:/&[\\w#]+?;/}}};8.I["2e.1d"]={k:{4S:{3:/\\/\\*[^*]*\\*+([^\\/][^*]*\\*+)*\\//},2f:{3:/(?:\\/\\/.*)|(?:[^\\\\]\\#.*)/},4V:{3:/\\\'[^\\\'\\\\]*(?:\\\\.[^\\\'\\\\]*)*\\\'/},4U:{3:/\\"[^\\"\\\\]*(?:\\\\.[^\\"\\\\]*)*\\"/},4P:{3:/\\b(?:[4O][2b][1s][1s]|[4R][4Q][2b][1P]|[5c][5v][1s][5u][1P])\\b/},5x:{3:/\\b[+-]?(\\d*\\.?\\d+|\\d+\\.?\\d*)([1r][+-]?\\d+)?\\b/},5y:{3:/\\b(?:5z|5w(?:5A|5E(?:5F(?:17|1c)|5G(?:17|1c))|17|1T|5B|5C|5D(?:17|1T|1c)|1c)|P(?:5h(?:5k|5j)|5e(?:5d|5g(?:5f|5l)|5r|E(?:5t|5s)|5n(?:5m|5p)|L(?:3X|3W)|O(?:S|3Y(?:3T|3S|3V))|3U|S(?:44|47|46)|41))|40)\\b/},1y:{3:/(?:\\$43|\\$42|\\$3R|\\$3G|\\$3F|\\$3I|\\$3H|\\$3C|\\$3B|\\$3D)\\b/},28:{3:/\\b(?:3O|3N|3P|3K|3J|3M|3L|48|4v|1N|1K|1I|4u|V|4x|4w|2t|4r|2s|4q|1z|4t|v|4s|4D|4C|4F|4E|4z|4y|4B|4A|4p|4d|2F|2F|4g|Q|4f|5|1y|7|4a|4m|4l|4o|4i|4k|x|4j|4h|4n|4b|4c|49|4e|3Q|3E|9|45|1Q|y|3Z|1D|5o|5q|4|19|5i)\\b/},2g:{3:/\\$(\\w+)/,z:\'<H V="28">$</H><H V="2g">$1</H>\'},1C:{3:/(?:\\<\\?[24][4T][24])|(?:\\<\\?)|(?:\\?\\>)/}}}',62,353,'|||exp|var|function||if|ChiliBook|return|recipe||replace||el|path||step|||steps|ingredients|||str|text|recipeName||||length|else||new|this|replacement|stepName|settings|dish|arguments||160|filter|span|recipes|document|||recipeLoaded|required|||for|replaceSpace||insidePRE|bind|class|domLink|stylesheetPath|link|stylesheetFolder||lastIndex|recipeFolder|options|perfect|chili|newline|ERROR|downPRE|while|false|aux|WARNING|js|codes|replaceNewLine|childNodes|string|selection|replaceTab|pre|settingsDef|push|elClass|getPath|stylesheet|makeDish|eE|Ll|parseInt|RegExp|typeof|source|exps|global|do|offset|code|tag|try|prevLength|aNum|null|true|catch|cook|case|createElement|mouseup|break|append|Ee|switch|replaceSpaces|escapeHTML|NOTICE|pattern|escaped|br|spaces|mix|jQuery|avalue|entity|preformatted|xml|Pp|htcom|aname|numbers|keyword|createRange|defaultReplacement|Uu|mousedown|head|php|com|variable|input|elementClass|gi|valueOf|object|chef|selectClass|elementPath|window|metaobjects|in|default|continue|css|substring|stylesheetFile|recipeFile|lastUnmatched|knowHow|Array|checkCSS|stylesheetLoading|each|matched|extends|unmatched|recipeLoading|prepareStep|unblockUI|ajaxSubmit|silverlight|jscom|unblock|block|plugin|clearFields|returnValue|fieldValue|blockUI|formSerialize|event|resetForm|ajaxForm|clearForm|fieldSerialize|href|browser|rel|type|msie|extend|selector|data|html|next|match|version|getPRE|join|lt|bit|ignoreCase|amp|attr|parents|htmlText|innerHTML|innerText|body|setData|Text|copy|clipboardData|recipeNotAvailable|alert|trim|getJSON|unavailable|indexOf|ig|recipePath|Date|_SESSION|_SERVER|php_errormsg|require_once|_GET|_FILES|_REQUEST|_POST|__METHOD__|__LINE__|and|abstract|__FILE__|__CLASS__|__FUNCTION__|require|_ENV|END|CONT|PREFIX|START|OCALSTATEDIR|IBDIR|UTPUT_HANDLER_|throw|__COMPILER_HALT_OFFSET__|VERSION|_COOKIE|GLOBALS|API|static|YSCONFDIR|HLIB_SUFFIX|array|protected|implements|print|private|exit|public|foreach|final|or|isset|old_function|list|include_once|include|php_user_filter|interface|exception|die|declare|elseif|echo|cfunction|as|const|clone|endswitch|endif|eval|endwhile|enddeclare|empty|endforeach|endfor|isNaN|NaN|jquery|Infinity|clearTimeout|setTimeout|clearInterval|setInterval|Nn|value|Rr|Tt|mlcom|Hh|string2|string1|delete|keywords|void|instanceof|content|taconite|gim|regexp|escape|constructor|parseFloat|unescape|toString|with|prototype|element|Ff|BINDIR|HP_|PATH|CONFIG_FILE_|EAR_|xor|INSTALL_DIR|EXTENSION_DIR|SCAN_DIR|MAX|INT_|unset|SIZE|use|DATADIR|XTENSION_DIR|OL|Ss|Aa|E_|number|const1|DEFAULT_INCLUDE_PATH|ALL|PARSE|STRICT|USER_|CO|MPILE_|RE_'.split('|'),0,{}))
diff --git a/bug/bug/jquery-validation-1.8.1/demo/login/images/bg.gif b/bug/bug/jquery-validation-1.8.1/demo/login/images/bg.gif
new file mode 100644
index 0000000..12662a4
--- /dev/null
+++ b/bug/bug/jquery-validation-1.8.1/demo/login/images/bg.gif
Binary files differ
diff --git a/bug/bug/jquery-validation-1.8.1/demo/login/images/header1.jpg b/bug/bug/jquery-validation-1.8.1/demo/login/images/header1.jpg
new file mode 100644
index 0000000..7098671
--- /dev/null
+++ b/bug/bug/jquery-validation-1.8.1/demo/login/images/header1.jpg
Binary files differ
diff --git a/bug/bug/jquery-validation-1.8.1/demo/login/images/page.gif b/bug/bug/jquery-validation-1.8.1/demo/login/images/page.gif
new file mode 100644
index 0000000..1717731
--- /dev/null
+++ b/bug/bug/jquery-validation-1.8.1/demo/login/images/page.gif
Binary files differ
diff --git a/bug/bug/jquery-validation-1.8.1/demo/login/images/required_star.gif b/bug/bug/jquery-validation-1.8.1/demo/login/images/required_star.gif
new file mode 100644
index 0000000..e4c16eb
--- /dev/null
+++ b/bug/bug/jquery-validation-1.8.1/demo/login/images/required_star.gif
Binary files differ
diff --git a/bug/bug/jquery-validation-1.8.1/demo/login/index.html b/bug/bug/jquery-validation-1.8.1/demo/login/index.html
new file mode 100644
index 0000000..63ae90f
--- /dev/null
+++ b/bug/bug/jquery-validation-1.8.1/demo/login/index.html
@@ -0,0 +1,76 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>Login Form with Email Password Link</title>
+ <meta http-equiv="content-type" content="text/html; charset=utf-8" />
+ <link rel="stylesheet" type="text/css" media="screen" href="screen.css" />
+
+ <script type="text/javascript" src="../../lib/jquery.js"></script>
+ <script type="text/javascript" src="../../jquery.validate.js"></script>
+
+ <script type="text/javascript">
+
+ $(function() {
+ // highlight
+ var elements = $("input[type!='submit'], textarea, select");
+ elements.focus(function(){
+ $(this).parents('li').addClass('highlight');
+ });
+ elements.blur(function(){
+ $(this).parents('li').removeClass('highlight');
+ });
+
+ $("#forgotpassword").click(function() {
+ $("#password").removeClass("required");
+ $("#login").submit();
+ $("#password").addClass("required");
+ return false;
+ });
+
+ $("#login").validate()
+ });
+ </script>
+
+</head>
+<body>
+ <div id="page">
+
+ <div id="header">
+ <h1>Login</h1>
+ </div>
+
+ <div id="content">
+ <p id="status"></p>
+ <form action="" method="get" id="login">
+ <fieldset>
+ <legend>User details</legend>
+ <ul>
+ <li>
+ <label for="email"><span class="required">Email address</span></label>
+ <input id="email" name="email" class="text required email" type="text" />
+ <label for="email" class="error">This must be a valid email address</label>
+ </li>
+
+ <li>
+ <label for="password"><span class="required">Password</span></label>
+ <input name="password" type="password" class="text required" id="password" minlength="4" maxlength="20" />
+ </li>
+
+ <li>
+ <label class="centered info"><a id="forgotpassword" href="#">Email my password...</a></label>
+ </li>
+ </ul>
+ </fieldset>
+
+ <fieldset class="submit">
+ <input type="submit" class="button" value="Login..." />
+ </fieldset>
+
+ <div class="clear"></div>
+ </form>
+
+ </div>
+ </div>
+
+</body>
+</html>
diff --git a/bug/bug/jquery-validation-1.8.1/demo/login/screen.css b/bug/bug/jquery-validation-1.8.1/demo/login/screen.css
new file mode 100644
index 0000000..e023a53
--- /dev/null
+++ b/bug/bug/jquery-validation-1.8.1/demo/login/screen.css
@@ -0,0 +1,457 @@
+/*******************************************************************************
+********************************************************************************
+**
+* - GENERAL
+*
+* - PAGE CONTAINERS
+*
+* - HEADER
+*
+* - CONTENT
+**
+********************************************************************************
+ ******************************************************************************/
+
+
+
+
+/* GENERAL ------------------------------------------------------------------ */
+
+ html
+ {
+ height: 100%;
+ }
+
+ /* Zero default margin & padding around common elements */
+ body, dd, dl, dt, form, h1, h2, h3, h4, h5, h6, ul, ol, li, p
+ {
+ margin: 0;
+ border: none;
+ padding: 0;
+ }
+
+ body
+ {
+ height: 100%;
+ background-color: #333333;
+ background-image: url(images/bg.gif);
+ background-position: 0% 0;
+ color: #000000;
+ line-height: 1.5;
+ font-family: Arial, Helvetica, sans-serif;
+ font-size: 62.5%;
+ text-align: center;
+ overflow:auto;
+ }
+
+ a:link
+ {
+ color: #003399;
+ }
+
+ a:visited
+ {
+ color: #B266B2;
+ }
+
+ a:hover
+ {
+ text-decoration: none;
+ }
+
+
+
+
+ /* PAGE CONTAINERS ---------------------------------------------------------- */
+
+ #page
+ {
+ width: 636px;
+ w\idth: 600px;
+ min-height: 100%;
+ margin: 17px auto;
+ padding: 0 18px;
+ background-image: url(images/page.gif);
+ background-repeat: repeat-y;
+ text-align: left;
+ }
+
+ * html #page
+ {
+ height: 100%;
+ }
+
+
+
+
+ /* HEADER ------------------------------------------------------------------- */
+
+ #header
+ {
+ height: 90px;
+ background-color: #B2DD32;
+ background-image: url(images/header1.jpg);
+ background-repeat: repeat-x;
+ }
+
+ h1
+ {
+ padding: 0 35px;
+ font-size: 2.2em;
+ font-weight: normal;
+ line-height: 82px;
+ }
+
+
+
+
+ /* CONTENT ------------------------------------------------------------------ */
+
+ #content
+ {
+ padding: 0 25px;
+ }
+
+ p
+ {
+ font-size:1.1em;
+ margin-top: 1.5em;
+ }
+
+ form
+ {
+ margin-top: 1.5em;
+ }
+
+
+
+ /*** MASTER FORM WIDTHS - CUSTOMIZE THIS TO CHANGE THE FORM LAYOUT ***/
+
+ /*
+ form width: 550px
+ left column: 190px / 180px + 10px padding
+ mid column: 200px
+ right column: 160px
+ */
+
+ form{
+ width:550px !important;
+ }
+
+ fieldset.submit
+ {
+ padding-left: 190px !important;
+ }
+
+ form label{
+ padding:0px 10px;
+ width: 160px;
+ }
+
+ form label.error,
+ form input.submit
+ {
+ margin-left:180px !important;
+ }
+
+ form fieldset fieldset label.error
+ {
+ margin-left:0px !important;
+ width:200px !important;
+ }
+
+
+ form .centered{
+ margin-left:180px !important;
+ width:200px !important;
+ }
+
+ form .text,
+ form .button,
+ form .group,
+ form .control,
+ form .submit,
+ form textarea,
+ form select
+ {
+ width: 200px !important;
+ }
+
+
+
+
+/*** FIELDSETS AND LEGENDS ***/
+
+ form{
+ width:550px;
+ margin-bottom:25px;
+ clear:both;
+ }
+
+ form fieldset
+ {
+ margin: 0 0 1.5em 0;
+ padding: 0 0 10px 0px;
+
+ border: 1px solid #BFBAB0;
+
+ background-color: #F2EFE9;
+ background-image: url(images/fieldset_gradient.jpg);
+ background-repeat: repeat-x;
+
+ background-color: #fff;
+ background-image: url(images/fieldset-gradient-02.jpg);
+ background-position:bottom;
+
+ float: left;
+ clear: both;
+ width: 100%;
+
+ }
+
+ form fieldset.submit
+ {
+ padding: 0px 10px 10px 190px;
+ border-style: none;
+
+ background-color: transparent;
+ background-image: none;
+
+ float: none;
+ width: auto;
+
+ }
+
+ form legend
+ {
+ color: #000000;
+
+ font-size:1.3em;
+ font-weight: bold;
+ font-variant:small-caps;
+
+ margin-left: 1em;
+ padding:0px 5px;
+ }
+
+ form fieldset p{
+ margin:10px 0px 0px 10px;
+ }
+
+/*** FORM BLOCKS ***/
+
+ form ul
+ {
+ padding:5px 10px;
+ list-style: none;
+ }
+
+ form li
+ {
+ width: 100%;
+
+ padding:5px 0px 10px 0;
+ border-top:1px dotted #ccc;
+
+ display:block;
+ float: left;
+ clear: left;
+ }
+
+ form li:first-child
+ {
+ border:none;
+ }
+
+
+/*** FORM BLOCK ELEMENTS ***/
+
+ form label
+ {
+ padding:0px 10px;
+ width: 160px;
+ float: left;
+ }
+
+ form .error{
+ color: #c00;
+ }
+
+ form label.error
+ {
+ color: #c00;
+
+ font-size: 100%;
+ font-weight: bold;
+ font-variant:small-caps;
+
+ width:308px;
+ display: none;
+
+ margin:8px 0px 0px 180px;
+ padding:3px 0px 0px 5px;
+ border-top:1px dotted #ccc;
+
+ clear:both;
+ }
+
+ form label.info{
+ font-size: 100%;
+ font-weight: bold;
+ font-variant:small-caps;
+
+ margin:8px 0px 0px 180px;
+ padding:3px 0px 0px 5px;
+ }
+
+ form fieldset fieldset,
+ form .group
+ {
+ width:200px;
+
+ margin: 0;
+ border:none;
+
+ background:none;
+
+ float:left;
+ clear: none;
+
+ }
+
+ form fieldset fieldset label
+ {
+ width:auto !important;
+ white-space:nowrap;
+ padding:0px;
+ margin:0px;
+ display:block;
+ clear:both;
+ }
+
+ form label label.error{
+ margin-left:0px;
+ }
+
+ form label.centered{
+ padding:0px 0px;
+ width:200px !important;
+ }
+
+ /* see also the error class at the foot of the page */
+
+ form fieldset fieldset label.spaced
+ {
+ margin-bottom:3px;
+ }
+
+/*** FORM ELEMENT COLUMNS ***/
+
+ .col-1,
+ fieldset fieldset.col-1 label
+ {
+ width:100%;
+ }
+
+ .col-2,
+ fieldset fieldset.col-2 label
+ {
+ width:50%;
+ }
+
+ .col-3,
+ fieldset fieldset.col-3 label
+ {
+ width:33%;
+ }
+
+ .col-4,
+ fieldset fieldset.col-4 label
+ {
+ width:25%;
+ }
+
+
+
+
+/*** FORM ELEMENTS ***/
+
+ form input.submit{
+ margin:10px 0px 10px 180px;
+ padding:0px 2px;
+ }
+
+ form input, textarea, select,
+ form label
+ {
+ font-size:1.1em;
+ line-height:1.6em;
+ }
+
+ form input, textarea, select
+ {
+ font-family: Verdana, Arial, Helvetica, sans-serif;
+ }
+
+ form .input[type="text"],
+ form textarea
+ {
+ padding:1px;
+ }
+
+ form .input[type="radio"],
+ form .input[type="checkbox"]
+ {
+ margin:0px;
+ padding:0px;
+ position:relative;
+ top:3px;
+ }
+
+/*** SUPPORTING CLASSES ***/
+
+ form label.required{
+ background-image:url(images/required_star.gif);
+ background-position:right;
+ background-repeat:no-repeat;
+ }
+
+ form span.required{
+ padding-right:15px;
+ }
+
+ form .clean
+ {
+ border:none;
+ }
+
+ form .info{
+ padding-top:0.5em;
+ font-size:80%;
+ line-height:100%;
+ color:#aaa;
+ }
+
+ form .indent{
+ padding:2px 20px;
+ width:auto !important;
+ white-space:nowrap;
+ padding-left: 25px !important;
+ }
+
+ form label.disabled{
+ color:#aaa;
+ }
+
+ form .highlight{
+ background-color:#e2e2e2;
+ }
+
+ .off{
+ display:none !important;
+ }
+
+ .clear{
+ clear:both;
+ }
+ \ No newline at end of file
diff --git a/bug/bug/jquery-validation-1.8.1/demo/marketo/emails.php b/bug/bug/jquery-validation-1.8.1/demo/marketo/emails.php
new file mode 100644
index 0000000..fc45dbd
--- /dev/null
+++ b/bug/bug/jquery-validation-1.8.1/demo/marketo/emails.php
@@ -0,0 +1,10 @@
+<?php
+$request = trim(strtolower($_REQUEST['email']));
+$emails = array('glen@marketo.com', 'george@bush.gov', 'me@god.com', 'aboutface@cooper.com', 'steam@valve.com', 'bill@gates.com');
+$valid = 'true';
+foreach($emails as $email) {
+ if( strtolower($email) == $request )
+ $valid = 'false';
+}
+echo $valid;
+?> \ No newline at end of file
diff --git a/bug/bug/jquery-validation-1.8.1/demo/marketo/emails.phps b/bug/bug/jquery-validation-1.8.1/demo/marketo/emails.phps
new file mode 100644
index 0000000..d2219cc
--- /dev/null
+++ b/bug/bug/jquery-validation-1.8.1/demo/marketo/emails.phps
@@ -0,0 +1,10 @@
+<?php
+$request = trim(strtolower($_REQUEST['value']));
+$emails = array('glen@marketo.com', 'george@bush.gov', 'me@god.com', 'aboutface@cooper.com', 'steam@valve.com', 'bill@gates.com');
+$valid = 'true';
+foreach($emails as $email) {
+ if( strtolower($email) == $request )
+ $valid = 'false';
+}
+echo $valid;
+?> \ No newline at end of file
diff --git a/bug/bug/jquery-validation-1.8.1/demo/marketo/ie6.css b/bug/bug/jquery-validation-1.8.1/demo/marketo/ie6.css
new file mode 100644
index 0000000..a1a24b4
--- /dev/null
+++ b/bug/bug/jquery-validation-1.8.1/demo/marketo/ie6.css
@@ -0,0 +1,35 @@
+img.png {
+ background-image: expression(
+ this.runtimeStyle.backgroundImage = "none",
+ this.runtimeStyle.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + this.src + "', sizingMethod='image')",
+ this.src = "images/blank.gif"
+ );
+}
+
+
+
+.hidden {
+ display:none
+}
+
+
+
+div.login { width: 120px;}
+div.nav-global LI,
+div.nav-global LI A { display:inline !important; zoom: 1;}
+
+div.nav-global LI A:hover,
+div.nav-left li a:hover { text-decoration: none;}
+
+div.buttonSubmit { height: 36px;}
+
+div.buttonSubmit input { position: absolute;}
+
+div.offerHeader {margin-left: 3px;}
+
+#col-left { height: 340px;}
+
+span#cancellation {
+ position: relative;
+ top: 20px;
+} \ No newline at end of file
diff --git a/bug/bug/jquery-validation-1.8.1/demo/marketo/images/backRequiredGray.gif b/bug/bug/jquery-validation-1.8.1/demo/marketo/images/backRequiredGray.gif
new file mode 100644
index 0000000..61d29ad
--- /dev/null
+++ b/bug/bug/jquery-validation-1.8.1/demo/marketo/images/backRequiredGray.gif
Binary files differ
diff --git a/bug/bug/jquery-validation-1.8.1/demo/marketo/images/back_green-fade.gif b/bug/bug/jquery-validation-1.8.1/demo/marketo/images/back_green-fade.gif
new file mode 100644
index 0000000..3077452
--- /dev/null
+++ b/bug/bug/jquery-validation-1.8.1/demo/marketo/images/back_green-fade.gif
Binary files differ
diff --git a/bug/bug/jquery-validation-1.8.1/demo/marketo/images/back_nav_blue.gif b/bug/bug/jquery-validation-1.8.1/demo/marketo/images/back_nav_blue.gif
new file mode 100644
index 0000000..3d3da3a
--- /dev/null
+++ b/bug/bug/jquery-validation-1.8.1/demo/marketo/images/back_nav_blue.gif
Binary files differ
diff --git a/bug/bug/jquery-validation-1.8.1/demo/marketo/images/blank.gif b/bug/bug/jquery-validation-1.8.1/demo/marketo/images/blank.gif
new file mode 100644
index 0000000..3b042d8
--- /dev/null
+++ b/bug/bug/jquery-validation-1.8.1/demo/marketo/images/blank.gif
Binary files differ
diff --git a/bug/bug/jquery-validation-1.8.1/demo/marketo/images/button-submit.gif b/bug/bug/jquery-validation-1.8.1/demo/marketo/images/button-submit.gif
new file mode 100644
index 0000000..54d291c
--- /dev/null
+++ b/bug/bug/jquery-validation-1.8.1/demo/marketo/images/button-submit.gif
Binary files differ
diff --git a/bug/bug/jquery-validation-1.8.1/demo/marketo/images/favicon.ico b/bug/bug/jquery-validation-1.8.1/demo/marketo/images/favicon.ico
new file mode 100644
index 0000000..0f57c53
--- /dev/null
+++ b/bug/bug/jquery-validation-1.8.1/demo/marketo/images/favicon.ico
Binary files differ
diff --git a/bug/bug/jquery-validation-1.8.1/demo/marketo/images/help.png b/bug/bug/jquery-validation-1.8.1/demo/marketo/images/help.png
new file mode 100644
index 0000000..73817ff
--- /dev/null
+++ b/bug/bug/jquery-validation-1.8.1/demo/marketo/images/help.png
Binary files differ
diff --git a/bug/bug/jquery-validation-1.8.1/demo/marketo/images/left-nav-callout-long.png b/bug/bug/jquery-validation-1.8.1/demo/marketo/images/left-nav-callout-long.png
new file mode 100644
index 0000000..c5b8fad
--- /dev/null
+++ b/bug/bug/jquery-validation-1.8.1/demo/marketo/images/left-nav-callout-long.png
Binary files differ
diff --git a/bug/bug/jquery-validation-1.8.1/demo/marketo/images/login-sprite.gif b/bug/bug/jquery-validation-1.8.1/demo/marketo/images/login-sprite.gif
new file mode 100644
index 0000000..799b196
--- /dev/null
+++ b/bug/bug/jquery-validation-1.8.1/demo/marketo/images/login-sprite.gif
Binary files differ
diff --git a/bug/bug/jquery-validation-1.8.1/demo/marketo/images/logo_marketo.gif b/bug/bug/jquery-validation-1.8.1/demo/marketo/images/logo_marketo.gif
new file mode 100644
index 0000000..62663bc
--- /dev/null
+++ b/bug/bug/jquery-validation-1.8.1/demo/marketo/images/logo_marketo.gif
Binary files differ
diff --git a/bug/bug/jquery-validation-1.8.1/demo/marketo/images/sf.png b/bug/bug/jquery-validation-1.8.1/demo/marketo/images/sf.png
new file mode 100644
index 0000000..962bf2a
--- /dev/null
+++ b/bug/bug/jquery-validation-1.8.1/demo/marketo/images/sf.png
Binary files differ
diff --git a/bug/bug/jquery-validation-1.8.1/demo/marketo/images/step1-24.gif b/bug/bug/jquery-validation-1.8.1/demo/marketo/images/step1-24.gif
new file mode 100644
index 0000000..9ddf1e3
--- /dev/null
+++ b/bug/bug/jquery-validation-1.8.1/demo/marketo/images/step1-24.gif
Binary files differ
diff --git a/bug/bug/jquery-validation-1.8.1/demo/marketo/images/step2-24.gif b/bug/bug/jquery-validation-1.8.1/demo/marketo/images/step2-24.gif
new file mode 100644
index 0000000..bada27f
--- /dev/null
+++ b/bug/bug/jquery-validation-1.8.1/demo/marketo/images/step2-24.gif
Binary files differ
diff --git a/bug/bug/jquery-validation-1.8.1/demo/marketo/images/step3-24.gif b/bug/bug/jquery-validation-1.8.1/demo/marketo/images/step3-24.gif
new file mode 100644
index 0000000..8a45393
--- /dev/null
+++ b/bug/bug/jquery-validation-1.8.1/demo/marketo/images/step3-24.gif
Binary files differ
diff --git a/bug/bug/jquery-validation-1.8.1/demo/marketo/images/tab-sprite.gif b/bug/bug/jquery-validation-1.8.1/demo/marketo/images/tab-sprite.gif
new file mode 100644
index 0000000..048b9b0
--- /dev/null
+++ b/bug/bug/jquery-validation-1.8.1/demo/marketo/images/tab-sprite.gif
Binary files differ
diff --git a/bug/bug/jquery-validation-1.8.1/demo/marketo/images/tab_green.gif b/bug/bug/jquery-validation-1.8.1/demo/marketo/images/tab_green.gif
new file mode 100644
index 0000000..ef1c084
--- /dev/null
+++ b/bug/bug/jquery-validation-1.8.1/demo/marketo/images/tab_green.gif
Binary files differ
diff --git a/bug/bug/jquery-validation-1.8.1/demo/marketo/images/time.png b/bug/bug/jquery-validation-1.8.1/demo/marketo/images/time.png
new file mode 100644
index 0000000..911da3f
--- /dev/null
+++ b/bug/bug/jquery-validation-1.8.1/demo/marketo/images/time.png
Binary files differ
diff --git a/bug/bug/jquery-validation-1.8.1/demo/marketo/images/toggle.gif b/bug/bug/jquery-validation-1.8.1/demo/marketo/images/toggle.gif
new file mode 100644
index 0000000..ad1bf0f
--- /dev/null
+++ b/bug/bug/jquery-validation-1.8.1/demo/marketo/images/toggle.gif
Binary files differ
diff --git a/bug/bug/jquery-validation-1.8.1/demo/marketo/images/warning.gif b/bug/bug/jquery-validation-1.8.1/demo/marketo/images/warning.gif
new file mode 100644
index 0000000..60da04c
--- /dev/null
+++ b/bug/bug/jquery-validation-1.8.1/demo/marketo/images/warning.gif
Binary files differ
diff --git a/bug/bug/jquery-validation-1.8.1/demo/marketo/index.html b/bug/bug/jquery-validation-1.8.1/demo/marketo/index.html
new file mode 100644
index 0000000..b45530a
--- /dev/null
+++ b/bug/bug/jquery-validation-1.8.1/demo/marketo/index.html
@@ -0,0 +1,247 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/2000/REC-xhtml1-200000126/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<meta name="title" content="Subscription Signup | Marketo" />
+<meta name="robots" content="index, follow" />
+<meta name="description" content="Marketo Search Marketing application" />
+<meta name="keywords" content="Marketo, Search Marketing" />
+<meta name="language" content="en" />
+<title>Subscription Signup | Marketo</title>
+
+<link rel="shortcut icon" href="/favicon.ico" />
+
+<script src="../../lib/jquery.js" type="text/javascript"></script>
+<script src="../../jquery.validate.js" type="text/javascript"></script>
+
+<script type="text/javascript" src="jquery.maskedinput.js"></script>
+<script type="text/javascript" src="mktSignup.js"></script>
+
+<link rel="stylesheet" type="text/css" media="screen" href="stylesheet.css" />
+</head>
+<body>
+<!--[if lte IE 6]>
+ <link rel="stylesheet" type="text/css" media="all" href="ie6.css" />
+<![endif]-->
+
+<!-- start page wrapper --><div id="letterbox">
+
+<!-- start header container -->
+<div id="header-background">
+ <div class="nav-global-container">
+
+ <div class="login"><a href="#"><span></span>Customer Login</a></div>
+ <div class="logo"><a href="#"><img src="images/logo_marketo.gif" width="168" height="73" alt="Marketo" /></a></div>
+ <div class="nav-global">
+ <ul>
+ <li><a href="#" class="nav-g01"><span></span>Home</a></li>
+ <li><a href="#" class="nav-g02"><span></span>Products</a></li>
+ <li><a href="#" class="nav-g04"><span></span>B2B Marketing Resources</a></li>
+
+ <li><a href="#" class="nav-g05"><span></span>About Marketo</a></li>
+ </ul>
+ </div>
+
+ </div>
+</div>
+<!-- end header container -->
+<div class="line-grey-tier"></div>
+
+<!-- start page container 2 div-->
+<div id="page-container" class="resize"><div id="page-content-inner" class="resize">
+
+<!-- start col-main -->
+
+<div id="col-main" class="resize" style="">
+
+
+
+ <!-- start main content -->
+ <div class="main-content resize">
+
+ <div class="action-container" style="display:none;"></div>
+
+
+<h1>Step 1 of 2 </h1>
+<p>
+</p>
+<br clear="all" />
+<div>
+ <form id="profileForm" type="actionForm" action="step2.htm" method="get" >
+
+
+ <div class="error" style="display:none;">
+ <img src="images/warning.gif" alt="Warning!" width="24" height="24" style="float:left; margin: -5px 10px 0px 0px; " />
+
+ <span></span>.<br clear="all"/>
+ </div>
+
+
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="label"><label for="co_name">Company Name:</label></td>
+ <td class="field">
+ <input id="co_name" class="required" maxlength="40" name="co_name" size="20" type="text" tabindex="1" value="" />
+ </td>
+ </tr>
+ <tr>
+ <td class="label"><label for="co_url">Company URL:</label></td>
+ <td class="field">
+ <input id="co_url" class="required defaultInvalid url" maxlength="40" name="co_url" style="width:163px" type="text" tabindex="2" value="http://" />
+ </td>
+ </tr>
+ <tr>
+ <td/><td/>
+ </tr>
+ <tr>
+ <td class="label"><label for="first_name">First Name:</label></td>
+ <td class="field">
+ <input id="first_name" class="required" maxlength="40" name="first_name" size="20" type="text" tabindex="3" value="" />
+ </td>
+ </tr>
+ <tr>
+ <td class="label"><label for="last_name">Last Name:</label></td>
+ <td class="field">
+ <input id="last_name" class="required" maxlength="40" name="last_name" size="20" type="text" tabindex="4" value="" />
+ </td>
+ </tr>
+ <tr>
+ <td class="label"><label for="address1">Company Address:</label></td>
+ <td class="field">
+ <input maxlength="40" class="required" name="address1" size="20" type="text" tabindex="5" value="" />
+ </td>
+ </tr>
+ <tr>
+ <td class="label"></td>
+ <td class="field">
+ <input maxlength="40" name="address2" size="20" type="text" tabindex="6" value="" />
+ </td>
+ </tr>
+ <tr>
+ <td class="label"><label for="city">City:</label></td>
+ <td class="field">
+ <input maxlength="40" class="required" name="city" size="20" type="text" tabindex="7" value="" />
+ </td>
+ </tr>
+ <tr>
+ <td class="label"><label for="state">State:</label></td>
+ <td class="field">
+ <select id="state" class="required" name="state" style="margin-left: 4px;" tabindex="8">
+ <option value="">Choose State:</option>
+ <option value="AL">Alabama</option><option value="AK">Alaska</option><option value="AZ">Arizona</option><option value="AR">Arkansas</option><option value="CA">California</option><option value="CO">Colorado</option><option value="CT">Connecticut</option><option value="DE">Delaware</option><option value="FL">Florida</option><option value="GA">Georgia</option><option value="HI">Hawaii</option><option value="ID">Idaho</option><option value="IL">Illinois</option><option value="IN">Indiana</option><option value="IA">Iowa</option><option value="KS">Kansas</option><option value="KY">Kentucky</option><option value="LA">Louisiana</option><option value="ME">Maine</option><option value="MD">Maryland</option><option value="MA">Massachusetts</option><option value="MI">Michigan</option><option value="MN">Minnesota</option><option value="MS">Mississippi</option><option value="MO">Missouri</option><option value="MT">Montana</option><option value="NE">Nebraska</option><option value="NV">Nevada</option><option value="NH">New Hampshire</option><option value="NJ">New Jersey</option><option value="NM">New Mexico</option><option value="NY">New York</option><option value="NC">North Carolina</option><option value="ND">North Dakota</option><option value="OH">Ohio</option><option value="OK">Oklahoma</option><option value="OR">Oregon</option><option value="PA">Pennsylvania</option><option value="RI">Rhode Island</option><option value="SC">South Carolina</option><option value="SD">South Dakota</option><option value="TN">Tennessee</option><option value="TX">Texas</option><option value="UT">Utah</option><option value="VT">Vermont</option><option value="VA">Virginia</option><option value="WA">Washington</option><option value="WV">West Virginia</option><option value="WI">Wisconsin</option><option value="WY">Wyoming</option>
+ </select>
+ </td>
+ </tr>
+
+ <tr>
+ <td class="label"><label for="zip">Zip:</label></td>
+ <td class="field">
+ <input maxlength="10" name="zip" style="width: 100px" type="text" class="required zipcode" tabindex="9" value="" />
+ </td>
+ </tr>
+ <tr>
+ <td class="label"><label for="phone">Phone:</label></td>
+ <td class="field">
+ <input id="phone" maxlength="14" name="phone" type="text" class="required phone" tabindex="10" value="" />
+ </td>
+ </tr>
+
+
+
+ <tr>
+ <td colspan="2">
+ <h2 style="border-bottom: 1px solid #CCCCCC;">Login Information</h2>
+ </td>
+ </tr>
+
+
+ <tr>
+ <td class="label"><label for="email">Email:</label></td>
+ <td class="field">
+ <input id="email" class="required email" remote="emails.php" maxlength="40" name="email" size="20" type="text" tabindex="11" value="" />
+ </td>
+ </tr>
+
+ <tr>
+ <td class="label"><label for="password1">Password:</label></td>
+ <td class="field">
+ <input id="password1" class="required password" maxlength="40" name="password1" size="20" type="password" tabindex="12" value="" />
+ </td>
+ </tr>
+ <tr>
+ <td class="label"><label for="password2">Retype Password:</label></td>
+ <td class="field">
+ <input id="password2" class="required" equalTo="#password1" maxlength="40" name="password2" size="20" type="password" tabindex="13" value="" />
+ <div class="formError"></div>
+ </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>
+ <div class="buttonSubmit">
+ <span></span>
+ <input class="formButton" type="submit" value="Next" style="width: 140px" tabindex="14" />
+ </div>
+
+ </td>
+ </tr>
+ </table><br /><br />
+ </form>
+ <br clear="all"/>
+
+
+</div>
+
+
+
+ </div> <!-- end main content -->
+ <br />
+</div> <!-- end col-main -->
+
+<!-- start left col -->
+<div id="col-left" class="nav-left-back empty resize" style="position: absolute; min-height: 450px;">
+ <div class="col-left-header-tab" style="position: absolute;">Signup</div>
+ <div class="nav-left">
+
+ </div>
+
+
+ <div class="left-nav-callout png" style="top: 15px; margin-bottom: 100px;">
+ <img src="images/left-nav-callout-long.png" class="png" alt="" />
+ <h6>Sign Up Process</h6>
+ <a style="background-image: url(images/step1-24.gif); font-weight: normal; text-decoration: none; cursor: default;">Sign up with a valid credit card.</a>
+ <a style="background-image: url(images/step2-24.gif); font-weight: normal; text-decoration: none; cursor: default;">Connect to your Google AdWords account. You will need your AdWords Customer ID.</a>
+ <a style="background-image: url(images/step3-24.gif); font-weight: normal; text-decoration: none; cursor: default;">Start your 30 day trial. No payments until trial ends.</a>
+ </div>
+
+<div class="footerAddress">
+<b>Marketo Inc.</b><br />
+1710 S. Amphlett Blvd.<br />
+San Mateo, CA 94402 USA<br />
+</div>
+<br clear="all"/>
+</div> <!-- end left col -->
+
+</div> </div> <!-- end page container 2 divs-->
+
+ <div id="footer-container" align="center">
+ <div class="footer">
+ <ul>
+ <li><a href="..">Home</a></li>
+ <li class="line-off"><a href="step2.htm">Second step</a></li>
+ </ul>
+ </div></div>
+
+
+
+<!-- end page wrapper -->
+</div>
+<script src="http://www.google-analytics.com/urchin.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+_uacct = "UA-2623402-1";
+urchinTracker();
+</script>
+ </body>
+</html>
diff --git a/bug/bug/jquery-validation-1.8.1/demo/marketo/jquery.maskedinput.js b/bug/bug/jquery-validation-1.8.1/demo/marketo/jquery.maskedinput.js
new file mode 100644
index 0000000..0cd5cfc
--- /dev/null
+++ b/bug/bug/jquery-validation-1.8.1/demo/marketo/jquery.maskedinput.js
@@ -0,0 +1,267 @@
+/*
+ * Copyright (c) 2007 Josh Bush (digitalbush.com)
+ *
+ * Permission is hereby granted, free of charge, to any person
+ * obtaining a copy of this software and associated documentation
+ * files (the "Software"), to deal in the Software without
+ * restriction, including without limitation the rights to use,
+ * copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following
+ * conditions:
+
+ * The above copyright notice and this permission notice shall be
+ * included in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+ * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+ * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ * OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+/*
+ * Version: 1.1
+ * Release: 2007-09-08
+ */
+(function($) {
+ //Helper Functions for Caret positioning
+ function getCaretPosition(ctl){
+ var res = {begin: 0, end: 0 };
+ if (ctl.setSelectionRange){
+ res.begin = ctl.selectionStart;
+ res.end = ctl.selectionEnd;
+ }else if (document.selection && document.selection.createRange){
+ var range = document.selection.createRange();
+ res.begin = 0 - range.duplicate().moveStart('character', -100000);
+ res.end = res.begin + range.text.length;
+ }
+ return res;
+ };
+
+ function setCaretPosition(ctl, pos){
+ if(ctl.setSelectionRange){
+ ctl.focus();
+ ctl.setSelectionRange(pos,pos);
+ }else if (ctl.createTextRange){
+ var range = ctl.createTextRange();
+ range.collapse(true);
+ range.moveEnd('character', pos);
+ range.moveStart('character', pos);
+ range.select();
+ }
+ };
+
+ //Predefined character definitions
+ var charMap={
+ '9':"[0-9]",
+ 'a':"[A-Za-z]",
+ '*':"[A-Za-z0-9]"
+ };
+
+ //Helper method to inject character definitions
+ $.mask={
+ addPlaceholder : function(c,r){
+ charMap[c]=r;
+ }
+ };
+
+ $.fn.unmask=function(){
+ return this.trigger("unmask");
+ };
+
+ //Main Method
+ $.fn.mask = function(mask,settings) {
+ settings = $.extend({
+ placeholder: "_",
+ completed: null
+ }, settings);
+
+ //Build Regex for format validation
+ var reString="^";
+ for(var i=0;i<mask.length;i++)
+ reString+=(charMap[mask.charAt(i)] || ("\\"+mask.charAt(i)));
+ reString+="$";
+ var re = new RegExp(reString);
+
+ return this.each(function(){
+ var input=$(this);
+ var buffer=new Array(mask.length);
+ var locked=new Array(mask.length);
+
+ //Build buffer layout from mask
+ for(var i=0;i<mask.length;i++){
+ locked[i]=charMap[mask.charAt(i)]==null;
+ buffer[i]=locked[i]?mask.charAt(i):settings.placeholder;
+ }
+
+ /*Event Bindings*/
+ function focusEvent(){
+ checkVal();
+ writeBuffer();
+ setTimeout(function(){
+ setCaretPosition(input[0],0);
+ },0);
+ };
+ input.bind("focus",focusEvent);
+
+ input.bind("blur",checkVal);
+
+ //Paste events for IE and Mozilla thanks to Kristinn Sigmundsson
+ if ($.browser.msie)
+ this.onpaste= function(){setTimeout(checkVal,0);};
+ else if ($.browser.mozilla)
+ this.addEventListener('input',checkVal,false);
+
+ var ignore=false; //Variable for ignoring control keys
+
+ function keydownEvent(e){
+ var pos=getCaretPosition(this);
+ var k = e.keyCode;
+ ignore=(k < 16 || (k > 16 && k < 32 ) || (k > 32 && k < 41));
+
+ //delete selection before proceeding
+ if((pos.begin-pos.end)!=0 && (!ignore || k==8 || k==46)){
+ clearBuffer(pos.begin,pos.end);
+ }
+ //backspace and delete get special treatment
+ if(k==8){//backspace
+ while(pos.begin-->=0){
+ if(!locked[pos.begin]){
+ buffer[pos.begin]=settings.placeholder;
+ if($.browser.opera){
+ //Opera won't let you cancel the backspace, so we'll let it backspace over a dummy character.
+ writeBuffer(pos.begin);
+ setCaretPosition(this,pos.begin+1);
+ }else{
+ writeBuffer();
+ setCaretPosition(this,pos.begin);
+ }
+ return false;
+ }
+ }
+ }else if(k==46){//delete
+ clearBuffer(pos.begin,pos.begin+1);
+ writeBuffer();
+ setCaretPosition(this,pos.begin);
+ return false;
+ }else if (k==27){
+ clearBuffer(0,mask.length);
+ writeBuffer();
+ setCaretPosition(this,0);
+ return false;
+ }
+
+ };
+ input.bind("keydown",keydownEvent);
+
+ function keypressEvent(e){
+ if(ignore){
+ ignore=false;
+ return;
+ }
+ e=e||window.event;
+ var k=e.charCode||e.keyCode||e.which;
+
+ var pos=getCaretPosition(this);
+ var caretPos=pos.begin;
+
+ if(e.ctrlKey || e.altKey){//Ignore
+ return true;
+ }else if ((k>=41 && k<=122) ||k==32 || k>186){//typeable characters
+ while(pos.begin<mask.length){
+ var reString=charMap[mask.charAt(pos.begin)];
+ var match;
+ if(reString){
+ var reChar=new RegExp(reString);
+ match=String.fromCharCode(k).match(reChar);
+ }else{//we're on a mask char, go forward and try again
+ pos.begin+=1;
+ pos.end=pos.begin;
+ caretPos+=1;
+ continue;
+ }
+
+ if(match)
+ buffer[pos.begin]=String.fromCharCode(k);
+ else
+ return false;//reject char
+
+ while(++caretPos<mask.length){//seek forward to next typable position
+ if(!locked[caretPos])
+ break;
+ }
+ break;
+ }
+ }else
+ return false;
+
+ writeBuffer();
+ if(settings.completed && caretPos>=buffer.length)
+ settings.completed.call(input);
+ else
+ setCaretPosition(this,caretPos);
+
+ return false;
+ };
+ input.bind("keypress",keypressEvent);
+
+ /*Helper Methods*/
+ function clearBuffer(start,end){
+ for(var i=start;i<end;i++){
+ if(!locked[i])
+ buffer[i]=settings.placeholder;
+ }
+ };
+
+ function writeBuffer(pos){
+ var s="";
+ for(var i=0;i<mask.length;i++){
+ s+=buffer[i];
+ if(i==pos)
+ s+=settings.placeholder;
+ }
+ input.val(s);
+ return s;
+ };
+
+ function checkVal(){
+ //try to place charcters where they belong
+ var test=input.val();
+ var pos=0;
+ for(var i=0;i<mask.length;i++){
+ if(!locked[i]){
+ while(pos++<test.length){
+ //Regex Test each char here.
+ var reChar=new RegExp(charMap[mask.charAt(i)]);
+ if(test.charAt(pos-1).match(reChar)){
+ buffer[i]=test.charAt(pos-1);
+ break;
+ }
+ }
+ }
+ }
+ var s=writeBuffer();
+ if(!s.match(re)){
+ input.val("");
+ clearBuffer(0,mask.length);
+ }
+ };
+
+ input.one("unmask",function(){
+ input.unbind("focus",focusEvent);
+ input.unbind("blur",checkVal);
+ input.unbind("keydown",keydownEvent);
+ input.unbind("keypress",keypressEvent);
+ if ($.browser.msie)
+ this.onpaste= null;
+ else if ($.browser.mozilla)
+ this.removeEventListener('input',checkVal,false);
+ });
+
+ });
+ };
+})(jQuery); \ No newline at end of file
diff --git a/bug/bug/jquery-validation-1.8.1/demo/marketo/mktSignup.js b/bug/bug/jquery-validation-1.8.1/demo/marketo/mktSignup.js
new file mode 100644
index 0000000..b86a43f
--- /dev/null
+++ b/bug/bug/jquery-validation-1.8.1/demo/marketo/mktSignup.js
@@ -0,0 +1,125 @@
+ $(document).ready(function(){
+
+ jQuery.validator.addMethod("password", function( value, element ) {
+ var result = this.optional(element) || value.length >= 6 && /\d/.test(value) && /[a-z]/i.test(value);
+ if (!result) {
+ element.value = "";
+ var validator = this;
+ setTimeout(function() {
+ validator.blockFocusCleanup = true;
+ element.focus();
+ validator.blockFocusCleanup = false;
+ }, 1);
+ }
+ return result;
+ }, "Your password must be at least 6 characters long and contain at least one number and one character.");
+
+ // a custom method making the default value for companyurl ("http://") invalid, without displaying the "invalid url" message
+ jQuery.validator.addMethod("defaultInvalid", function(value, element) {
+ return value != element.defaultValue;
+ }, "");
+
+ jQuery.validator.addMethod("billingRequired", function(value, element) {
+ if ($("#bill_to_co").is(":checked"))
+ return $(element).parents(".subTable").length;
+ return !this.optional(element);
+ }, "");
+
+ jQuery.validator.messages.required = "";
+ $("form").validate({
+ invalidHandler: function(e, validator) {
+ var errors = validator.numberOfInvalids();
+ if (errors) {
+ var message = errors == 1
+ ? 'You missed 1 field. It has been highlighted below'
+ : 'You missed ' + errors + ' fields. They have been highlighted below';
+ $("div.error span").html(message);
+ $("div.error").show();
+ } else {
+ $("div.error").hide();
+ }
+ },
+ onkeyup: false,
+ submitHandler: function() {
+ $("div.error").hide();
+ alert("submit! use link below to go to the other step");
+ },
+ messages: {
+ password2: {
+ required: " ",
+ equalTo: "Please enter the same password as above"
+ },
+ email: {
+ required: " ",
+ email: "Please enter a valid email address, example: you@yourdomain.com",
+ remote: jQuery.validator.format("{0} is already taken, please enter a different address.")
+ }
+ },
+ debug:true
+ });
+
+ $(".resize").vjustify();
+ $("div.buttonSubmit").hoverClass("buttonSubmitHover");
+
+ if ($.browser.safari) {
+ $("body").addClass("safari");
+ }
+
+ $("input.phone").mask("(999) 999-9999");
+ $("input.zipcode").mask("99999");
+ var creditcard = $("#creditcard").mask("9999 9999 9999 9999");
+
+ $("#cc_type").change(
+ function() {
+ switch ($(this).val()){
+ case 'amex':
+ creditcard.unmask().mask("9999 999999 99999");
+ break;
+ default:
+ creditcard.unmask().mask("9999 9999 9999 9999");
+ break;
+ }
+ }
+ );
+
+ // toggle optional billing address
+ var subTableDiv = $("div.subTableDiv");
+ var toggleCheck = $("input.toggleCheck");
+ toggleCheck.is(":checked")
+ ? subTableDiv.hide()
+ : subTableDiv.show();
+ $("input.toggleCheck").click(function() {
+ if (this.checked == true) {
+ subTableDiv.slideUp("medium");
+ $("form").valid();
+ } else {
+ subTableDiv.slideDown("medium");
+ }
+ });
+
+
+});
+
+$.fn.vjustify = function() {
+ var maxHeight=0;
+ $(".resize").css("height","auto");
+ this.each(function(){
+ if (this.offsetHeight > maxHeight) {
+ maxHeight = this.offsetHeight;
+ }
+ });
+ this.each(function(){
+ $(this).height(maxHeight);
+ if (this.offsetHeight > maxHeight) {
+ $(this).height((maxHeight-(this.offsetHeight-maxHeight)));
+ }
+ });
+};
+
+$.fn.hoverClass = function(classname) {
+ return this.hover(function() {
+ $(this).addClass(classname);
+ }, function() {
+ $(this).removeClass(classname);
+ });
+}; \ No newline at end of file
diff --git a/bug/bug/jquery-validation-1.8.1/demo/marketo/step2.htm b/bug/bug/jquery-validation-1.8.1/demo/marketo/step2.htm
new file mode 100644
index 0000000..933d682
--- /dev/null
+++ b/bug/bug/jquery-validation-1.8.1/demo/marketo/step2.htm
@@ -0,0 +1,291 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/2000/REC-xhtml1-200000126/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<meta name="title" content="Subscription Signup | Marketo" />
+<meta name="robots" content="index, follow" />
+<meta name="description" content="Marketo Search Marketing application" />
+<meta name="keywords" content="Marketo, Search Marketing" />
+<meta name="language" content="en" />
+<title>Subscription Signup | Marketo</title>
+
+<link rel="shortcut icon" href="/favicon.ico" />
+
+
+<script src="../../lib/jquery.js" type="text/javascript"></script>
+<script src="../../lib/jquery.metadata.js" type="text/javascript"></script>
+<script src="../../lib/jquery.ajaxQueue.js" type="text/javascript"></script>
+<script src="../../lib/jquery.delegate.js" type="text/javascript"></script>
+<script src="../../jquery.validate.js" type="text/javascript"></script>
+
+<script type="text/javascript" src="jquery.maskedinput.js"></script>
+<script type="text/javascript" src="mktSignup.js"></script>
+
+<link rel="stylesheet" type="text/css" media="screen" href="stylesheet.css" />
+</head>
+<body>
+<!--[if lte IE 6]>
+ <link rel="stylesheet" type="text/css" media="all" href="ie6.css" />
+<![endif]-->
+
+
+
+<!-- start page wrapper --><div id="letterbox">
+
+<!-- start header container -->
+<div id="header-background">
+ <div class="nav-global-container">
+
+ <div class="login"><a href="https://app.marketo.com"><span></span>Customer Login</a></div>
+ <div class="logo"><a href="#"><img src="images/logo_marketo.gif" width="168" height="73" alt="Marketo" /></a></div>
+ <div class="nav-global">
+ <ul>
+ <li><a href="#" class="nav-g01"><span></span>Home</a></li>
+ <li><a href="#" class="nav-g02"><span></span>Products</a></li>
+ <li><a href="#" class="nav-g04"><span></span>B2B Marketing Resources</a></li>
+
+ <li><a href="#" class="nav-g05"><span></span>About Marketo</a></li>
+ </ul>
+ </div>
+
+ </div>
+</div>
+<!-- end header container -->
+<div class="line-grey-tier"></div>
+
+<!-- start page container 2 div-->
+<div id="page-container" class="resize"><div id="page-content-inner" class="resize">
+
+<!-- start col-main -->
+
+<div id="col-main" class="resize" style="">
+
+
+
+ <!-- start main content -->
+ <div class="main-content resize">
+
+ <div class="action-container" style="display:none;"></div>
+
+
+<h1>Step 2 of 2</h1>
+<h2>Billing Information</h2>
+<p>
+</p>
+<br clear="all" />
+<div>
+ <form id="billingForm" action="" method="get" >
+
+ <div class="error" style="display:none;">
+ <img src="images/warning.gif" alt="Warning!" width="24" height="24" style="float:left; margin: -5px 10px 0px 0px; " />
+
+ <span></span>.<br clear="all" />
+ </div>
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="label" style="vertical-align: top; padding-top: 8px;">Billing Address:</td>
+ <td class="field" style="font-weight: normal">
+ <div class="billingAddressControl">
+
+ <input type="checkbox" id="bill_to_co" name="bill_to_co" class="toggleCheck" checked="checked" style="width: auto;" tabindex="1" />
+ <label for="bill_to_co" style="cursor:pointer">Same as Company Address</label>
+ </div>
+ </td>
+ </tr>
+ <tr class="subTable">
+ <td colspan="2">
+ <div style="background-color: #EEEEEE; border: 1px solid #CCCCCC; padding: 10px;" class="subTableDiv">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="label"><label for="bill_first_name">First Name:</label></td>
+ <td class="field">
+ <input maxlength="40" class="billingRequired" name="bill_first_name" size="20" type="text" tabindex="2" value="" />
+ </td>
+ </tr>
+ <tr>
+ <td class="label"><label for="bill_last_name">Last Name:</label></td>
+ <td class="field">
+ <input maxlength="40" class="billingRequired" name="bill_last_name" size="20" type="text" tabindex="3" value="" />
+ </td>
+ </tr>
+ <tr>
+ <td class="label"><label for="bill_email">Email:</label></td>
+ <td class="field">
+ <input maxlength="40" class="billingRequired email" remote="emails.php" name="email" size="20" type="text" tabindex="4" value="" />
+ <div class="formError"></div>
+ </td>
+ </tr>
+ <tr>
+ <td class="label"><label for="bill_address1">Address:</label></td>
+ <td class="field">
+ <input maxlength="40" class="billingRequired" name="bill_address1" size="20" type="text" tabindex="5" value="" />
+ </td>
+ </tr>
+ <tr>
+ <td class="label"></td>
+ <td class="field">
+ <input maxlength="40" name="bill_address2" size="20" type="text" tabindex="6" value="" />
+ </td>
+ </tr>
+ <tr>
+ <td class="label"><label for="bill_city">City:</label></td>
+ <td class="field">
+ <input maxlength="40" class="billingRequired" name="bill_city" size="20" type="text" tabindex="7" value="" />
+ </td>
+ </tr>
+ <tr>
+ <td class="label"><label for="bill_state">State:</label></td>
+ <td class="field">
+ <select id="bill_state" class="billingRequired" name="bill_state" style="margin-left: 4px;" tabindex="8">
+ <option value="">Choose State</option>
+ <option value="AL">Alabama</option><option value="AK">Alaska</option><option value="AZ">Arizona</option><option value="AR">Arkansas</option><option value="CA">California</option><option value="CO">Colorado</option><option value="CT">Connecticut</option><option value="DE">Delaware</option><option value="FL">Florida</option><option value="GA">Georgia</option><option value="HI">Hawaii</option><option value="ID">Idaho</option><option value="IL">Illinois</option><option value="IN">Indiana</option><option value="IA">Iowa</option><option value="KS">Kansas</option><option value="KY">Kentucky</option><option value="LA">Louisiana</option><option value="ME">Maine</option><option value="MD">Maryland</option><option value="MA">Massachusetts</option><option value="MI">Michigan</option><option value="MN">Minnesota</option><option value="MS">Mississippi</option><option value="MO">Missouri</option><option value="MT">Montana</option><option value="NE">Nebraska</option><option value="NV">Nevada</option><option value="NH">New Hampshire</option><option value="NJ">New Jersey</option><option value="NM">New Mexico</option><option value="NY">New York</option><option value="NC">North Carolina</option><option value="ND">North Dakota</option><option value="OH">Ohio</option><option value="OK">Oklahoma</option><option value="OR">Oregon</option><option value="PA">Pennsylvania</option><option value="RI">Rhode Island</option><option value="SC">South Carolina</option><option value="SD">South Dakota</option><option value="TN">Tennessee</option><option value="TX">Texas</option><option value="UT">Utah</option><option value="VT">Vermont</option><option value="VA">Virginia</option><option value="WA">Washington</option><option value="WV">West Virginia</option><option value="WI">Wisconsin</option><option value="WY">Wyoming</option>
+ </select>
+ </td>
+ </tr>
+
+ <tr>
+ <td class="label"><label for="bill_zip">Zip:</label></td>
+ <td class="field">
+ <input maxlength="10" class="billingRequired zipcode" name="bill_zip" style="width: 100px" type="text" class="zipcode" tabindex="9" value="" />
+ </td>
+ </tr>
+
+ <tr>
+ <td class="label"><label for="bill_phone">Phone:</label></td>
+ <td class="field">
+ <input maxlength="14" class="billingRequired phone" name="bill_phone" style="width: 100px" type="text" class="phone" tabindex="10" value="" />
+ </td>
+ </tr>
+ </table>
+ </div>
+ </td>
+ </tr>
+ <tr>
+ <td class="label">Credit Card Type:</td>
+ <td class="field">
+ <select id="cc_type" class="required" name="cc_type" class="creditCardType" tabindex="11">
+ <option value="">Choose Credit Card</option>
+ <option value="amex">American Express</option>
+ <option value="discover">Discover</option>
+ <option value="mastercard">MasterCard</option>
+ <option value="visa">Visa</option>
+ </select>
+ </td>
+ </tr>
+ <tr>
+ <td class="label">Expiration:</td>
+ <td class="field">
+ <select id="cc_exp_month" name="cc_exp_month" title="ExpirationMonth" tabindex="12">
+ <option value="01">01 - Jan</option>
+ <option value="02">02 - Feb</option>
+ <option value="03">03 - Mar</option>
+ <option value="04">04 - Apr</option>
+ <option value="05">05 - May</option>
+ <option value="06">06 - Jun</option>
+ <option value="07">07 - Jul</option>
+ <option value="08">08 - Aug</option>
+ <option value="09">09 - Sep</option>
+ <option value="10">10 - Oct</option>
+ <option value="11">11 - Nov</option>
+ <option value="12">12 - Dec</option>
+ </select>
+ <select id="cc_exp_year" name="cc_exp_year" title="ExpirationYear" tabindex="13">
+ <option value="2007">2007</option>
+ <option value="2008" selected="selected">2008</option>
+ <option value="2009">2009</option>
+ <option value="2010">2010</option>
+ <option value="2011">2011</option>
+ <option value="2012">2012</option>
+ <option value="2013">2013</option>
+ <option value="2014">2014</option>
+ <option value="2015">2015</option>
+ <option value="2016">2016</option>
+ </select>
+ </td>
+ </tr>
+ <tr>
+ <td class="label"><label for="credit_card">Credit Card Number:</label></td>
+ <td class="field">
+ <input maxlength="40" id="creditcard" class="required" name="credit_card" size="20" type="text" tabindex="14" />
+ </td>
+ </tr>
+ <tr>
+ <td class="label"><label for="cc_cvv">Security Code:</label></td>
+ <td class="field">
+ <input id="ccNumber" class="required" maxlength="4" name="cc_cvv" style="width: 30px;" type="text" style="vertical-align: top;" tabindex="16" value="" />
+ </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>
+ <div class="buttonSubmit">
+ <span></span>
+ <input class="formButton" type="submit" value="Finish" style="width: 180px" />
+ </div><br clear="all"/>
+
+ </td>
+ </tr>
+ </table>
+ </form>
+ <br clear="all" />
+
+</div>
+
+
+
+ </div> <!-- end main content -->
+ <br />
+</div> <!-- end col-main -->
+
+<!-- start left col -->
+<div id="col-left" class="nav-left-back empty resize" style="position: absolute; min-height: 450px;">
+ <div class="col-left-header-tab" style="position: absolute;">Signup</div>
+ <div class="nav-left">
+
+
+ </div>
+
+
+ <div class="left-nav-callout png" style="top: 15px; margin-bottom: 100px;">
+ <img src="images/left-nav-callout-long.png" class="png" alt="" />
+ <h6>Sign Up Process</h6>
+ <a style="background-image: url(images/step1-24.gif); font-weight: normal; text-decoration: none; cursor: default;">Sign up with a valid credit card.</a>
+ <a style="background-image: url(images/step2-24.gif); font-weight: normal; text-decoration: none; cursor: default;">Connect to your Google AdWords account. You will need your AdWords Customer ID.</a>
+
+ <a target="_blank" style="background-image: url(images/step3-24.gif); font-weight: normal; text-decoration: none; cursor: default;">Start your 30 day trial. No payments until trial ends.</a>
+ </div>
+
+<div class="footerAddress">
+<b>Marketo Inc.</b><br />
+1710 S. Amphlett Blvd.<br />
+San Mateo, CA 94402 USA<br />
+</div>
+<br clear="all"/>
+</div> <!-- end left col -->
+
+</div> </div> <!-- end page container 2 divs-->
+
+ <div id="footer-container" align="center">
+ <div class="footer">
+ <ul>
+ <li><a href="..">Home</a></li>
+ <li class="line-off"><a href=".">Back to first step</a></li>
+ </ul>
+ </div></div>
+
+
+
+<!-- end page wrapper -->
+</div>
+
+
+<script src="http://www.google-analytics.com/urchin.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+_uacct = "UA-2623402-1";
+urchinTracker();
+</script>
+
+ </body>
+</html>
diff --git a/bug/bug/jquery-validation-1.8.1/demo/marketo/stylesheet.css b/bug/bug/jquery-validation-1.8.1/demo/marketo/stylesheet.css
new file mode 100644
index 0000000..7040c4f
--- /dev/null
+++ b/bug/bug/jquery-validation-1.8.1/demo/marketo/stylesheet.css
@@ -0,0 +1,1179 @@
+:-moz-any-link :focus {
+ outline: none;
+}
+
+:focus {
+ -moz-outline-style: none;
+ outline: none;
+}
+
+body {
+ font-size: 80%;
+ margin: 0;
+ padding: 0;
+ font-family: tahoma, geneva, sans-serif;
+ background-color: #000000;
+}
+
+a {
+ color: #0653AB;
+ outline: 0px;
+ text-decoration: none;
+}
+
+a:hover {
+ outline: 0px;
+ text-decoration: underline;
+}
+
+img {
+ border: 0px;
+}
+
+/* s1.0 - Page Containers */
+#letterbox {
+ margin: 10px auto;
+ width: 883px;
+ background-color: #364158;
+ border: 8px solid #D4D4D4;
+ padding: 1px 1px 10px 1px;
+}
+
+#header-background {
+ background: url(images/back_nav_blue.gif) repeat-x;
+ margin: 0px auto;
+ padding: 0px;
+ height: 73px;
+ width: 883px;
+ border-top: 4px solid #CCEAFE;
+ border-bottom: 4px solid #D4D4D4;
+}
+
+#page-container {
+ width: 866px;
+ margin: 0px auto;
+ margin-top: 33px; /* pad from top menu to actions buts*/
+ margin-bottom: -11px;
+ padding-top: 8px;
+ padding-bottom: 8px;
+ background-color: #D4D4D4; /* light grey*/
+ border-right: 1px solid #464646;
+}
+
+#page-content-inner {
+ width: 849px;
+ margin: 0px auto;
+ border-top: 1px solid #9F9FA0;
+ border-left: 1px solid #A2A09A;
+ background-color: #F4F1E9;
+ position: relative;
+}
+
+#page-content-inner #col-left {
+ width: 210px;
+ float: left;
+ background-color: #F4F1E9;
+}
+
+#page-content-inner #col-main {
+ width: 639px;
+ background-color: #ffffff;
+ position: absolute;
+ right: 0px;
+ top: 0px;
+}
+
+#footer-container {
+ width: 866px;
+ position: relative;
+ left: 8px;
+ padding: 2px 0px 10px 0px;
+ background-color: #D4D4D4; /* light grey*/
+}
+
+/* s2.0 - Global navigation bar */
+.nav-global-container {
+ width: 880px;
+ margin: 0px auto;
+ position: relative;
+}
+
+* html .nav-global-container { /* ie6 fix*/
+ margin-bottom: -6px;
+}
+
+.login {
+ position: absolute;
+ right: 20px;
+ text-align: center;
+}
+
+.login a,.login a span {
+ display: block;
+ height: 18px;
+ font-size: 11px;
+ background: url(images/login-sprite.gif) right -5px no-repeat;
+ text-decoration: none;
+ font-weight: bold;
+ padding: 5px 10px 5px 10px;
+ position: relative;
+}
+
+.login a:hover {
+ color: #000000;
+ text-decoration: underline;
+}
+
+div.login a span {
+ background-position: left -105px;
+ width: 4px;
+ position: absolute;
+ top: 0px;
+ left: 0px;
+ padding: 5px 0px 5px 0px;;
+}
+
+div.login a:hover span {
+
+}
+
+.logo {
+ float: left;
+ margin: 0px 0px -5px 0px; /* neg marging for ie6 */
+}
+
+.logo img {
+ border: 0px;
+ margin-left: -1px;
+}
+
+.nav-global {
+ float: left;
+ width: 645px;
+ margin: 40px 0px 0px 40px;
+ background-color: transparent;
+}
+
+.nav-global ul {
+ margin: 0px;
+ padding: 0px;
+ list-style: none;
+}
+
+.nav-global li {
+ float: left;
+ white-space: nowrap;
+}
+
+div.nav-global li a,div.nav-global li a span {
+ background-image: url(images/tab-sprite.gif);
+ background-position: right 100px;
+ background-repeat: no-repeat;
+ height: 32px;
+ color: #666666;
+ text-decoration: none;
+ font: bold 16px 'trebuchet ms';
+ margin-right: 15px;
+ display: block;
+ position: relative;
+ padding: 7px 15px 0px 15px;
+}
+
+div.nav-global li a:hover {
+ background-position: right 0px;
+ color: #333333;
+}
+
+div.nav-global li a:hover span {
+ background-position: left -100px;
+ display: block !important;
+}
+
+div.nav-global li a span {
+ background-position: left 150px;
+ width: 4px;
+ position: absolute;
+ left: 0px;
+ top: 0px;
+ padding: 7px 0px 0px 0px;
+}
+
+body.safari div.nav-global li a span {
+ display: none;
+}
+
+div.nav-global li a.on,div.nav-global li a.on:hover {
+ background-position: right -55px;
+ color: #FFFFFF;
+}
+
+div.nav-global li a.on span,div.nav-global li a.on:hover span {
+ background-position: left -155px;
+ display: block !important;
+}
+
+div.action-container {
+ position: relative;
+ top: -45px;
+ cursor: pointer;
+}
+
+div.action-icon-container {
+ position: absolute;
+ top: -17px;
+ left: -17px;
+ z-index: 10;
+ width: 100px;
+ height: 100px;
+ overflow: hidden;
+}
+
+div.action-icon {
+ border: 0px;
+ position: absolute;
+ top: -0px;
+ left: 0px;
+}
+
+div.action-button-container {
+ height: 106px;
+ width: 180px;
+ overflow: hidden;
+ position: absolute;
+ top: 0px;
+ left: 0px;
+ z-index: 5;
+}
+
+img.action-icon {
+ border: 0px;
+ position: absolute;
+ top: 0px;
+ left: 0px;
+ z-index: 0
+}
+
+div.action-text {
+ z-index: 20;
+ color: #FFFFFF;
+ position: absolute;
+ left: 40px;
+ top: 12px;
+ font: 14px tahoma, geneva;
+ padding-top: 30px;
+}
+
+div.bigbuttons {
+ top: -20px;
+}
+
+div.action-header {
+ z-index: 21;
+ position: absolute;
+ left: 40px;
+ top: 10px;
+}
+
+div.action-header b {
+ font: bold 17px tahoma, geneva;
+ display: block;
+ margin-bottom: 10px;
+ color: #0b2c89;
+ position: absolute;
+ top: 0px;
+ left: 0px;
+ width: 130px;
+}
+
+div.action-header b.shadow {
+ top: 1px;
+ left: 1px;
+ color: #d5d5d5;
+}
+
+img.action-button {
+ position: relative;
+}
+
+div.hover img.action-button {
+ top: -131px;
+}
+
+div.on img.action-button {
+ top: -261px;
+}
+
+/* s3.0 - top of content Action Buttons */
+.action-buttons {
+ width: 100%; /* ie6 requires */
+}
+
+.action-buttons ul {
+ position: relative;
+ padding: 0px;
+}
+
+.action-buttons li {
+ position: relative; /* ie6 fix */
+ float: left;
+ list-style: none;
+ text-align: center;
+ line-height: 16px;
+ margin: -61px 0px 0px 0px;
+}
+
+.action-home li {
+ margin: -49px 0px 0px 0px;
+}
+
+.action-buttons a {
+ display: block;
+ height: 110px;
+ width: 175px;
+ padding: 14px 0px 0px 25px;
+ text-decoration: none;
+ font-size: 12px;
+ font-weight: bold;
+ color: #ffffff;
+}
+
+.action-buttons li span {
+ color: #053880;
+ line-height: 47px;
+ font-size: 17px;
+}
+
+div.action-bottom {
+ margin: 15px 0px 10px 0px;
+ float: left;
+}
+
+div.action-bottom a {
+ height: 61px;
+ width: 178px;
+ border: 0px;
+ background: url(images/action-bottom.gif) no-repeat 0px 0px;
+ color: #0b2c89;
+ float: left;
+ position: relative;
+ font: bold 17px tahoma, geneva;
+ text-decoration: none;
+ margin-right: 10px;
+}
+
+div.action-bottom a span {
+ position: absolute;
+ top: 15px;
+ left: 40px;
+}
+
+div.action-bottom a span.shadow {
+ top: 16px;
+ left: 41px;
+ color: #d4d4d4;
+}
+
+.line-grey {
+ background: url(images/line-grey.gif) 0 0 repeat-x;
+ height: 2px;
+ margin: 8px 25px 20px 0;
+}
+
+/* s4.0 - Home Hero Area */
+.hero-background {
+ position: relative;
+ width: 880px;
+ background: url(images/back_home-hero.jpg) 10px 0px no-repeat;
+ height: 211px;
+ margin: -20px 0px 45px 0px;
+}
+
+.hero-text {
+ float: right;
+ width: 626px;
+ margin-top: 26px;
+}
+
+.hero-text a { /* Sign Up Now Button */
+ padding: 5px 32px 0px 0px;
+ float: right;
+}
+
+.hero-text h1 {
+ font-size: 2.3em;
+ line-height: 1.2em;
+ color: #333333;
+ font-family: Trebuchet MS;
+ margin: 12px 0px 10px 10px;
+}
+
+.hero-text h2 {
+ margin: 0px;
+ font-weight: normal;
+ font-size: 1.35em;
+ margin: 5px 0px 13px 10px
+}
+
+/* s4.1 - Home Left Header tab */
+.col-left-header-tab {
+ position: relative; /* ie6 fix */
+ background: url(images/tab_green.gif) 0 0 no-repeat;
+ height: 30px;
+ width: 166px;
+ text-align: center;
+ color: #ffffff;
+ font: 20px 'trebuchet ms';
+ padding-top: 2px;
+ margin-top: -41px;
+ margin-left: 20px;
+ line-height: 29px;
+ margin-bottom: 8px;
+ display: block;
+}
+
+.col-left-header-tab a {
+ color: #FFFFFF;
+}
+
+.callout-green {
+ background: url(images/back_green-fade.gif) 0 0 repeat-x;
+ font-size: 1.2em;
+ padding: 10px 15px 20px 13px;
+ color: #303B52;
+ line-height: 1.4em;
+}
+
+/* s4.2 - Home Left Quote */
+.callout-tan {
+ color: #666666;
+}
+
+.callout-tan h1 {
+ background: #F4F1E9 url(images/back_tan-fade.gif) 0 0 repeat-y;
+ font-size: 1.1em;
+ text-align: center;
+ margin: 0px;
+ padding: 11px 5px 11px 2px;
+ color: #333333;
+}
+
+.callout-tan p {
+ margin: 0px;
+ margin-top: 5px;
+ line-height: 1.4em;
+ padding: 5px 10px 7px 13px;
+}
+
+.callout-tan p img {
+ float: left;
+ margin: 5px 10px 5px 0px;
+}
+
+.callout-tan div {
+ text-align: left;
+ padding: 5px 10px 7px 0px;
+ font-weight: bold;
+}
+
+/* s4.3 - purple home boxes */
+.box-purple {
+ background: #C6C8E3 url(images/back_home-icons.png) 0px 0px repeat-x;
+ border-left: 1px solid #ffffff;
+ color: #333333;
+ width: 581px;
+ padding: 10px 15px 20px 15px;
+}
+
+div.box-purple a {
+
+}
+
+.box-purple h1 {
+ font-size: 1.5em;
+ margin: 10px 0px -15px 0px;
+}
+
+.box-purple li {
+ margin: 0px 0px 0px -23px;
+ line-height: 1.6em;
+ font-size: 1em;
+}
+
+.box-purple div {
+ padding: 0px 0px 0px 110px;
+}
+
+.icon-text01 {
+ background-image: url(images/icon_search-engine-market.png);
+ background-repeat: no-repeat;
+}
+
+* html .icon-text01 {
+ width: 460px; /* must have a width or heigh tag for ie6*/
+ background-image: none;
+ filter: progid : DXImageTransform . Microsoft .
+ AlphaImageLoader(src = "images/icon_search-engine-market.png",
+ sizingMethod = "crop");
+}
+
+.icon-text02 {
+ background: url(images/icon_landing-pages.png) 0 0 no-repeat;
+}
+
+* html .icon-text02 {
+ width: 460px; /* must have a width or heigh tag for ie6*/
+ background-image: none;
+ filter: progid : DXImageTransform . Microsoft .
+ AlphaImageLoader(src = "images/icon_landing-pages.png", sizingMethod =
+ "crop");
+}
+
+.icon-text03 {
+ background: url(images/icon_salesforce.png) 0 0 no-repeat;
+}
+
+* html .icon-text03 {
+ width: 460px; /* must have a width or heigh tag for ie6*/
+ background-image: none;
+ filter: progid : DXImageTransform . Microsoft .
+ AlphaImageLoader(src = "images/icon_salesforce.png", sizingMethod =
+ "crop");
+}
+
+/* s4.4 - news home boxes */
+.callout-news {
+ color: #555555;
+ float: left;
+ width: 49%;
+ margin: 10px 1px 0px 0px;
+ padding-bottom: 20px;
+ text-align: left;
+}
+
+.line-news-r {
+ border-right: 1px solid #D4D4D4;
+}
+
+.callout-news h1 {
+ background-color: #EEEEEE;
+ font-size: 1.2em;
+ margin: 0px;
+ padding: 11px 5px 11px 15px;
+ color: #333333;
+}
+
+.callout-news p {
+ margin: 10px 0px 0px 10px;
+ padding: 0px 10px 7px 20px;
+ background: url(images/news.gif) no-repeat left 1px;
+}
+
+.callout-news p a {
+
+}
+
+.callout-news ul {
+ list-style-type: none;
+ padding: 0;
+ margin: 10px 0 0 10px;
+}
+
+.callout-news li {
+ background: url(images/icon_news.gif) no-repeat left 2px;
+ padding: 0px 5px 5px 20px;
+}
+
+.callout-news li a {
+ display: block;
+ margin-bottom: 5px;
+}
+
+.callout-news div {
+ text-align: right;
+}
+
+#scrollup {
+ position: relative;
+ overflow: hidden;
+ height: 440px;
+ width: 200px
+}
+
+.headline {
+ position: absolute;
+ top: 600px;
+ left: 5px;
+ height: 585px;
+ width: 190px;
+ font: normal 12px tahoma, geneva !important;
+}
+
+div.more {
+ margin: 5px 0px 0px 0px;
+ padding: 0px 10px 0px 0px;
+ letter-spacing: inherit;
+}
+
+div.more a {
+ background: transparent url(images/arrow_r-blue.gif) no-repeat right 2px
+ ;
+ font-weight: bold;
+ padding: 0px 20px 0px 0px;
+ font-weight: bold;
+ text-decoration: none;
+}
+
+div.more a:hover {
+ text-decoration: underline;
+}
+
+/* sX.0 - Left Nav */
+.nav-left-back {
+ background: url(images/back_nav_side.gif) 0 0 repeat-x;
+}
+
+div.empty {
+ background: #F1F0E5 url(images/back_green-fade.gif) 0 0 repeat-x;
+}
+
+div.empty div.callout-green {
+
+}
+
+.nav-left {
+ padding-top: 12px;
+ /*background: url(images/logo_marketo_square.gif) 0 0 no-repeat;*/
+ width: 210px;
+}
+
+.nav-left ul {
+ margin: 0px;
+ padding: 0px;
+ list-style: none;
+}
+
+.nav-left li a {
+ display: block;
+ height: 24px;
+ text-decoration: none;
+ font-size: 12px;
+ font-weight: bold;
+ color: #ffffff;
+ border-top: 1px solid #B3D38D;
+ border-bottom: 1px solid #7CA84E;
+ border-left: 1px solid #97B973;
+ padding: 6px 0px 0px 20px;
+}
+
+.nav-left a:hover,.nav-left a.active:hover,#nav-left-sub a:hover {
+ color: #4C6F28;
+ background-color: #F4F1E9;
+}
+
+.nav-left a.open {
+ background-image: url(images/arrow_d-green.gif);
+ background-repeat: no-repeat;
+ background-position: 6px 11px;
+}
+
+.nav-left-header-tab {
+ position: relative; /* ie6 fix */
+ background: url(images/tab_green.gif) 0 0 no-repeat;
+ height: 32px;
+ width: 166px;
+ text-align: center;
+ color: #ffffff;
+ margin: -41px 0px 0px 22px;
+ line-height: 22px;
+ margin-bottom: 8px;
+ display: block;
+}
+
+div.empty div.nav-left-header-tab {
+ background: url(images/tab_green2.gif) 0 0 no-repeat;
+}
+
+.nav-left a.active {
+ /* background: url(images/arrow_d-green.gif) 5px 10px no-repeat; */
+ display: block;
+ height: 24px;
+ text-decoration: none;
+ font-size: 12px;
+ font-weight: bold;
+ background-color: #F4F1E9;
+ color: #4C6F28;
+ border-top: 1px solid #D1E5BB;
+ border-bottom: 1px solid #B0CB95;
+ border-left: 1px solid #DADADA;
+ padding: 6px 0px 0px 20px;
+}
+
+#nav-left-sub a {
+ display: block;
+ height: 24px;
+ text-decoration: none;
+ font-size: 12px;
+ font-weight: bold;
+ background-color: #D6E8C4;
+ color: #4C6F28;
+ border-top: 1px solid #D6E8C4;
+ border-bottom: 1px solid #B0CB95;
+ border-left: 1px solid #97B973;
+ border-right: 1px solid #8DBE5A;
+ padding: 6px 0px 0px 30px;
+}
+
+* html #nav-left-sub { /* ie6 fix */
+ margin-top: -1px;
+}
+
+*+html #nav-left-sub { /* ie7 fix */
+ margin-top: -1px;
+}
+
+#nav-left-sub a.active-page {
+ display: block;
+ height: 24px;
+ text-decoration: none;
+ font-size: 12px;
+ font-weight: bold;
+ background-color: #ffffff;
+ color: #666666;
+ border-top: 0px solid #7CA84E;
+ border-bottom: 1px solid #B0CB95;
+ border-left: 1px solid #97B973;
+ border-right: 0px solid #8DBE5A;
+ padding: 6px 0px 0px 30px;
+ cursor: default; /* turns off hand icon for link */
+}
+
+/* sX.0 - Main Content */
+.main-content {
+ color: #666666;
+ position: absolute;
+ right: 20px;
+ padding-top: 20px;
+ width: 585px;
+ padding-bottom: 20px;
+}
+
+div.main-content div.main-content {
+
+}
+
+.main-content h1 {
+ color: #5890D1;
+ font-size: 1.9em;
+ font-family: Trebuchet MS;
+ border-bottom: 1px solid #cccccc;
+ margin: 0px 10px 0px 0px;
+}
+
+.main-content h2 {
+ color: #666666;
+ font-size: 1.3em;
+ font-weight: normal;
+ margin: 10px 10px 5px 0px;
+}
+
+.main-content p {
+ margin: 10px 10px 10px 0px;
+ line-height: 1.55em;
+}
+
+/* sX.1 - Main Content Sub Styles */
+.sub-grey {
+ border-top: 1px solid #D4D4D4;
+ border-bottom: 1px solid #D4D4D4;
+ background-color: #F4F4F4;
+ margin: 10px 10px 0px 0px;
+ padding: 0px 10px 20px 15px;
+}
+
+.sub-white {
+ margin: 10px 10px 0px 0px;
+ padding: 0px 10px 20px 15px;
+}
+
+img.screen-grab-r {
+ margin-right: -8px;
+ text-align: right;
+ padding: 0px 0px 0px 10px;
+}
+
+div.main-content a.screenshot {
+ float: right;
+ padding: 10px 10px 0px 0px
+}
+
+.content-foot {
+ border-top: 1px solid #D4D4D4;
+ font-size: .9em;
+ line-height: 1.45em;
+ margin: 10px 20px 0px 0px;
+ padding: 10px 10px 30px 0px;
+}
+
+div.main-content ul {
+ position: relative;
+ left: -25px;
+}
+
+div.main-content li {
+ margin-bottom: 5px;
+ list-style-type: disc
+}
+
+div.main-content li a {
+ color: #6A6CB0;
+}
+
+/* sX.0 - Footer */
+div.footer {
+ color: #666666;
+ font-size: .85em;
+ font-weight: normal;
+ height: 18px;
+ margin: 0px auto;
+ font-family: Tahoma, Geneva, sans-serif;
+ margin-top: 10px;
+}
+
+.footer ul {
+ list-style-type: none;
+}
+
+.footer li {
+ float: left;
+ border-right: 1px solid #666666;
+ padding: 0px 7px 0px 7px;
+ margin-top: 3px;
+}
+
+.footer a {
+ color: #666666;
+ text-decoration: none;
+}
+
+.footer a:hover {
+ color: #0653AB;
+ text-decoration: none;
+}
+
+.footer li.line-off {
+ border-right: 0px solid #ffffff;
+}
+
+div.footer strong {
+ font-weight: normal;
+}
+
+/* sX.0 - General Colors */
+.line-grey,.line-grey-tier {
+ border-top: 1px solid #A3A3A2;
+}
+
+.line-grey-tier {
+ padding-bottom: 25px;
+}
+
+.bottom {
+ height: 10px;
+}
+
+div.p10bottom {
+ padding-bottom: 10px;
+}
+
+.clear {
+ clear: both;
+}
+
+table.grid {
+ background: #EEEEEE;
+}
+
+table.grid th {
+ background-color: #F4F4F4;
+}
+
+table.grid td {
+ background-color: #FFFFFF;
+}
+
+div.buttonSubmit {
+ position: relative;
+}
+
+div.buttonSubmit input,div.buttonSubmit span {
+ height: 36px;
+ position: relative;
+ background-image: url(images/button-submit.gif);
+ background-repeat: no-repeat;
+ background-position: right 0px;
+ float: left;
+ color: #FFFFFF;
+ font-weight: bold;
+ padding: 0px 15px 2px 15px;
+ margin: 20px 0px 20px 0px;
+ border: 0px;
+ cursor: pointer;
+ z-index: 5;
+}
+
+div.buttonSubmit input {
+ width: auto;
+}
+
+div.buttonSubmit span {
+ width: 4px;
+ position: absolute;
+ left: 0px;
+ top: 0px;
+ background-position: left -36px;
+ padding: 0px 0px 0px 0px;
+ z-index: 10;
+}
+
+body.safari div.buttonSubmit span {
+ display: none
+}
+
+div.buttonSubmitHover input {
+ background-position: right -72px;
+}
+
+div.buttonSubmitHover span {
+ background-position: left -108px;
+}
+
+a.demoLink {
+ padding: 1px 10px 0px 17px;
+ height: 24px;
+ background: url(images/bullet_triangle_blue.gif) no-repeat 0px 4px;
+ display: block;
+ float: left;
+}
+
+div.callout-tan a {
+ background: none;
+ color: #0653AB;
+ margin: auto;
+ display: block;
+}
+
+div.callout-tan a:hover {
+ background: none;
+ color: #0653AB;
+}
+
+label.error {
+ display: block;
+ color: red;
+ font-style: italic;
+ font-weight: normal;
+}
+
+input.error {
+ border: 2px solid red;
+}
+
+p.demoBlock {
+ border-bottom: 1px solid #DDDDDD;
+ padding-bottom: 10px;
+}
+
+div.left-nav-callout {
+ height: 200px;
+ width: 190px;
+ top: 55px;
+ left: 5px;
+ position: relative;
+ padding-left: 9px;
+ padding-top: 13px;
+}
+
+div.left-nav-callout img.png {
+ position: absolute;
+ z-index: 0;
+ top: 0px;
+ left: 0px;
+}
+
+div.left-nav-callout h6 {
+ font: bold 14px tahoma, geneva;
+ color: #333333;
+ height: 36px;
+ padding-left: 5px;
+ margin: 0px;
+ position: relative;
+ z-index: 10;
+}
+
+div.left-nav-callout a {
+ background: url(images/monitor24.gif) no-repeat 0px center;
+ padding: 5px 0px 5px 30px;
+ display: block;
+ font: bold 12px tahoma, geneva;
+ color: #336699;
+ margin-bottom: 5px;
+ position: relative;
+ z-index: 10;
+ width: 140px;
+}
+
+form table td {
+ padding: 5px;
+}
+
+form table input {
+ width: 200px;
+ padding: 3px;
+ margin: 0px;
+}
+
+textarea {
+ width: 400px
+}
+
+td.label {
+ width: 150px;
+}
+
+tr.required td.label {
+ font-weight: bold;
+ background: url(/images/forms/backRequiredGray.gif) no-repeat right
+ center;
+}
+
+div.subTableDiv {
+ width: 500px;
+}
+
+div.subTableDiv td.label {
+ width: 135px;
+}
+
+ul#homeBlog li div.description {
+ display: none;
+}
+
+td.field input.error, td.field select.error, tr.errorRow td.field input,tr.errorRow td.field select {
+ border: 2px solid red;
+ background-color: #FFFFD5;
+ margin: 0px;
+ color: red;
+}
+
+tr td.field div.formError {
+ display: none;
+ color: #FF0000;
+}
+
+tr.errorRow td.field div.formError {
+ display: block;
+ font-weight: normal;
+}
+
+div.error {
+ color: red;
+}
+
+div.error a {
+ color: #336699;
+ font-size: 12px;
+ text-decoration: underline
+}
+
+div.tooltip {
+ position: absolute;
+ left: 30px;
+ bottom: 0px;
+ display: none; /* in case javascript is disabled */
+ width: 170px;
+ background-color: #F4F1E9;
+ z-index: 100;
+ padding: 10px;
+ border: 1px solid #CCCCCC;
+}
+
+div.offerbox {
+ width: 125px;
+ float: left;
+ position: relative;
+}
+
+div.offerbox h3 {
+ font: bold 17px tahoma, geneva;
+ color: #333333;
+ height: 55px;
+ margin: 0px auto;
+ text-align: center;
+}
+
+div.offerbox h4 {
+ height: 100px;
+ font: normal 13px tahoma, geneva;
+ margin: 0px;
+}
+
+div.offerbox h5 {
+ font: bold 14px tahoma, geneva;
+ margin: 0px;
+ height: 55px;
+}
+
+div.offerbox h5 small {
+ float: left;
+ font-weight: normal;
+ font-size: 10px;
+}
+
+div.offerbox div.learnmore {
+ padding-left: 25px;
+}
+
+div#marketoEditions {
+ background: url(images/buynowBack.gif) no-repeat;
+ width: 584px;
+ height: 376px;
+ float: left;
+ position: relative;
+ margin-bottom: 10px;
+}
+
+div.offerHeader {
+ background: #0D8BBD;
+ position: absolute;
+ top: 20px;
+ width: 266px;
+ height: 34px;
+ border: 1px solid #e1e4e2;
+}
+
+div.offerHeader span {
+ font: 20px 'trebuchet ms';
+ color: #FFFFFF;
+ position: absolute;
+ left: 0px;
+ top: 0px;
+}
+
+div.offerHeader span.shadow {
+ font: 20px 'trebuchet ms';
+ color: #333333;
+ position: absolute;
+}
+
+div.offerbox div.buttonSubmit {
+ margin: 5px 0px 0px 10px;
+}
+
+div.footerAddress {
+ position: absolute;
+ bottom: 30px;
+ left: 20px;
+ color: #666666;
+ font-size: 11px;
+ display: none;
+} \ No newline at end of file
diff --git a/bug/bug/jquery-validation-1.8.1/demo/milk/bg.gif b/bug/bug/jquery-validation-1.8.1/demo/milk/bg.gif
new file mode 100644
index 0000000..2c7c358
--- /dev/null
+++ b/bug/bug/jquery-validation-1.8.1/demo/milk/bg.gif
Binary files differ
diff --git a/bug/bug/jquery-validation-1.8.1/demo/milk/emails.php b/bug/bug/jquery-validation-1.8.1/demo/milk/emails.php
new file mode 100644
index 0000000..059ac14
--- /dev/null
+++ b/bug/bug/jquery-validation-1.8.1/demo/milk/emails.php
@@ -0,0 +1,10 @@
+<?php
+$request = trim(strtolower($_REQUEST['email']));
+$emails = array('glen@marketo.com', 'george@bush.gov', 'me@god.com', 'aboutface@cooper.com', 'steam@valve.com', 'bill@gates.com');
+$valid = 'true';
+foreach($emails as $email) {
+ if( strtolower($email) == $request )
+ $valid = '"Thats already taken."';
+}
+echo $valid;
+?> \ No newline at end of file
diff --git a/bug/bug/jquery-validation-1.8.1/demo/milk/emails.phps b/bug/bug/jquery-validation-1.8.1/demo/milk/emails.phps
new file mode 100644
index 0000000..d2219cc
--- /dev/null
+++ b/bug/bug/jquery-validation-1.8.1/demo/milk/emails.phps
@@ -0,0 +1,10 @@
+<?php
+$request = trim(strtolower($_REQUEST['value']));
+$emails = array('glen@marketo.com', 'george@bush.gov', 'me@god.com', 'aboutface@cooper.com', 'steam@valve.com', 'bill@gates.com');
+$valid = 'true';
+foreach($emails as $email) {
+ if( strtolower($email) == $request )
+ $valid = 'false';
+}
+echo $valid;
+?> \ No newline at end of file
diff --git a/bug/bug/jquery-validation-1.8.1/demo/milk/index.html b/bug/bug/jquery-validation-1.8.1/demo/milk/index.html
new file mode 100644
index 0000000..3516800
--- /dev/null
+++ b/bug/bug/jquery-validation-1.8.1/demo/milk/index.html
@@ -0,0 +1,235 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+<title>Remember The Milk signup form - jQuery Validate plugin demo - with friendly permission from the RTM team</title>
+
+<link rel="stylesheet" type="text/css" media="screen" href="milk.css" />
+<link rel="stylesheet" type="text/css" media="screen" href="../css/chili.css" />
+
+<script src="../../lib/jquery.js" type="text/javascript"></script>
+<script src="../../jquery.validate.js" type="text/javascript"></script>
+
+<style type="text/css">
+ pre { text-align: left; }
+</style>
+
+<script id="demo" type="text/javascript">
+$(document).ready(function() {
+ // validate signup form on keyup and submit
+ var validator = $("#signupform").validate({
+ rules: {
+ firstname: "required",
+ lastname: "required",
+ username: {
+ required: true,
+ minlength: 2,
+ remote: "users.php"
+ },
+ password: {
+ required: true,
+ minlength: 5
+ },
+ password_confirm: {
+ required: true,
+ minlength: 5,
+ equalTo: "#password"
+ },
+ email: {
+ required: true,
+ email: true,
+ remote: "emails.php"
+ },
+ dateformat: "required",
+ terms: "required"
+ },
+ messages: {
+ firstname: "Enter your firstname",
+ lastname: "Enter your lastname",
+ username: {
+ required: "Enter a username",
+ minlength: jQuery.format("Enter at least {0} characters"),
+ remote: jQuery.format("{0} is already in use")
+ },
+ password: {
+ required: "Provide a password",
+ rangelength: jQuery.format("Enter at least {0} characters")
+ },
+ password_confirm: {
+ required: "Repeat your password",
+ minlength: jQuery.format("Enter at least {0} characters"),
+ equalTo: "Enter the same password as above"
+ },
+ email: {
+ required: "Please enter a valid email address",
+ minlength: "Please enter a valid email address",
+ remote: jQuery.format("{0} is already in use")
+ },
+ dateformat: "Choose your preferred dateformat",
+ terms: " "
+ },
+ // the errorPlacement has to take the table layout into account
+ errorPlacement: function(error, element) {
+ if ( element.is(":radio") )
+ error.appendTo( element.parent().next().next() );
+ else if ( element.is(":checkbox") )
+ error.appendTo ( element.next() );
+ else
+ error.appendTo( element.parent().next() );
+ },
+ // specifying a submitHandler prevents the default submit, good for the demo
+ submitHandler: function() {
+ alert("submitted!");
+ },
+ // set this class to error-labels to indicate valid fields
+ success: function(label) {
+ // set &nbsp; as text for IE
+ label.html("&nbsp;").addClass("checked");
+ }
+ });
+
+ // propose username by combining first- and lastname
+ $("#username").focus(function() {
+ var firstname = $("#firstname").val();
+ var lastname = $("#lastname").val();
+ if(firstname && lastname && !this.value) {
+ this.value = firstname + "." + lastname;
+ }
+ });
+
+});
+</script>
+
+</head>
+<body>
+
+<h1 id="banner"><a href="http://bassistance.de/jquery-plugins/jquery-plugin-validation/">jQuery Validation Plugin</a> Demo</h1>
+<div id="main">
+
+<div id="content">
+
+<div id="header">
+ <div id="headerlogo"><img src="milk.png" alt="Remember The Milk" /></div>
+</div>
+<div style="clear: both;"><div></div></div>
+
+
+<div class="content">
+ <div id="signupbox">
+ <div id="signuptab">
+ <ul>
+ <li id="signupcurrent"><a href=" ">Signup</a></li>
+ </ul>
+ </div>
+ <div id="signupwrap">
+ <form id="signupform" autocomplete="off" method="get" action="">
+ <table>
+ <tr>
+ <td class="label"><label id="lfirstname" for="firstname">First Name</label></td>
+ <td class="field"><input id="firstname" name="firstname" type="text" value="" maxlength="100" /></td>
+ <td class="status"></td>
+ </tr>
+ <tr>
+ <td class="label"><label id="llastname" for="lastname">Last Name</label></td>
+ <td class="field"><input id="lastname" name="lastname" type="text" value="" maxlength="100" /></td>
+ <td class="status"></td>
+ </tr>
+ <tr>
+ <td class="label"><label id="lusername" for="username">Username</label></td>
+ <td class="field"><input id="username" name="username" type="text" value="" maxlength="50" /></td>
+ <td class="status"></td>
+ </tr>
+ <tr>
+ <td class="label"><label id="lpassword" for="password">Password</label></td>
+ <td class="field"><input id="password" name="password" type="password" maxlength="50" value="" /></td>
+ <td class="status"></td>
+ </tr>
+ <tr>
+ <td class="label"><label id="lpassword_confirm" for="password_confirm">Confirm Password</label></td>
+ <td class="field"><input id="password_confirm" name="password_confirm" type="password" maxlength="50" value="" /></td>
+ <td class="status"></td>
+ </tr>
+ <tr>
+ <td class="label"><label id="lemail" for="email">Email Address</label></td>
+ <td class="field"><input id="email" name="email" type="text" value="" maxlength="150" /></td>
+ <td class="status"></td>
+ </tr>
+ <tr>
+ <td class="label"><label>Which Looks Right</label></td>
+ <td class="field" colspan="2" style="vertical-align: top; padding-top: 2px;">
+ <table>
+ <tbody>
+
+ <tr>
+ <td style="padding-right: 5px;">
+ <input id="dateformat_eu" name="dateformat" type="radio" value="0" />
+ <label id="ldateformat_eu" for="dateformat_eu">14/02/07</label>
+ </td>
+ <td style="padding-left: 5px;">
+ <input id="dateformat_am" name="dateformat" type="radio" value="1" />
+ <label id="ldateformat_am" for="dateformat_am">02/14/07</label>
+ </td>
+ <td>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ </td>
+ </tr>
+
+ <tr>
+ <td class="label">&nbsp;</td>
+ <td class="field" colspan="2">
+ <div id="termswrap">
+ <input id="terms" type="checkbox" name="terms" />
+ <label id="lterms" for="terms">I have read and accept the Terms of Use.</label>
+ </div> <!-- /termswrap -->
+ </td>
+ </tr>
+ <tr>
+ <td class="label"><label id="lsignupsubmit" for="signupsubmit">Signup</label></td>
+ <td class="field" colspan="2">
+ <input id="signupsubmit" name="signup" type="submit" value="Signup" />
+ </td>
+ </tr>
+
+ </table>
+ </form>
+ </div>
+ </div>
+</div>
+
+</div>
+
+</div>
+
+<script src="http://www.google-analytics.com/urchin.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+_uacct = "UA-2623402-1";
+urchinTracker();
+</script>
+
+<script type="text/javascript">
+$(document).ready(function() {
+ $("<a href='#'>Show script used on this page</a><br/>").appendTo("body").click(function() {
+ script.toggle();
+ return false;
+ });
+ $("<a href='#'>Show serverside script</a>").appendTo("body").click(function() {
+ serverscript.toggle();
+ return false;
+ });
+ var script = $("<code class='mix'>").html( $("#demo").html() ).wrap("<pre></pre>").parent().hide().appendTo("body");
+ var serverscript;
+ $.get("users.phps", function(response) {
+ serverscript = $("<pre>").hide().html( response ).appendTo("body");
+ })
+
+});
+</script>
+
+<script src="../js/chili-1.7.pack.js" type="text/javascript"></script>
+
+</body>
+</html> \ No newline at end of file
diff --git a/bug/bug/jquery-validation-1.8.1/demo/milk/left_white.png b/bug/bug/jquery-validation-1.8.1/demo/milk/left_white.png
new file mode 100644
index 0000000..b889960
--- /dev/null
+++ b/bug/bug/jquery-validation-1.8.1/demo/milk/left_white.png
Binary files differ
diff --git a/bug/bug/jquery-validation-1.8.1/demo/milk/milk.css b/bug/bug/jquery-validation-1.8.1/demo/milk/milk.css
new file mode 100644
index 0000000..d5f128b
--- /dev/null
+++ b/bug/bug/jquery-validation-1.8.1/demo/milk/milk.css
@@ -0,0 +1,236 @@
+/* GENERAL ELEMENTS */
+
+* { margin: 0; padding: 0; }
+
+body, input, select, textarea { font-family: verdana, arial, helvetica, sans-serif; font-size: 11px; }
+body { color: #333; background-color: #fff; text-align: center; }
+
+a:link { color:#0060BF; text-decoration: underline; }
+a:visited { color:#0060BF; text-decoration: underline; }
+a:active { color:#0060BF; text-decoration: underline; }
+a:hover { color:#000000; text-decoration: underline; }
+
+h1, h2, h3, h4, h5, h6 { font-family: "Lucida Grande", "Lucida Sans Unicode", geneva, verdana, arial, helvetica, sans-serif; font-weight: bold; color: #666; }
+h1 { font-size: 1.8em; margin: 0em 0em 0.6em 0em; color: #EC5800; }
+h2 { font-size: 1.5em; margin: 1.2em 0em 0.4em 0em; }
+h3 { font-size: 1.4em; margin: 1.2em 0em 0.4em 0em; color: #EC5800; }
+h4 { font-size: 1.2em; margin: 1.2em 0em 0.4em 0em; }
+h5 { font-size: 1.0em; margin: 1.2em 0em 0.4em 0em; }
+h6 { font-size: 0.8em; margin: 1.2em 0em 0.4em 0em; }
+
+img { border: 0px; }
+
+p { font-size: 1.0em; line-height: 1.3em; margin: 1.2em 0em 1.2em 0em; }
+li > p { margin-top: 0.2em; }
+pre { font-family: monospace; font-size: 1.0em; }
+strong, b { font-weight: bold; }
+
+/* PAGE ELEMENTS */
+
+/* Content */
+
+#content { margin: 0em auto; width: 765px; padding: 10px 0 10px 0; text-align: left; /* Win IE5 */ }
+.content { margin-left: 4.5em; margin-right: 4.5em; }
+.content ol, .content ul, .content li { font-size: 1.0em; line-height: 1.3em; margin: 0.2em 0 0.1em 1.5em; }
+.content ol.terms li { margin-bottom: 1em; }
+
+/* Header */
+
+#header { padding-bottom: 10em; }
+#headerlogo { float: left; }
+#headerlogo img { width: 188px; height: 83px; }
+#headernav { float: right; }
+
+label { font-weight: bold; }
+#reminders label { font-weight: normal; }
+
+table.tabbedtable { padding-left: 3em; }
+table.tabbedtable td { padding-bottom: 5px; }
+table.tabbedtable label { text-align: right; padding-right: 9px; }
+.hiddenlabel { visibility: hidden; }
+.largelink { border: 1px solid #cacaca; padding: 10px; background-color: #E8EEF7; font-size: 1.2em; font-weight: bold; }
+.largelinkwrap { padding-top: 10px; padding-bottom: 10px; }
+
+
+
+#signuptab {
+ float:left;
+ width:100%;
+ background:#fff url("bg.gif") repeat-x bottom;
+ font-size: 1.0em;
+ line-height: normal;
+}
+#signuptab ul {
+ margin:0;
+ padding: 0px 10px 0px 10px;
+ list-style:none;
+}
+#signuptab li {
+ float:left;
+ background:url("left_white.png") no-repeat left top;
+ margin:0;
+ padding:0 3px 0 9px;
+ border-bottom:1px solid #CACACA;
+}
+#signuptab a {
+ float:left;
+ display:block;
+ width:.1em;
+ background:url("right_white.png") no-repeat right top;
+ padding:2px 15px 0px 6px;
+ text-decoration:none;
+ font-weight:bold;
+ color:#fff;
+ white-space: nowrap;
+}
+#signuptab > ul a {width:auto;}
+/* Commented Backslash Hack hides rule from IE5-Mac \*/
+#signuptab a {float:none;}
+/* End IE5-Mac hack */
+#signuptab a:hover {
+ color:#333;
+}
+#signuptab #signupcurrent {
+ background-position:0 -150px;
+ border-width:0;
+}
+#signuptab #signupcurrent a {
+ background-position:100% -150px;
+ padding-bottom:1px;
+ color:#000;
+}
+#signuptab li:hover, #signuptab li:hover a {
+ background-position:0% -150px;
+ color:#000;
+}
+#signuptab li:hover a {
+ background-position:100% -150px;
+}
+
+/* Signup box */
+
+#signupbox {
+ width: 100%;
+ text-align: center;
+ margin: 0em auto;
+}
+
+#signupwrap {
+ border: 1px solid #CACACA;
+ border-top: 0;
+ text-align: left;
+ padding: 35px 10px 20px 30px;
+ clear: both;
+}
+
+/* Unsupported browsers */
+
+.orange_rbcontent { padding: 0.4em; }
+.orange_rbroundbox { width: 100%; }
+
+#unsupported {
+ font-weight: bold;
+ text-align: left;
+}
+
+/*#content {
+ padding-top: 15px;
+}*/
+
+/* Signup form */
+
+#signupform table {
+ border-spacing: 0px;
+ border-collapse: collapse;
+ empty-cells: show;
+}
+
+#signupform .label {
+ padding-top: 2px;
+ padding-right: 8px;
+ vertical-align: top;
+ text-align: right;
+ width: 125px;
+ white-space: nowrap;
+}
+
+#signupform .field {
+ padding-bottom: 10px;
+ white-space: nowrap;
+}
+
+#signupform .status {
+ padding-top: 2px;
+ padding-left: 8px;
+ vertical-align: top;
+ width: 246px;
+ white-space: nowrap;
+}
+
+#signupform .textfield {
+ width: 150px;
+}
+
+#signupform label.error {
+ background:url("../images/unchecked.gif") no-repeat 0px 0px;
+ padding-left: 16px;
+ padding-bottom: 2px;
+ font-weight: bold;
+ color: #EA5200;
+}
+
+#signupform label.checked {
+ background:url("../images/checked.gif") no-repeat 0px 0px;
+}
+
+#signupform .success_msg {
+ font-weight: bold;
+ color: #0060BF;
+ margin-left: 19px;
+}
+
+#signupform #dateformatStatus, #signupform #termsStatus {
+ margin-left: 6px;
+}
+
+#signupform #dateformat_eu {
+ vertical-align: middle;
+}
+
+#signupform #ldateformat_eu {
+ font-weight: normal;
+ vertical-align: middle;
+}
+
+#signupform #dateformat_am {
+ vertical-align: middle;
+}
+
+#signupform #ldateformat_am {
+ font-weight: normal;
+ vertical-align: middle;
+}
+
+#signupform #termswrap {
+ float: left;
+}
+
+#signupform #terms {
+ vertical-align: middle;
+ float: left;
+ display: block;
+ margin-right: 5px;
+}
+
+#signupform #lterms {
+ font-weight: normal;
+ vertical-align: middle;
+ float: left;
+ display: block;
+ width: 350px;
+ white-space: normal;
+}
+
+#signupform #lsignupsubmit {
+ visibility: hidden;
+} \ No newline at end of file
diff --git a/bug/bug/jquery-validation-1.8.1/demo/milk/milk.png b/bug/bug/jquery-validation-1.8.1/demo/milk/milk.png
new file mode 100644
index 0000000..b5e7151
--- /dev/null
+++ b/bug/bug/jquery-validation-1.8.1/demo/milk/milk.png
Binary files differ
diff --git a/bug/bug/jquery-validation-1.8.1/demo/milk/right_white.png b/bug/bug/jquery-validation-1.8.1/demo/milk/right_white.png
new file mode 100644
index 0000000..393bbe2
--- /dev/null
+++ b/bug/bug/jquery-validation-1.8.1/demo/milk/right_white.png
Binary files differ
diff --git a/bug/bug/jquery-validation-1.8.1/demo/milk/users.php b/bug/bug/jquery-validation-1.8.1/demo/milk/users.php
new file mode 100644
index 0000000..4fef967
--- /dev/null
+++ b/bug/bug/jquery-validation-1.8.1/demo/milk/users.php
@@ -0,0 +1,12 @@
+<?php
+$request = trim(strtolower($_REQUEST['username']));
+//sleep(2);
+usleep(150000);
+$users = array('asdf', 'Peter', 'Peter2', 'George');
+$valid = 'true';
+foreach($users as $user) {
+ if( strtolower($user) == $request )
+ $valid = 'false';
+}
+echo $valid;
+?> \ No newline at end of file
diff --git a/bug/bug/jquery-validation-1.8.1/demo/milk/users.phps b/bug/bug/jquery-validation-1.8.1/demo/milk/users.phps
new file mode 100644
index 0000000..dfe4c8e
--- /dev/null
+++ b/bug/bug/jquery-validation-1.8.1/demo/milk/users.phps
@@ -0,0 +1,10 @@
+<?php
+$request = trim(strtolower($_REQUEST['value']));
+$users = array('asdf', 'Peter', 'Peter2', 'George');
+$valid = 'true';
+foreach($users as $user) {
+ if( strtolower($user) == $request )
+ $valid = 'false';
+}
+echo $valid;
+?> \ No newline at end of file
diff --git a/bug/bug/jquery-validation-1.8.1/demo/multipart/index.html b/bug/bug/jquery-validation-1.8.1/demo/multipart/index.html
new file mode 100644
index 0000000..2fc5973
--- /dev/null
+++ b/bug/bug/jquery-validation-1.8.1/demo/multipart/index.html
@@ -0,0 +1,412 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+
+<title>jQuery accordion form with validation</title>
+
+<link rel="stylesheet" href="../assets/demo_blue.css" type="text/css" />
+
+<script type="text/javascript" src="../../lib/jquery.js"></script>
+<script type="text/javascript" src="../../jquery.validate.js"></script>
+<script type="text/javascript" src="js/jquery.maskedinput-1.0.js"></script>
+<script type="text/javascript" src="js/ui.core.js"></script>
+<script type="text/javascript" src="js/ui.accordion.js"></script>
+
+<script type="text/javascript">
+$(document).ready(function(){
+
+ $("#recordClientPhone").mask("(999) 999-9999");
+ $("#recordClientPhoneAlt").mask("(999) 999-9999");
+ $("#recordClientZip").mask("99999");
+ $("#recordPropertyZip").mask("99999");
+ $("#recordPurchaseZip").mask("99999");
+
+ // add * to required field labels
+ $('label.required').append('&nbsp;<strong>*</strong>&nbsp;');
+
+ // accordion functions
+ var accordion = $("#stepForm").accordion();
+ var current = 0;
+
+ $.validator.addMethod("pageRequired", function(value, element) {
+ var $element = $(element)
+ function match(index) {
+ return current == index && $(element).parents("#sf" + (index + 1)).length;
+ }
+ if (match(0) || match(1) || match(2)) {
+ return !this.optional(element);
+ }
+ return "dependency-mismatch";
+ }, $.validator.messages.required)
+
+ var v = $("#cmaForm").validate({
+ errorClass: "warning",
+ onkeyup: false,
+ onblur: false,
+ submitHandler: function() {
+ alert("Submitted, thanks!");
+ }
+ });
+
+ // back buttons do not need to run validation
+ $("#sf2 .prevbutton").click(function(){
+ accordion.accordion("activate", 0);
+ current = 0;
+ });
+ $("#sf3 .prevbutton").click(function(){
+ accordion.accordion("activate", 1);
+ current = 1;
+ });
+ // these buttons all run the validation, overridden by specific targets above
+ $(".open2").click(function() {
+ if (v.form()) {
+ accordion.accordion("activate", 2);
+ current = 2;
+ }
+ });
+ $(".open1").click(function() {
+ if (v.form()) {
+ accordion.accordion("activate", 1);
+ current = 1;
+ }
+ });
+ $(".open0").click(function() {
+ if (v.form()) {
+ accordion.accordion("activate", 0);
+ current = 0;
+ }
+ });
+
+});
+</script>
+
+<link rel="stylesheet" type="text/css" media="screen" href="style.css" />
+</head>
+<body>
+
+<div id="wrap">
+<div id="main">
+
+<h1 class="top bottom"><span>Help me</span> Buy and Sell a House</h1>
+<h2>This form is quick &amp; easy to complete - in only 3 steps!</h2>
+<form name="cmaForm" id="cmaForm" method="post">
+<input type="hidden" name="recordRequestPrimaryServiceID" id="recordRequestPrimaryServiceID" value="100" />
+<input type="hidden" name="recordClientServices" id="recordClientServices" value="1,3" />
+<ul id="stepForm" class="ui-accordion-container">
+ <li id="sf1"><a href='#' class="ui-accordion-link"> </a>
+ <div>
+ <fieldset><legend> Step 1 of 3 </legend>
+ <div class="requiredNotice">*Required Field</div>
+ <h3 class="stepHeader">Tell us about the property you're buying</h3>
+ <label for="recordPurchaseMetRealtor" class="input required">Are you currently working with a<br />
+ real estate agent? </label> &nbsp;&nbsp;No: <input name="recordPurchaseMetRealtor" type="radio" checked="checked" class="inputclass" value="0" /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Yes: <input name="recordPurchaseMetRealtor" type="radio" class="inputclass pageRequired" value="1" title="Please choose Yes or No" />
+ <div class="formspacer"></div>
+ <label for="recordPurchaseTimeFrameID" class="input required">When would you like to move?</label> <select name="recordPurchaseTimeFrameID" id="recordPurchaseTimeFrameID" class="inputclass pageRequired" title="Select a Time Frame">
+ <option value="">-Select-</option>
+ <option value="1">Less than 3 months</option>
+ <option value="2">3-6 months</option>
+ <option value="3">6-9 months</option>
+ <option value="4">9-12 months</option>
+ <option value="5">Over 12 months</option>
+ </select> <br />
+ <label for="recordPurchasePriceRangeID" class="input required">Purchase price range:</label> <select name="recordPurchasePriceRangeID" id="recordPurchasePriceRangeID" class="inputclass pageRequired" title="Select a Price Range">
+ <option value="">-Select-</option>
+ <option value="1"></option>
+ <option value="2">$75,000 - $100,000</option>
+ <option value="3">$100,000 - $125,000</option>
+ <option value="4">$125,000 - $150,000</option>
+ <option value="5">$150,000 - $200,000</option>
+ <option value="6">$200,000 - $250,000</option>
+ <option value="7">$250,000 - $300,000</option>
+ <option value="8">$300,000 - $350,000</option>
+ <option value="9">$350,000 - $400,000</option>
+ <option value="10">$400,000 - $500,000</option>
+ <option value="11">$500,000 - $700,000</option>
+ <option value="12">$700,000 - $900,000</option>
+ <option value="13">> $900,000</option>
+ </select> <br />
+ <label for="recordPurchaseState" class="input required">State:</label> <select name="recordPurchaseState" id="recordPurchaseState" class="inputclass pageRequired" title="Select a State">
+ <option value="">-Select-</option>
+ <option value="AL">Alabama</option>
+ <option value="AK">Alaska</option>
+ <option value="AZ">Arizona</option>
+ <option value="AR">Arkansas</option>
+ <option value="CA">California</option>
+ <option value="CO">Colorado</option>
+ <option value="CT">Connecticut</option>
+ <option value="DE">Delaware</option>
+ <option value="DC">Dist of Columbia</option>
+ <option value="FL">Florida</option>
+ <option value="GA">Georgia</option>
+ <option value="HI">Hawaii</option>
+ <option value="ID">Idaho</option>
+ <option value="IL">Illinois</option>
+ <option value="IN">Indiana</option>
+ <option value="IA">Iowa</option>
+ <option value="KS">Kansas</option>
+ <option value="KY">Kentucky</option>
+ <option value="LA">Louisiana</option>
+ <option value="ME">Maine</option>
+ <option value="MD">Maryland</option>
+ <option value="MA">Massachusetts</option>
+ <option value="MI">Michigan</option>
+ <option value="MN">Minnesota</option>
+ <option value="MS">Mississippi</option>
+ <option value="MO">Missouri</option>
+ <option value="MT">Montana</option>
+ <option value="NE">Nebraska</option>
+ <option value="NV">Nevada</option>
+ <option value="NH">New Hampshire</option>
+ <option value="NJ">New Jersey</option>
+ <option value="NM">New Mexico</option>
+ <option value="NY">New York</option>
+ <option value="NC">North Carolina</option>
+ <option value="ND">North Dakota</option>
+ <option value="OH">Ohio</option>
+ <option value="OK">Oklahoma</option>
+ <option value="OR">Oregon</option>
+ <option value="PA" selected="selected">Pennsylvania</option>
+ <option value="RI">Rhode Island</option>
+ <option value="SC">South Carolina</option>
+ <option value="SD">South Dakota</option>
+ <option value="TN">Tennessee</option>
+ <option value="TX">Texas</option>
+ <option value="UT">Utah</option>
+ <option value="VT">Vermont</option>
+ <option value="VA">Virginia</option>
+ <option value="WA">Washington</option>
+ <option value="WV">West Virginia</option>
+ <option value="WI">Wisconsin</option>
+ <option value="WY">Wyoming</option>
+ </select> <br />
+
+ <label for="recordPurchasePropertyTypeID" class="input">Desired property type:</label> <select name="recordPurchasePropertyTypeID" id="recordPurchasePropertyTypeID" class="inputclass" title="Select a Property Type">
+ <option value="">-Select-</option>
+ <option value="1">Single Family Detached</option>
+ <option value="2">Condo</option>
+ <option value="3">Townhouse</option>
+ <option value="4">Rental</option>
+ <option value="5">Multi-Family</option>
+ <option value="6">Vacation Home</option>
+ <option value="7">Other</option>
+ </select> <br />
+ <div class="buttonWrapper"><input name="formNext1" type="button" class="open1 nextbutton" value="Next" alt="Next" title="Next" /></div>
+ </fieldset>
+ </div>
+ </li>
+ <li id="sf2">
+ <a href='#' class="ui-accordion-link">
+ </a>
+ <div>
+ <fieldset><legend> Step 2 of 3 </legend>
+ <div class="requiredNotice">*Required Field</div>
+ <h3 class="stepHeader">Tell us about the property you're selling</h3>
+ <label for="recordClientTimeFrameID" class="input required">When would you like to sell?</label> <select name="recordClientTimeFrameID" id="recordClientTimeFrameID" class="inputclass pageRequired" title="Select a Time Frame">
+ <option value="">-Select-</option>
+ <option value="1">Less than 3 months</option>
+ <option value="2">3-6 months</option>
+ <option value="3">6-9 months</option>
+ <option value="4">9-12 months</option>
+ <option value="5">Over 12 months</option>
+ </select> <br />
+ <label for="recordClientHomeTypeID" class="input required">Type of property you are selling:</label> <select name="recordClientHomeTypeID" id="recordClientHomeTypeID" class="inputclass pageRequired" title="Select a Property Type">
+ <option value="">-Select-</option>
+ <option value="1">Single Family Detached</option>
+ <option value="2">Condo</option>
+ <option value="3">Townhouse</option>
+ <option value="4">Rental</option>
+ <option value="5">Multi-Family</option>
+ <option value="6">Vacation Home</option>
+ <option value="7">Other</option>
+ </select> <br />
+ <label for="recordPropertyAddress1" class="input required">Property Street Address:</label> <input name="recordPropertyAddress1" id="recordPropertyAddress1" class="inputclass pageRequired" title="Street Address is required" maxlength="254" onblur="recordClientAddress1.value = this.value" /><br />
+ <label for="recordPropertyAddress2" class="input">Address (2):</label> <input name="recordPropertyAddress2" id="recordPropertyAddress2" class="inputclass" maxlength="254" onblur="recordClientAddress2.value = this.value" /><br />
+ <label for="recordPropertyCity" class="input required">City:</label> <input name="recordPropertyCity" id="recordPropertyCity" class="inputclass pageRequired" title="City is required" maxlength="254" onblur="recordClientCity.value = this.value" /><br />
+ <label for="recordPropertyState" class="input required">State:</label> <select name="recordPropertyState" id="recordPropertyState" class="inputclass pageRequired" title="Select a State" onchange="recordClientState.value = this.value">
+ <option value="">-Select-</option>
+ <option value="AL">Alabama</option>
+ <option value="AK">Alaska</option>
+ <option value="AZ">Arizona</option>
+ <option value="AR">Arkansas</option>
+ <option value="CA">California</option>
+ <option value="CO">Colorado</option>
+ <option value="CT">Connecticut</option>
+ <option value="DE">Delaware</option>
+ <option value="DC">Dist of Columbia</option>
+ <option value="FL">Florida</option>
+ <option value="GA">Georgia</option>
+ <option value="HI">Hawaii</option>
+ <option value="ID">Idaho</option>
+ <option value="IL">Illinois</option>
+ <option value="IN">Indiana</option>
+ <option value="IA">Iowa</option>
+ <option value="KS">Kansas</option>
+ <option value="KY">Kentucky</option>
+ <option value="LA">Louisiana</option>
+ <option value="ME">Maine</option>
+ <option value="MD">Maryland</option>
+ <option value="MA">Massachusetts</option>
+ <option value="MI">Michigan</option>
+ <option value="MN">Minnesota</option>
+ <option value="MS">Mississippi</option>
+ <option value="MO">Missouri</option>
+ <option value="MT">Montana</option>
+ <option value="NE">Nebraska</option>
+ <option value="NV">Nevada</option>
+ <option value="NH">New Hampshire</option>
+ <option value="NJ">New Jersey</option>
+ <option value="NM">New Mexico</option>
+ <option value="NY">New York</option>
+ <option value="NC">North Carolina</option>
+ <option value="ND">North Dakota</option>
+ <option value="OH">Ohio</option>
+ <option value="OK">Oklahoma</option>
+ <option value="OR">Oregon</option>
+ <option value="PA" selected="selected">Pennsylvania</option>
+ <option value="RI">Rhode Island</option>
+ <option value="SC">South Carolina</option>
+ <option value="SD">South Dakota</option>
+ <option value="TN">Tennessee</option>
+ <option value="TX">Texas</option>
+ <option value="UT">Utah</option>
+ <option value="VT">Vermont</option>
+ <option value="VA">Virginia</option>
+ <option value="WA">Washington</option>
+ <option value="WV">West Virginia</option>
+ <option value="WI">Wisconsin</option>
+ <option value="WY">Wyoming</option>
+ </select> <br />
+ <label for="recordPropertyZip" class="input required">Zip:</label> <input name="recordPropertyZip" id="recordPropertyZip" class="inputclass pageRequired" title="Zip Code is required" maxlength="254" onblur="recordClientZip.value = this.value" /><br />
+
+ <label for="recordClientPropertyValueID" class="input required">Estimated Market Value:</label> <select name="recordClientPropertyValueID" id="recordClientPropertyValueID" class="inputclass pageRequired" title="Select a Price Range">
+ <option value="">-Select-</option>
+ <option value="1">Less Than $75K</option>
+ <option value="2">$75-$100K</option>
+ <option value="3">$100-$125K</option>
+ <option value="4">$125-$150K</option>
+ <option value="5">$150-$200K</option>
+ <option value="6">$200-$250K</option>
+ <option value="7">$250-$300K</option>
+ <option value="8">$300-$350K</option>
+ <option value="9">$350-$400K</option>
+ <option value="10">$400-$500K</option>
+ <option value="11">$500-$700K</option>
+ <option value="12">$700-$900K</option>
+ <option value="13">Over $900K</option>
+ </select> <br />
+ <label for="recordPropertyBedroomsID" class="input">Bedrooms:</label> <select name="recordPropertyBedroomsID" id="recordPropertyBedroomsID" class="inputclass">
+ <option value="">-Select-</option>
+ <option value="1">1</option>
+ <option value="2">2</option>
+ <option value="3">3</option>
+ <option value="4">4</option>
+ <option value="5">5+</option>
+ </select> <br />
+ <label for="recordPropertyBathroomsId" class="input">Bathrooms:</label> <select name="recordPropertyBathroomsId" id="recordPropertyBathroomsId" class="inputclass">
+ <option value="">-Select-</option>
+ <option value="1">1</option>
+ <option value="2">1.5</option>
+ <option value="3">2</option>
+ <option value="4">2.5</option>
+ <option value="5">3</option>
+ <option value="6">3.5</option>
+ <option value="7">4+</option>
+ </select> <br />
+ <label for="recordPropertyAgeId" class="input">Approx. Age of Home:</label> <select name="recordPropertyAgeId" id="recordPropertyAgeId" class="inputclass">
+ <option value="">-Select-</option>
+ <option value="1">Less Than 1 year</option>
+ <option value="2">1-5 years</option>
+ <option value="3">6-10 years</option>
+ <option value="4">11-15 years</option>
+ <option value="5">More than 15 years</option>
+ </select> <br />
+ <label for="recordPropertySqFt" class="input">Approx. Square Footage:</label> <input name="recordPropertySqFt" id="recordPropertySqFt" class="inputclass" maxlength="254" /><br />
+ <div class="buttonWrapper"><input name="formBack0" type="button" class="open0 prevbutton" value="Back" alt="Back" title="Back" /> <input name="formNext2" type="button" class="open2 nextbutton" value="Next" alt="Next" title="Next" /></div>
+ </fieldset>
+ </div>
+ </li>
+ <li id="sf3">
+ <a href='#' class="ui-accordion-link">
+ </a>
+ <div>
+ <fieldset><legend> Step 3 of 3 </legend>
+ <div class="requiredNotice">*Required Field</div>
+ <h3 class="stepHeader">Tell us about yourself</h3>
+ <label for="recordClientNameFirst" class="input required">First Name:</label> <input name="recordClientNameFirst" id="recordClientNameFirst" class="inputclass pageRequired" title="First Name is required" maxlength="254" /> <br />
+ <label for="recordClientNameLast" class="input required">Last Name:</label> <input name="recordClientNameLast" id="recordClientNameLast" class="inputclass pageRequired" maxlength="254" title="Last Name is required" /> <br />
+ <label for="recordClientAddress1" class="input required">Current Address:</label> <input name="recordClientAddress1" id="recordClientAddress1" class="inputclass pageRequired" maxlength="254" title="Address is required" /> <br />
+ <label for="recordClientAddress2" class="input">Address (2):</label> <input name="recordClientAddress2" id="recordClientAddress2" class="inputclass" maxlength="254" /> <br />
+ <label for="recordClientCity" class="input required">City:</label> <input name="recordClientCity" id="recordClientCity" class="inputclass pageRequired" maxlength="254" title="City is required" /> <br />
+ <label for="recordClientState" class="input required">State:</label> <select name="recordClientState" id="recordClientState" class="inputclass pageRequired" title="Select a State">
+ <option value="">-Select-</option>
+ <option value="AL">Alabama</option>
+ <option value="AK">Alaska</option>
+ <option value="AZ">Arizona</option>
+ <option value="AR">Arkansas</option>
+ <option value="CA">California</option>
+ <option value="CO">Colorado</option>
+ <option value="CT">Connecticut</option>
+ <option value="DE">Delaware</option>
+ <option value="DC">Dist of Columbia</option>
+ <option value="FL">Florida</option>
+ <option value="GA">Georgia</option>
+ <option value="HI">Hawaii</option>
+ <option value="ID">Idaho</option>
+ <option value="IL">Illinois</option>
+ <option value="IN">Indiana</option>
+ <option value="IA">Iowa</option>
+ <option value="KS">Kansas</option>
+ <option value="KY">Kentucky</option>
+ <option value="LA">Louisiana</option>
+ <option value="ME">Maine</option>
+ <option value="MD">Maryland</option>
+ <option value="MA">Massachusetts</option>
+ <option value="MI">Michigan</option>
+ <option value="MN">Minnesota</option>
+ <option value="MS">Mississippi</option>
+ <option value="MO">Missouri</option>
+ <option value="MT">Montana</option>
+ <option value="NE">Nebraska</option>
+ <option value="NV">Nevada</option>
+ <option value="NH">New Hampshire</option>
+ <option value="NJ">New Jersey</option>
+ <option value="NM">New Mexico</option>
+ <option value="NY">New York</option>
+ <option value="NC">North Carolina</option>
+ <option value="ND">North Dakota</option>
+ <option value="OH">Ohio</option>
+ <option value="OK">Oklahoma</option>
+ <option value="OR">Oregon</option>
+ <option value="PA" selected="selected">Pennsylvania</option>
+ <option value="RI">Rhode Island</option>
+ <option value="SC">South Carolina</option>
+ <option value="SD">South Dakota</option>
+ <option value="TN">Tennessee</option>
+ <option value="TX">Texas</option>
+ <option value="UT">Utah</option>
+ <option value="VT">Vermont</option>
+ <option value="VA">Virginia</option>
+ <option value="WA">Washington</option>
+ <option value="WV">West Virginia</option>
+ <option value="WI">Wisconsin</option>
+ <option value="WY">Wyoming</option>
+ </select> <br />
+ <label for="recordClientZip" class="input required">Zip:</label> <input name="recordClientZip" id="recordClientZip" class="inputclass pageRequired" maxlength="12" title="Zip Code is required" /> <br />
+ <label for="recordClientPhone" class="input required">Phone Number:</label> <input name="recordClientPhone" id="recordClientPhone" class="inputclass pageRequired" maxlength="254" title="Phone Number is required" /> <br />
+ <label for="recordClientPhoneAlt" class="input">Alternate Number:</label> <input name="recordClientPhoneAlt" id="recordClientPhoneAlt" class="inputclass" maxlength="254" /> <br />
+ <label for="recordClientEmail" class="input required">Email Address:</label> <input name="recordClientEmail" id="recordClientEmail" class="inputclass pageRequired email" maxlength="254" title="Email address is required" /> <br />
+ <label for="recordClientEmail1" class="input required">Confirm Email:</label> <input name="recordClientEmail1" id="recordClientEmail1" class="inputclass pageRequired" equalTo:"'#recordClientEmail" maxlength="254" title="Please confirm your email address" /> <br />
+ <br />
+ <p class="formDisclaimer">This is a sample form, no information is sent anywhere.</p>
+ <div class="buttonWrapper"><input name="formBack1" type="button" class="open1 prevbutton" value="Back" alt="Back" title="Back" /> <input name="submit" type="submit" id="submit" value="Submit" class="submitbutton" alt="Submit" title="Submit"></div>
+ </fieldset>
+ </div>
+ </li>
+</ul>
+</form>
+
+</div>
+</div>
+
+</body>
+</html>
diff --git a/bug/bug/jquery-validation-1.8.1/demo/multipart/js/jquery.maskedinput-1.0.js b/bug/bug/jquery-validation-1.8.1/demo/multipart/js/jquery.maskedinput-1.0.js
new file mode 100644
index 0000000..9ba3ecf
--- /dev/null
+++ b/bug/bug/jquery-validation-1.8.1/demo/multipart/js/jquery.maskedinput-1.0.js
@@ -0,0 +1,246 @@
+/*
+ * Copyright (c) 2007 Josh Bush (digitalbush.com)
+ *
+ * Permission is hereby granted, free of charge, to any person
+ * obtaining a copy of this software and associated documentation
+ * files (the "Software"), to deal in the Software without
+ * restriction, including without limitation the rights to use,
+ * copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following
+ * conditions:
+
+ * The above copyright notice and this permission notice shall be
+ * included in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+ * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+ * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ * OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+/*
+ * Version: 1.0
+ * Release: 2007-07-25
+ */
+(function($) {
+ //Helper Functions for Caret positioning
+ function getCaretPosition(ctl){
+ var res = {begin: 0, end: 0 };
+ if (ctl.setSelectionRange){
+ res.begin = ctl.selectionStart;
+ res.end = ctl.selectionEnd;
+ }else if (document.selection && document.selection.createRange){
+ var range = document.selection.createRange();
+ res.begin = 0 - range.duplicate().moveStart('character', -100000);
+ res.end = res.begin + range.text.length;
+ }
+ return res;
+ };
+
+ function setCaretPosition(ctl, pos){
+ if(ctl.setSelectionRange){
+ ctl.focus();
+ ctl.setSelectionRange(pos,pos);
+ }else if (ctl.createTextRange){
+ var range = ctl.createTextRange();
+ range.collapse(true);
+ range.moveEnd('character', pos);
+ range.moveStart('character', pos);
+ range.select();
+ }
+ };
+
+ //Predefined character definitions
+ var charMap={
+ '9':"[0-9]",
+ 'a':"[A-Za-z]",
+ '*':"[A-Za-z0-9]"
+ };
+
+ //Helper method to inject character definitions
+ $.mask={
+ addPlaceholder : function(c,r){
+ charMap[c]=r;
+ }
+ };
+
+ //Main Method
+ $.fn.mask = function(mask,settings) {
+ settings = $.extend({
+ placeholder: "_",
+ completed: null
+ }, settings);
+
+ //Build Regex for format validation
+ var reString="^";
+ for(var i=0;i<mask.length;i++)
+ reString+=(charMap[mask.charAt(i)] || ("\\"+mask.charAt(i)));
+ reString+="$";
+ var re = new RegExp(reString);
+
+ return this.each(function(){
+ var input=$(this);
+ var buffer=new Array(mask.length);
+ var locked=new Array(mask.length);
+
+ //Build buffer layout from mask
+ for(var i=0;i<mask.length;i++){
+ locked[i]=charMap[mask.charAt(i)]==null;
+ buffer[i]=locked[i]?mask.charAt(i):settings.placeholder;
+ }
+
+ /*Event Bindings*/
+ input.focus(function(){
+ checkVal();
+ writeBuffer();
+ setCaretPosition(this,0);
+ });
+
+ input.blur(checkVal);
+
+ //Paste events for IE and Mozilla thanks to Kristinn Sigmundsson
+ if ($.browser.msie)
+ this.onpaste= function(){setTimeout(checkVal,0);};
+ else if ($.browser.mozilla)
+ this.addEventListener('input',checkVal,false);
+
+ var ignore=false; //Variable for ignoring control keys
+
+ input.keydown(function(e){
+ var pos=getCaretPosition(this);
+ var k = e.keyCode;
+ ignore=(k < 16 || (k > 16 && k < 32 ) || (k > 32 && k < 41));
+
+ //delete selection before proceeding
+ if((pos.begin-pos.end)!=0 && (!ignore || k==8 || k==46)){
+ clearBuffer(pos.begin,pos.end);
+ }
+ //backspace and delete get special treatment
+ if(k==8){//backspace
+ while(pos.begin-->=0){
+ if(!locked[pos.begin]){
+ buffer[pos.begin]=settings.placeholder;
+ if($.browser.opera){
+ //Opera won't let you cancel the backspace, so we'll let it backspace over a dummy character.
+ writeBuffer(pos.begin);
+ setCaretPosition(this,pos.begin+1);
+ }else{
+ writeBuffer();
+ setCaretPosition(this,pos.begin);
+ }
+ return false;
+ }
+ }
+ }else if(k==46){//delete
+ clearBuffer(pos.begin,pos.begin+1);
+ writeBuffer();
+ setCaretPosition(this,pos.begin);
+ return false;
+ }else if (k==27){
+ clearBuffer(0,mask.length);
+ writeBuffer();
+ setCaretPosition(this,0);
+ return false;
+ }
+
+ });
+
+ input.keypress(function(e){
+ if(ignore){
+ ignore=false;
+ return;
+ }
+ e=e||window.event;
+ var k=e.charCode||e.keyCode||e.which;
+
+ var pos=getCaretPosition(this);
+ var caretPos=pos.begin;
+
+ if(e.ctrlKey || e.altKey){//Ignore
+ return true;
+ }else if ((k>=41 && k<=122) ||k==32 || k>186){//typeable characters
+ while(pos.begin<mask.length){
+ var reString=charMap[mask.charAt(pos.begin)];
+ var match;
+ if(reString){
+ var reChar=new RegExp(reString);
+ match=String.fromCharCode(k).match(reChar);
+ }else{//we're on a mask char, go forward and try again
+ pos.begin+=1;
+ pos.end=pos.begin;
+ caretPos+=1;
+ continue;
+ }
+
+ if(match)
+ buffer[pos.begin]=String.fromCharCode(k);
+ else
+ return false;//reject char
+
+ while(++caretPos<mask.length){//seek forward to next typable position
+ if(!locked[caretPos])
+ break;
+ }
+ break;
+ }
+ }else
+ return false;
+
+ writeBuffer();
+ if(settings.completed && caretPos>=buffer.length)
+ settings.completed.call(input);
+ else
+ setCaretPosition(this,caretPos);
+
+ return false;
+ });
+
+ /*Helper Methods*/
+ function clearBuffer(start,end){
+ for(var i=start;i<end;i++){
+ if(!locked[i])
+ buffer[i]=settings.placeholder;
+ }
+ };
+
+ function writeBuffer(pos){
+ var s="";
+ for(var i=0;i<mask.length;i++){
+ s+=buffer[i];
+ if(i==pos)
+ s+=settings.placeholder;
+ }
+ input.val(s);
+ return s;
+ };
+
+ function checkVal(){
+ //try to place charcters where they belong
+ var test=input.val();
+ var pos=0;
+ for(var i=0;i<mask.length;i++){
+ if(!locked[i]){
+ while(pos++<test.length){
+ //Regex Test each char here.
+ var reChar=new RegExp(charMap[mask.charAt(i)]);
+ if(test.charAt(pos-1).match(reChar)){
+ buffer[i]=test.charAt(pos-1);
+ break;
+ }
+ }
+ }
+ }
+ var s=writeBuffer();
+ if(!s.match(re)){
+ input.val("");
+ clearBuffer(0,mask.length);
+ }
+ };
+ });
+ };
+})(jQuery); \ No newline at end of file
diff --git a/bug/bug/jquery-validation-1.8.1/demo/multipart/js/ui.accordion.js b/bug/bug/jquery-validation-1.8.1/demo/multipart/js/ui.accordion.js
new file mode 100644
index 0000000..0e94df1
--- /dev/null
+++ b/bug/bug/jquery-validation-1.8.1/demo/multipart/js/ui.accordion.js
@@ -0,0 +1,477 @@
+/*
+ * jQuery UI Accordion 1.7.1
+ *
+ * Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT (MIT-LICENSE.txt)
+ * and GPL (GPL-LICENSE.txt) licenses.
+ *
+ * http://docs.jquery.com/UI/Accordion
+ *
+ * Depends:
+ * ui.core.js
+ */
+(function($) {
+
+$.widget("ui.accordion", {
+
+ _init: function() {
+
+ var o = this.options, self = this;
+ this.running = 0;
+
+ // if the user set the alwaysOpen option on init
+ // then we need to set the collapsible option
+ // if they set both on init, collapsible will take priority
+ if (o.collapsible == $.ui.accordion.defaults.collapsible &&
+ o.alwaysOpen != $.ui.accordion.defaults.alwaysOpen) {
+ o.collapsible = !o.alwaysOpen;
+ }
+
+ if ( o.navigation ) {
+ var current = this.element.find("a").filter(o.navigationFilter);
+ if ( current.length ) {
+ if ( current.filter(o.header).length ) {
+ this.active = current;
+ } else {
+ this.active = current.parent().parent().prev();
+ current.addClass("ui-accordion-content-active");
+ }
+ }
+ }
+
+ this.element.addClass("ui-accordion ui-widget ui-helper-reset");
+
+ // in lack of child-selectors in CSS we need to mark top-LIs in a UL-accordion for some IE-fix
+ if (this.element[0].nodeName == "UL") {
+ this.element.children("li").addClass("ui-accordion-li-fix");
+ }
+
+ this.headers = this.element.find(o.header).addClass("ui-accordion-header ui-helper-reset ui-state-default ui-corner-all")
+ .bind("mouseenter.accordion", function(){ $(this).addClass('ui-state-hover'); })
+ .bind("mouseleave.accordion", function(){ $(this).removeClass('ui-state-hover'); })
+ .bind("focus.accordion", function(){ $(this).addClass('ui-state-focus'); })
+ .bind("blur.accordion", function(){ $(this).removeClass('ui-state-focus'); });
+
+ this.headers
+ .next()
+ .addClass("ui-accordion-content ui-helper-reset ui-widget-content ui-corner-bottom");
+
+ this.active = this._findActive(this.active || o.active).toggleClass("ui-state-default").toggleClass("ui-state-active").toggleClass("ui-corner-all").toggleClass("ui-corner-top");
+ this.active.next().addClass('ui-accordion-content-active');
+
+ //Append icon elements
+ $("<span/>").addClass("ui-icon " + o.icons.header).prependTo(this.headers);
+ this.active.find(".ui-icon").toggleClass(o.icons.header).toggleClass(o.icons.headerSelected);
+
+ // IE7-/Win - Extra vertical space in lists fixed
+ if ($.browser.msie) {
+ this.element.find('a').css('zoom', '1');
+ }
+
+ this.resize();
+
+ //ARIA
+ this.element.attr('role','tablist');
+
+ this.headers
+ .attr('role','tab')
+ .bind('keydown', function(event) { return self._keydown(event); })
+ .next()
+ .attr('role','tabpanel');
+
+ this.headers
+ .not(this.active || "")
+ .attr('aria-expanded','false')
+ .attr("tabIndex", "-1")
+ .next()
+ .hide();
+
+ // make sure at least one header is in the tab order
+ if (!this.active.length) {
+ this.headers.eq(0).attr('tabIndex','0');
+ } else {
+ this.active
+ .attr('aria-expanded','true')
+ .attr('tabIndex', '0');
+ }
+
+ // only need links in taborder for Safari
+ if (!$.browser.safari)
+ this.headers.find('a').attr('tabIndex','-1');
+
+ if (o.event) {
+ this.headers.bind((o.event) + ".accordion", function(event) { return self._clickHandler.call(self, event, this); });
+ }
+
+ },
+
+ destroy: function() {
+ var o = this.options;
+
+ this.element
+ .removeClass("ui-accordion ui-widget ui-helper-reset")
+ .removeAttr("role")
+ .unbind('.accordion')
+ .removeData('accordion');
+
+ this.headers
+ .unbind(".accordion")
+ .removeClass("ui-accordion-header ui-helper-reset ui-state-default ui-corner-all ui-state-active ui-corner-top")
+ .removeAttr("role").removeAttr("aria-expanded").removeAttr("tabindex");
+
+ this.headers.find("a").removeAttr("tabindex");
+ this.headers.children(".ui-icon").remove();
+ var contents = this.headers.next().css("display", "").removeAttr("role").removeClass("ui-helper-reset ui-widget-content ui-corner-bottom ui-accordion-content ui-accordion-content-active");
+ if (o.autoHeight || o.fillHeight) {
+ contents.css("height", "");
+ }
+ },
+
+ _setData: function(key, value) {
+ if(key == 'alwaysOpen') { key = 'collapsible'; value = !value; }
+ $.widget.prototype._setData.apply(this, arguments);
+ },
+
+ _keydown: function(event) {
+
+ var o = this.options, keyCode = $.ui.keyCode;
+
+ if (o.disabled || event.altKey || event.ctrlKey)
+ return;
+
+ var length = this.headers.length;
+ var currentIndex = this.headers.index(event.target);
+ var toFocus = false;
+
+ switch(event.keyCode) {
+ case keyCode.RIGHT:
+ case keyCode.DOWN:
+ toFocus = this.headers[(currentIndex + 1) % length];
+ break;
+ case keyCode.LEFT:
+ case keyCode.UP:
+ toFocus = this.headers[(currentIndex - 1 + length) % length];
+ break;
+ case keyCode.SPACE:
+ case keyCode.ENTER:
+ return this._clickHandler({ target: event.target }, event.target);
+ }
+
+ if (toFocus) {
+ $(event.target).attr('tabIndex','-1');
+ $(toFocus).attr('tabIndex','0');
+ toFocus.focus();
+ return false;
+ }
+
+ return true;
+
+ },
+
+ resize: function() {
+
+ var o = this.options, maxHeight;
+
+ if (o.fillSpace) {
+
+ if($.browser.msie) { var defOverflow = this.element.parent().css('overflow'); this.element.parent().css('overflow', 'hidden'); }
+ maxHeight = this.element.parent().height();
+ if($.browser.msie) { this.element.parent().css('overflow', defOverflow); }
+
+ this.headers.each(function() {
+ maxHeight -= $(this).outerHeight();
+ });
+
+ var maxPadding = 0;
+ this.headers.next().each(function() {
+ maxPadding = Math.max(maxPadding, $(this).innerHeight() - $(this).height());
+ }).height(Math.max(0, maxHeight - maxPadding))
+ .css('overflow', 'auto');
+
+ } else if ( o.autoHeight ) {
+ maxHeight = 0;
+ this.headers.next().each(function() {
+ maxHeight = Math.max(maxHeight, $(this).outerHeight());
+ }).height(maxHeight);
+ }
+
+ },
+
+ activate: function(index) {
+ // call clickHandler with custom event
+ var active = this._findActive(index)[0];
+ this._clickHandler({ target: active }, active);
+ },
+
+ _findActive: function(selector) {
+ return selector
+ ? typeof selector == "number"
+ ? this.headers.filter(":eq(" + selector + ")")
+ : this.headers.not(this.headers.not(selector))
+ : selector === false
+ ? $([])
+ : this.headers.filter(":eq(0)");
+ },
+
+ _clickHandler: function(event, target) {
+
+ var o = this.options;
+ if (o.disabled) return false;
+
+ // called only when using activate(false) to close all parts programmatically
+ if (!event.target && o.collapsible) {
+ this.active.removeClass("ui-state-active ui-corner-top").addClass("ui-state-default ui-corner-all")
+ .find(".ui-icon").removeClass(o.icons.headerSelected).addClass(o.icons.header);
+ this.active.next().addClass('ui-accordion-content-active');
+ var toHide = this.active.next(),
+ data = {
+ options: o,
+ newHeader: $([]),
+ oldHeader: o.active,
+ newContent: $([]),
+ oldContent: toHide
+ },
+ toShow = (this.active = $([]));
+ this._toggle(toShow, toHide, data);
+ return false;
+ }
+
+ // get the click target
+ var clicked = $(event.currentTarget || target);
+ var clickedIsActive = clicked[0] == this.active[0];
+
+ // if animations are still active, or the active header is the target, ignore click
+ if (this.running || (!o.collapsible && clickedIsActive)) {
+ return false;
+ }
+
+ // switch classes
+ this.active.removeClass("ui-state-active ui-corner-top").addClass("ui-state-default ui-corner-all")
+ .find(".ui-icon").removeClass(o.icons.headerSelected).addClass(o.icons.header);
+ this.active.next().addClass('ui-accordion-content-active');
+ if (!clickedIsActive) {
+ clicked.removeClass("ui-state-default ui-corner-all").addClass("ui-state-active ui-corner-top")
+ .find(".ui-icon").removeClass(o.icons.header).addClass(o.icons.headerSelected);
+ clicked.next().addClass('ui-accordion-content-active');
+ }
+
+ // find elements to show and hide
+ var toShow = clicked.next(),
+ toHide = this.active.next(),
+ data = {
+ options: o,
+ newHeader: clickedIsActive && o.collapsible ? $([]) : clicked,
+ oldHeader: this.active,
+ newContent: clickedIsActive && o.collapsible ? $([]) : toShow.find('> *'),
+ oldContent: toHide.find('> *')
+ },
+ down = this.headers.index( this.active[0] ) > this.headers.index( clicked[0] );
+
+ this.active = clickedIsActive ? $([]) : clicked;
+ this._toggle(toShow, toHide, data, clickedIsActive, down);
+
+ return false;
+
+ },
+
+ _toggle: function(toShow, toHide, data, clickedIsActive, down) {
+
+ var o = this.options, self = this;
+
+ this.toShow = toShow;
+ this.toHide = toHide;
+ this.data = data;
+
+ var complete = function() { if(!self) return; return self._completed.apply(self, arguments); };
+
+ // trigger changestart event
+ this._trigger("changestart", null, this.data);
+
+ // count elements to animate
+ this.running = toHide.size() === 0 ? toShow.size() : toHide.size();
+
+ if (o.animated) {
+
+ var animOptions = {};
+
+ if ( o.collapsible && clickedIsActive ) {
+ animOptions = {
+ toShow: $([]),
+ toHide: toHide,
+ complete: complete,
+ down: down,
+ autoHeight: o.autoHeight || o.fillSpace
+ };
+ } else {
+ animOptions = {
+ toShow: toShow,
+ toHide: toHide,
+ complete: complete,
+ down: down,
+ autoHeight: o.autoHeight || o.fillSpace
+ };
+ }
+
+ if (!o.proxied) {
+ o.proxied = o.animated;
+ }
+
+ if (!o.proxiedDuration) {
+ o.proxiedDuration = o.duration;
+ }
+
+ o.animated = $.isFunction(o.proxied) ?
+ o.proxied(animOptions) : o.proxied;
+
+ o.duration = $.isFunction(o.proxiedDuration) ?
+ o.proxiedDuration(animOptions) : o.proxiedDuration;
+
+ var animations = $.ui.accordion.animations,
+ duration = o.duration,
+ easing = o.animated;
+
+ if (!animations[easing]) {
+ animations[easing] = function(options) {
+ this.slide(options, {
+ easing: easing,
+ duration: duration || 700
+ });
+ };
+ }
+
+ animations[easing](animOptions);
+
+ } else {
+
+ if (o.collapsible && clickedIsActive) {
+ toShow.toggle();
+ } else {
+ toHide.hide();
+ toShow.show();
+ }
+
+ complete(true);
+
+ }
+
+ toHide.prev().attr('aria-expanded','false').attr("tabIndex", "-1").blur();
+ toShow.prev().attr('aria-expanded','true').attr("tabIndex", "0").focus();
+
+ },
+
+ _completed: function(cancel) {
+
+ var o = this.options;
+
+ this.running = cancel ? 0 : --this.running;
+ if (this.running) return;
+
+ if (o.clearStyle) {
+ this.toShow.add(this.toHide).css({
+ height: "",
+ overflow: ""
+ });
+ }
+
+ this._trigger('change', null, this.data);
+ }
+
+});
+
+
+$.extend($.ui.accordion, {
+ version: "1.7.1",
+ defaults: {
+ active: null,
+ alwaysOpen: true, //deprecated, use collapsible
+ animated: 'slide',
+ autoHeight: true,
+ clearStyle: false,
+ collapsible: false,
+ event: "click",
+ fillSpace: false,
+ header: "> li > :first-child,> :not(li):even",
+ icons: {
+ header: "ui-icon-triangle-1-e",
+ headerSelected: "ui-icon-triangle-1-s"
+ },
+ navigation: false,
+ navigationFilter: function() {
+ return this.href.toLowerCase() == location.href.toLowerCase();
+ }
+ },
+ animations: {
+ slide: function(options, additions) {
+ options = $.extend({
+ easing: "swing",
+ duration: 300
+ }, options, additions);
+ if ( !options.toHide.size() ) {
+ options.toShow.animate({height: "show"}, options);
+ return;
+ }
+ if ( !options.toShow.size() ) {
+ options.toHide.animate({height: "hide"}, options);
+ return;
+ }
+ var overflow = options.toShow.css('overflow'),
+ percentDone,
+ showProps = {},
+ hideProps = {},
+ fxAttrs = [ "height", "paddingTop", "paddingBottom" ],
+ originalWidth;
+ // fix width before calculating height of hidden element
+ var s = options.toShow;
+ originalWidth = s[0].style.width;
+ s.width( parseInt(s.parent().width(),10) - parseInt(s.css("paddingLeft"),10) - parseInt(s.css("paddingRight"),10) - (parseInt(s.css("borderLeftWidth"),10) || 0) - (parseInt(s.css("borderRightWidth"),10) || 0) );
+
+ $.each(fxAttrs, function(i, prop) {
+ hideProps[prop] = 'hide';
+
+ var parts = ('' + $.css(options.toShow[0], prop)).match(/^([\d+-.]+)(.*)$/);
+ showProps[prop] = {
+ value: parts[1],
+ unit: parts[2] || 'px'
+ };
+ });
+ options.toShow.css({ height: 0, overflow: 'hidden' }).show();
+ options.toHide.filter(":hidden").each(options.complete).end().filter(":visible").animate(hideProps,{
+ step: function(now, settings) {
+ // only calculate the percent when animating height
+ // IE gets very inconsistent results when animating elements
+ // with small values, which is common for padding
+ if (settings.prop == 'height') {
+ percentDone = (settings.now - settings.start) / (settings.end - settings.start);
+ }
+
+ options.toShow[0].style[settings.prop] =
+ (percentDone * showProps[settings.prop].value) + showProps[settings.prop].unit;
+ },
+ duration: options.duration,
+ easing: options.easing,
+ complete: function() {
+ if ( !options.autoHeight ) {
+ options.toShow.css("height", "");
+ }
+ options.toShow.css("width", originalWidth);
+ options.toShow.css({overflow: overflow});
+ options.complete();
+ }
+ });
+ },
+ bounceslide: function(options) {
+ this.slide(options, {
+ easing: options.down ? "easeOutBounce" : "swing",
+ duration: options.down ? 1000 : 200
+ });
+ },
+ easeslide: function(options) {
+ this.slide(options, {
+ easing: "easeinout",
+ duration: 700
+ });
+ }
+ }
+});
+
+})(jQuery);
diff --git a/bug/bug/jquery-validation-1.8.1/demo/multipart/js/ui.core.js b/bug/bug/jquery-validation-1.8.1/demo/multipart/js/ui.core.js
new file mode 100644
index 0000000..6be9993
--- /dev/null
+++ b/bug/bug/jquery-validation-1.8.1/demo/multipart/js/ui.core.js
@@ -0,0 +1,519 @@
+/*
+ * jQuery UI 1.7.1
+ *
+ * Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT (MIT-LICENSE.txt)
+ * and GPL (GPL-LICENSE.txt) licenses.
+ *
+ * http://docs.jquery.com/UI
+ */
+;jQuery.ui || (function($) {
+
+var _remove = $.fn.remove,
+ isFF2 = $.browser.mozilla && (parseFloat($.browser.version) < 1.9);
+
+//Helper functions and ui object
+$.ui = {
+ version: "1.7.1",
+
+ // $.ui.plugin is deprecated. Use the proxy pattern instead.
+ plugin: {
+ add: function(module, option, set) {
+ var proto = $.ui[module].prototype;
+ for(var i in set) {
+ proto.plugins[i] = proto.plugins[i] || [];
+ proto.plugins[i].push([option, set[i]]);
+ }
+ },
+ call: function(instance, name, args) {
+ var set = instance.plugins[name];
+ if(!set || !instance.element[0].parentNode) { return; }
+
+ for (var i = 0; i < set.length; i++) {
+ if (instance.options[set[i][0]]) {
+ set[i][1].apply(instance.element, args);
+ }
+ }
+ }
+ },
+
+ contains: function(a, b) {
+ return document.compareDocumentPosition
+ ? a.compareDocumentPosition(b) & 16
+ : a !== b && a.contains(b);
+ },
+
+ hasScroll: function(el, a) {
+
+ //If overflow is hidden, the element might have extra content, but the user wants to hide it
+ if ($(el).css('overflow') == 'hidden') { return false; }
+
+ var scroll = (a && a == 'left') ? 'scrollLeft' : 'scrollTop',
+ has = false;
+
+ if (el[scroll] > 0) { return true; }
+
+ // TODO: determine which cases actually cause this to happen
+ // if the element doesn't have the scroll set, see if it's possible to
+ // set the scroll
+ el[scroll] = 1;
+ has = (el[scroll] > 0);
+ el[scroll] = 0;
+ return has;
+ },
+
+ isOverAxis: function(x, reference, size) {
+ //Determines when x coordinate is over "b" element axis
+ return (x > reference) && (x < (reference + size));
+ },
+
+ isOver: function(y, x, top, left, height, width) {
+ //Determines when x, y coordinates is over "b" element
+ return $.ui.isOverAxis(y, top, height) && $.ui.isOverAxis(x, left, width);
+ },
+
+ keyCode: {
+ BACKSPACE: 8,
+ CAPS_LOCK: 20,
+ COMMA: 188,
+ CONTROL: 17,
+ DELETE: 46,
+ DOWN: 40,
+ END: 35,
+ ENTER: 13,
+ ESCAPE: 27,
+ HOME: 36,
+ INSERT: 45,
+ LEFT: 37,
+ NUMPAD_ADD: 107,
+ NUMPAD_DECIMAL: 110,
+ NUMPAD_DIVIDE: 111,
+ NUMPAD_ENTER: 108,
+ NUMPAD_MULTIPLY: 106,
+ NUMPAD_SUBTRACT: 109,
+ PAGE_DOWN: 34,
+ PAGE_UP: 33,
+ PERIOD: 190,
+ RIGHT: 39,
+ SHIFT: 16,
+ SPACE: 32,
+ TAB: 9,
+ UP: 38
+ }
+};
+
+// WAI-ARIA normalization
+if (isFF2) {
+ var attr = $.attr,
+ removeAttr = $.fn.removeAttr,
+ ariaNS = "http://www.w3.org/2005/07/aaa",
+ ariaState = /^aria-/,
+ ariaRole = /^wairole:/;
+
+ $.attr = function(elem, name, value) {
+ var set = value !== undefined;
+
+ return (name == 'role'
+ ? (set
+ ? attr.call(this, elem, name, "wairole:" + value)
+ : (attr.apply(this, arguments) || "").replace(ariaRole, ""))
+ : (ariaState.test(name)
+ ? (set
+ ? elem.setAttributeNS(ariaNS,
+ name.replace(ariaState, "aaa:"), value)
+ : attr.call(this, elem, name.replace(ariaState, "aaa:")))
+ : attr.apply(this, arguments)));
+ };
+
+ $.fn.removeAttr = function(name) {
+ return (ariaState.test(name)
+ ? this.each(function() {
+ this.removeAttributeNS(ariaNS, name.replace(ariaState, ""));
+ }) : removeAttr.call(this, name));
+ };
+}
+
+//jQuery plugins
+$.fn.extend({
+ remove: function() {
+ // Safari has a native remove event which actually removes DOM elements,
+ // so we have to use triggerHandler instead of trigger (#3037).
+ $("*", this).add(this).each(function() {
+ $(this).triggerHandler("remove");
+ });
+ return _remove.apply(this, arguments );
+ },
+
+ enableSelection: function() {
+ return this
+ .attr('unselectable', 'off')
+ .css('MozUserSelect', '')
+ .unbind('selectstart.ui');
+ },
+
+ disableSelection: function() {
+ return this
+ .attr('unselectable', 'on')
+ .css('MozUserSelect', 'none')
+ .bind('selectstart.ui', function() { return false; });
+ },
+
+ scrollParent: function() {
+ var scrollParent;
+ if(($.browser.msie && (/(static|relative)/).test(this.css('position'))) || (/absolute/).test(this.css('position'))) {
+ scrollParent = this.parents().filter(function() {
+ return (/(relative|absolute|fixed)/).test($.curCSS(this,'position',1)) && (/(auto|scroll)/).test($.curCSS(this,'overflow',1)+$.curCSS(this,'overflow-y',1)+$.curCSS(this,'overflow-x',1));
+ }).eq(0);
+ } else {
+ scrollParent = this.parents().filter(function() {
+ return (/(auto|scroll)/).test($.curCSS(this,'overflow',1)+$.curCSS(this,'overflow-y',1)+$.curCSS(this,'overflow-x',1));
+ }).eq(0);
+ }
+
+ return (/fixed/).test(this.css('position')) || !scrollParent.length ? $(document) : scrollParent;
+ }
+});
+
+
+//Additional selectors
+$.extend($.expr[':'], {
+ data: function(elem, i, match) {
+ return !!$.data(elem, match[3]);
+ },
+
+ focusable: function(element) {
+ var nodeName = element.nodeName.toLowerCase(),
+ tabIndex = $.attr(element, 'tabindex');
+ return (/input|select|textarea|button|object/.test(nodeName)
+ ? !element.disabled
+ : 'a' == nodeName || 'area' == nodeName
+ ? element.href || !isNaN(tabIndex)
+ : !isNaN(tabIndex))
+ // the element and all of its ancestors must be visible
+ // the browser may report that the area is hidden
+ && !$(element)['area' == nodeName ? 'parents' : 'closest'](':hidden').length;
+ },
+
+ tabbable: function(element) {
+ var tabIndex = $.attr(element, 'tabindex');
+ return (isNaN(tabIndex) || tabIndex >= 0) && $(element).is(':focusable');
+ }
+});
+
+
+// $.widget is a factory to create jQuery plugins
+// taking some boilerplate code out of the plugin code
+function getter(namespace, plugin, method, args) {
+ function getMethods(type) {
+ var methods = $[namespace][plugin][type] || [];
+ return (typeof methods == 'string' ? methods.split(/,?\s+/) : methods);
+ }
+
+ var methods = getMethods('getter');
+ if (args.length == 1 && typeof args[0] == 'string') {
+ methods = methods.concat(getMethods('getterSetter'));
+ }
+ return ($.inArray(method, methods) != -1);
+}
+
+$.widget = function(name, prototype) {
+ var namespace = name.split(".")[0];
+ name = name.split(".")[1];
+
+ // create plugin method
+ $.fn[name] = function(options) {
+ var isMethodCall = (typeof options == 'string'),
+ args = Array.prototype.slice.call(arguments, 1);
+
+ // prevent calls to internal methods
+ if (isMethodCall && options.substring(0, 1) == '_') {
+ return this;
+ }
+
+ // handle getter methods
+ if (isMethodCall && getter(namespace, name, options, args)) {
+ var instance = $.data(this[0], name);
+ return (instance ? instance[options].apply(instance, args)
+ : undefined);
+ }
+
+ // handle initialization and non-getter methods
+ return this.each(function() {
+ var instance = $.data(this, name);
+
+ // constructor
+ (!instance && !isMethodCall &&
+ $.data(this, name, new $[namespace][name](this, options))._init());
+
+ // method call
+ (instance && isMethodCall && $.isFunction(instance[options]) &&
+ instance[options].apply(instance, args));
+ });
+ };
+
+ // create widget constructor
+ $[namespace] = $[namespace] || {};
+ $[namespace][name] = function(element, options) {
+ var self = this;
+
+ this.namespace = namespace;
+ this.widgetName = name;
+ this.widgetEventPrefix = $[namespace][name].eventPrefix || name;
+ this.widgetBaseClass = namespace + '-' + name;
+
+ this.options = $.extend({},
+ $.widget.defaults,
+ $[namespace][name].defaults,
+ $.metadata && $.metadata.get(element)[name],
+ options);
+
+ this.element = $(element)
+ .bind('setData.' + name, function(event, key, value) {
+ if (event.target == element) {
+ return self._setData(key, value);
+ }
+ })
+ .bind('getData.' + name, function(event, key) {
+ if (event.target == element) {
+ return self._getData(key);
+ }
+ })
+ .bind('remove', function() {
+ return self.destroy();
+ });
+ };
+
+ // add widget prototype
+ $[namespace][name].prototype = $.extend({}, $.widget.prototype, prototype);
+
+ // TODO: merge getter and getterSetter properties from widget prototype
+ // and plugin prototype
+ $[namespace][name].getterSetter = 'option';
+};
+
+$.widget.prototype = {
+ _init: function() {},
+ destroy: function() {
+ this.element.removeData(this.widgetName)
+ .removeClass(this.widgetBaseClass + '-disabled' + ' ' + this.namespace + '-state-disabled')
+ .removeAttr('aria-disabled');
+ },
+
+ option: function(key, value) {
+ var options = key,
+ self = this;
+
+ if (typeof key == "string") {
+ if (value === undefined) {
+ return this._getData(key);
+ }
+ options = {};
+ options[key] = value;
+ }
+
+ $.each(options, function(key, value) {
+ self._setData(key, value);
+ });
+ },
+ _getData: function(key) {
+ return this.options[key];
+ },
+ _setData: function(key, value) {
+ this.options[key] = value;
+
+ if (key == 'disabled') {
+ this.element
+ [value ? 'addClass' : 'removeClass'](
+ this.widgetBaseClass + '-disabled' + ' ' +
+ this.namespace + '-state-disabled')
+ .attr("aria-disabled", value);
+ }
+ },
+
+ enable: function() {
+ this._setData('disabled', false);
+ },
+ disable: function() {
+ this._setData('disabled', true);
+ },
+
+ _trigger: function(type, event, data) {
+ var callback = this.options[type],
+ eventName = (type == this.widgetEventPrefix
+ ? type : this.widgetEventPrefix + type);
+
+ event = $.Event(event);
+ event.type = eventName;
+
+ // copy original event properties over to the new event
+ // this would happen if we could call $.event.fix instead of $.Event
+ // but we don't have a way to force an event to be fixed multiple times
+ if (event.originalEvent) {
+ for (var i = $.event.props.length, prop; i;) {
+ prop = $.event.props[--i];
+ event[prop] = event.originalEvent[prop];
+ }
+ }
+
+ this.element.trigger(event, data);
+
+ return !($.isFunction(callback) && callback.call(this.element[0], event, data) === false
+ || event.isDefaultPrevented());
+ }
+};
+
+$.widget.defaults = {
+ disabled: false
+};
+
+
+/** Mouse Interaction Plugin **/
+
+$.ui.mouse = {
+ _mouseInit: function() {
+ var self = this;
+
+ this.element
+ .bind('mousedown.'+this.widgetName, function(event) {
+ return self._mouseDown(event);
+ })
+ .bind('click.'+this.widgetName, function(event) {
+ if(self._preventClickEvent) {
+ self._preventClickEvent = false;
+ event.stopImmediatePropagation();
+ return false;
+ }
+ });
+
+ // Prevent text selection in IE
+ if ($.browser.msie) {
+ this._mouseUnselectable = this.element.attr('unselectable');
+ this.element.attr('unselectable', 'on');
+ }
+
+ this.started = false;
+ },
+
+ // TODO: make sure destroying one instance of mouse doesn't mess with
+ // other instances of mouse
+ _mouseDestroy: function() {
+ this.element.unbind('.'+this.widgetName);
+
+ // Restore text selection in IE
+ ($.browser.msie
+ && this.element.attr('unselectable', this._mouseUnselectable));
+ },
+
+ _mouseDown: function(event) {
+ // don't let more than one widget handle mouseStart
+ // TODO: figure out why we have to use originalEvent
+ event.originalEvent = event.originalEvent || {};
+ if (event.originalEvent.mouseHandled) { return; }
+
+ // we may have missed mouseup (out of window)
+ (this._mouseStarted && this._mouseUp(event));
+
+ this._mouseDownEvent = event;
+
+ var self = this,
+ btnIsLeft = (event.which == 1),
+ elIsCancel = (typeof this.options.cancel == "string" ? $(event.target).parents().add(event.target).filter(this.options.cancel).length : false);
+ if (!btnIsLeft || elIsCancel || !this._mouseCapture(event)) {
+ return true;
+ }
+
+ this.mouseDelayMet = !this.options.delay;
+ if (!this.mouseDelayMet) {
+ this._mouseDelayTimer = setTimeout(function() {
+ self.mouseDelayMet = true;
+ }, this.options.delay);
+ }
+
+ if (this._mouseDistanceMet(event) && this._mouseDelayMet(event)) {
+ this._mouseStarted = (this._mouseStart(event) !== false);
+ if (!this._mouseStarted) {
+ event.preventDefault();
+ return true;
+ }
+ }
+
+ // these delegates are required to keep context
+ this._mouseMoveDelegate = function(event) {
+ return self._mouseMove(event);
+ };
+ this._mouseUpDelegate = function(event) {
+ return self._mouseUp(event);
+ };
+ $(document)
+ .bind('mousemove.'+this.widgetName, this._mouseMoveDelegate)
+ .bind('mouseup.'+this.widgetName, this._mouseUpDelegate);
+
+ // preventDefault() is used to prevent the selection of text here -
+ // however, in Safari, this causes select boxes not to be selectable
+ // anymore, so this fix is needed
+ ($.browser.safari || event.preventDefault());
+
+ event.originalEvent.mouseHandled = true;
+ return true;
+ },
+
+ _mouseMove: function(event) {
+ // IE mouseup check - mouseup happened when mouse was out of window
+ if ($.browser.msie && !event.button) {
+ return this._mouseUp(event);
+ }
+
+ if (this._mouseStarted) {
+ this._mouseDrag(event);
+ return event.preventDefault();
+ }
+
+ if (this._mouseDistanceMet(event) && this._mouseDelayMet(event)) {
+ this._mouseStarted =
+ (this._mouseStart(this._mouseDownEvent, event) !== false);
+ (this._mouseStarted ? this._mouseDrag(event) : this._mouseUp(event));
+ }
+
+ return !this._mouseStarted;
+ },
+
+ _mouseUp: function(event) {
+ $(document)
+ .unbind('mousemove.'+this.widgetName, this._mouseMoveDelegate)
+ .unbind('mouseup.'+this.widgetName, this._mouseUpDelegate);
+
+ if (this._mouseStarted) {
+ this._mouseStarted = false;
+ this._preventClickEvent = (event.target == this._mouseDownEvent.target);
+ this._mouseStop(event);
+ }
+
+ return false;
+ },
+
+ _mouseDistanceMet: function(event) {
+ return (Math.max(
+ Math.abs(this._mouseDownEvent.pageX - event.pageX),
+ Math.abs(this._mouseDownEvent.pageY - event.pageY)
+ ) >= this.options.distance
+ );
+ },
+
+ _mouseDelayMet: function(event) {
+ return this.mouseDelayMet;
+ },
+
+ // These are placeholder methods, to be overriden by extending plugin
+ _mouseStart: function(event) {},
+ _mouseDrag: function(event) {},
+ _mouseStop: function(event) {},
+ _mouseCapture: function(event) { return true; }
+};
+
+$.ui.mouse.defaults = {
+ cancel: null,
+ distance: 1,
+ delay: 0
+};
+
+})(jQuery);
diff --git a/bug/bug/jquery-validation-1.8.1/demo/multipart/style.css b/bug/bug/jquery-validation-1.8.1/demo/multipart/style.css
new file mode 100644
index 0000000..fbf08c2
--- /dev/null
+++ b/bug/bug/jquery-validation-1.8.1/demo/multipart/style.css
@@ -0,0 +1,705 @@
+/********************************************
+ AUTHOR: Erwin Aligam
+ WEBSITE: http://www.styleshout.com/
+ TEMPLATE NAME: Techmania 1.0
+ TEMPLATE CODE: S-0003
+ VERSION: 1.1
+ *******************************************/
+ /********************************************
+ HTML ELEMENTS
+********************************************/ /* Top elements */
+ /** { margin:0; padding: 0; }*/
+body {
+ background-color: #000;
+ color: #555;
+ font: 78%/ 1.6 Verdana, 'Trebuchet MS', arial, sans-serif;
+ text-align: center;
+ margin: 15px 0;
+}
+
+/* links */
+a {
+ color: #213540;
+ background: inherit;
+ text-decoration: none;
+}
+
+a:hover {
+ color: #3e4255;
+ text-decoration: underline;
+ background: inherit;
+}
+
+/* headers */
+h1,h2,h3 {
+ font-family: 'Trebuchet MS', Arial, sans-serif;
+ font-weight: bold;
+}
+
+h1 {
+ font-size: 1.5em;
+ margin: 10px 15px;
+}
+
+h2 {
+ font-size: 1.3em;
+ text-transform: uppercase;
+ color: #339900;
+ margin: 10px 15px;
+}
+
+h3 {
+ font-size: 1.1em;
+ color: #333;
+ margin: 16px 0 0 18px;
+}
+
+h1,h2,h3 {
+ padding: 0;
+}
+
+p {
+ line-height: 1.4em;
+ padding: 0 15px;
+}
+
+p.error {
+ color: #CC0033;
+}
+
+ul,ol {
+ margin: 10px 6px;
+ padding: 0 15px;
+ color: #006699;
+}
+
+ul span,ol span {
+ color: #666666;
+}
+
+/* images */
+img {
+ border: 2px solid #CCC;
+}
+
+img.float-right {
+ margin: 5px 0px 10px 10px;
+}
+
+img.float-left {
+ margin: 5px 10px 10px 0px;
+}
+
+code {
+ margin: 5px 0;
+ padding: 10px;
+ text-align: left;
+ display: block;
+ overflow: auto;
+ font: 500 1em/ 1.5em 'Lucida Console', 'courier new', monospace;
+ /* white-space: pre; */
+ background: #FAFAFA;
+ border: 1px solid #EAEAEA;
+ border-left: 5px solid #72A545;
+}
+
+acronym {
+ cursor: help;
+ border-bottom: 1px solid #777;
+}
+
+blockquote {
+ margin: 15px;
+ padding: 0 0 0 32px;
+ background: #FAFAFA url(quote.gif) no-repeat 5px 10px !important;
+ background-position: 8px 10px;
+ border: 1px solid #EAEAEA;
+ border-left: 5px solid #72A545;
+ font-weight: bold;
+}
+
+/* form elements */
+fieldset {
+ margin: 12px 12px 18px;
+ padding-left: 6px;
+ border: 1px solid #004080;
+ color: #006699;
+}
+
+fieldset fieldset {
+ border: 1px solid #9ea190;
+ margin: 17px 14px;
+}
+
+form {
+ margin: 10px 15px;
+ padding: 0;
+}
+
+label {
+ font-weight: bold;
+ margin: 5px 3px 0 0;
+ width: 160px;
+ text-align: right;
+ float: left;
+}
+
+legend {
+ font-size: 1.2em;
+ padding: 0 12px;
+ font-weight: 900;
+ background-color: #F9F9F9;
+}
+
+fieldset fieldset legend {
+ font-size: 1em;
+ color: #1a2129;
+ padding: 0 18px;
+ margin-left: 75px;
+}
+
+input {
+ padding: 3px;
+ margin: 4px 0;
+ border: 1px solid #CFCED3;
+ font: normal 1em Verdana, sans-serif;
+ color: #777;
+}
+
+textarea {
+ width: 400px;
+ padding: 4px;
+ font: normal 1em Verdana, sans-serif;
+ border: 1px solid #eee;
+ height: 100px;
+ display: block;
+ color: #777;
+}
+
+input.button {
+ margin: 0;
+ font: bold 12px Arial, Sans-serif;
+ border: 1px solid #EAEAEA;
+ padding: 3px 4px;
+ background: #CCC url(buttonbg.gif) repeat-x left bottom;
+ color: #333; /* color: #339900; */
+ cursor: pointer;
+}
+
+input.submitbutton {
+ background-color: #006699;
+ color: #FFF;
+ background-image: none;
+ font-weight: 900;
+ border: 1px solid #EAEAEA;
+ margin: 0 0 0 200px;
+}
+
+/* search */
+#sidebar #search {
+ background: #f2f2f2;
+ margin: 0 15px;
+ padding: 5px 0;
+}
+
+#sidebar #search img {
+ vertical-align: bottom;
+}
+
+#sidebar #search .textbox {
+ background: #FFF url(input.png) no-repeat top left;
+ border: 1px solid #EAEAEA;
+ font-size: 11px;
+ padding: 3px;
+ width: 110px;
+}
+
+#sidebar #search input.searchbutton {
+ margin: 0;
+ font: bold 100% Arial, Sans-serif;
+ border: 1px solid #CCC;
+ background: #CCC url(buttonbg.gif) repeat-x left bottom;
+ padding: 1px;
+ height: 25px;
+ color: #333;
+ width: 55px;
+}
+
+/*****************************
+ LAYOUT
+******************************/
+#wrap {
+ margin: 0 auto;
+ padding: 0;
+ text-align: left;
+ background-color: #FFF;
+ width: 790px;
+}
+
+#content-wrap {
+ clear: both;
+ margin: 0;
+ padding: 0;
+ width: 790px;
+}
+
+/* header */
+#header {
+ position: relative;
+ clear: left;
+ width: 790px;
+ height: 137px;
+ margin: 0;
+ padding: 0;
+ background: #000 url(headerbg.jpg) no-repeat left bottom;
+}
+
+#header h1#logo-text {
+ float: right;
+ margin: 39px 58px 0 0;
+ padding: 0;
+ font: bolder 3.2em 'Trebuchet MS', Arial, Sans-serif;
+ letter-spacing: -2px;
+ color: #FFF;
+ text-transform: none;
+ /* change the values of top and right to adjust the position of the logo*/
+ top: 35px;
+ right: 30px;
+}
+
+#header h2#slogan {
+ float: right;
+ margin: 0 38px 0 0;
+ padding: 0;
+ font: bold 1.5em 'Trebuchet MS', Arial, Sans-serif;
+ text-transform: none;
+ letter-spacing: 1px;
+ color: #FFF;
+ clear: both;
+ text-align: right;
+}
+
+#header h1#logo-text span {
+ color: #CFCED3;
+}
+
+/* menu tabs */
+#header #header-tabs {
+ position: absolute;
+ top: 0;
+ left: 0;
+ width: 100%;
+ height: 25px;
+ background: #000;
+ font: bold 1.1em Verdana, Tahoma, 'Trebuchet MS', Sans-serif;
+}
+
+#header-tabs ul {
+ margin: 0;
+ padding: 2px 0px 0px 0px;
+ list-style: none;
+}
+
+#header-tabs li {
+ display: inline;
+ margin: 0;
+ padding: 0;
+}
+
+#header-tabs a {
+ float: left;
+ background: url(tableft.gif) no-repeat left top;
+ margin: 0;
+ padding: 0 0 0 4px;
+ text-decoration: none;
+}
+
+#header-tabs a span {
+ float: left;
+ display: block;
+ background: url(tabright.gif) no-repeat right top;
+ padding: 7px 15px 4px 8px;
+ color: #CCC;
+}
+
+/* Commented Backslash Hack hides rule from IE5-Mac \*/
+#header-tabs a span {
+ float: none;
+}
+
+/* End IE5-Mac hack */
+#header-tabs a:hover span {
+ color: #FFF;
+}
+
+#header-tabs a:hover {
+ background-position: 0% -42px;
+}
+
+#header-tabs a:hover span {
+ background-position: 100% -42px;
+}
+
+#header-tabs #current a {
+ background-position: 0% -42px;
+}
+
+#header-tabs #current a span {
+ background-position: 100% -42px;
+ color: #FFF;
+}
+
+/* main content */
+#main {
+ width: 748px;
+ margin: 0;
+ padding: 8px 16px;
+ background-color: #F9F9F9;
+ border-left: 5px solid #000;
+ border-right: 5px solid #000;
+}
+
+#main h1 {
+ padding: 8px 0 3px 25px;
+ text-transform: none;
+ border-bottom: 2px solid #f2f2f2;
+ color: #339900;
+}
+
+/* sidebar */
+#sidebar { /* float: right;
+ width: 245px;
+ margin: 0 0 10px 0; padding: 0;
+ background-color: inherit; */
+ display: none;
+}
+
+#sidebar h1 {
+ padding: 8px 0px 3px 25px;
+ background: url(square_arrow.gif) no-repeat 0% .7em;
+ text-transform: none;
+ color: #339900;
+}
+
+#sidebar ul.sidemenu {
+ list-style: none;
+ margin: 10px 15px;
+ padding: 0;
+}
+
+#sidebar ul.sidemenu li {
+ margin-bottom: 1px;
+ border: 1px solid #f2f2f2;
+}
+
+#sidebar ul.sidemenu a {
+ display: block;
+ font-weight: bold;
+ color: #333;
+ text-decoration: none;
+ padding: 2px 5px 2px 10px;
+ background: #f2f2f2;
+ border-left: 5px solid #CCC;
+ min-height: 18px;
+}
+
+* html body #sidebar ul.sidemenu a {
+ height: 18px;
+}
+
+#sidebar ul.sidemenu a:hover {
+ padding: 2px 5px 2px 10px;
+ background: #f2f2f2;
+ color: #339900;
+ border-left: 5px solid #72A545;
+}
+
+/* footer */
+#footer {
+ clear: both;
+ height: 40px;
+ color: #CCC;
+ background: #000;
+ margin: 0;
+ font-size: 92%;
+}
+
+#footer a {
+ text-decoration: none;
+ font-weight: bold;
+ color: #FFF;
+}
+
+#footer #footer-left {
+ width: 68%;
+ float: left;
+ text-align: left;
+ margin: 0;
+ padding: 10px;
+}
+
+#footer #footer-right {
+ width: 25%;
+ float: right;
+ text-align: right;
+ margin: 0;
+ padding: 10px;
+}
+
+/* alignment classes */
+.float-left {
+ float: left;
+}
+
+.float-right {
+ float: right;
+}
+
+.align-left {
+ text-align: left;
+}
+
+.align-right {
+ text-align: right;
+}
+
+/* additional classes */
+.clear {
+ clear: both;
+}
+
+.hide {
+ display: none;
+}
+
+.gray {
+ color: #CCC;
+}
+
+.comments {
+ color: #333;
+ background: #FFF;
+ text-align: right;
+ border-top: 1px dashed #EFF0F1;
+ border-bottom: 1px dashed #EFF0F1;
+ padding: 5px 0;
+ margin-top: 20px;
+}
+
+html {
+ min-height: 100.1%;
+}
+
+/* ------ one ------------*/
+body .mainText {
+ font-family: Arial, Helvetica, sans-serif;
+ font-size: 12px;
+}
+
+#demoText h1,.mainText h1 {
+ font-size: 130%;
+ color: #0099FF;
+ text-decoration: none;
+ font-family: Arial, Helvetica, sans-serif;
+ margin: 5px 4px 5px 24px;
+ background: none;
+ padding: 0;
+ border: none;
+ text-transform: capitalize;
+}
+
+.mainText h2 {
+ font-size: 110%;
+ color: #000033;
+ font-family: Arial, Helvetica, sans-serif;
+ text-decoration: none;
+ background: none;
+ margin: 4px 32px 6px 22px;
+ text-transform: capitalize;
+}
+
+.mainText h3 {
+ font-size: 120%;
+ font-weight: 900;
+ margin: 14px 0 0 0;
+ text-align: center;
+ color: #000033;
+}
+
+.mainText table {
+ width: 95%;
+ border: 1px solid #0099FF;
+ border-collapse: collapse;
+ margin: 18px 7px;
+}
+
+.mainText table td {
+ background-color: #99CCFF;
+ color: #000033;
+ padding: 4px;
+}
+
+.mainText table th {
+ background-color: #000033;
+ color: #99CCFF;
+ padding: 4px;
+}
+
+.mainText .linkPar a {
+ color: #000033;
+ text-decoration: underline;
+}
+
+.mainText .linkPar a:hover {
+ color: #660033;
+ text-decoration: none;
+ font-weight: 900;
+}
+
+.pusher {
+ cursor: pointer;
+ padding: 3px 10px 3px 22px;
+ font-weight: 900;
+ font-size: 14px;
+}
+
+/* ------------- form specific styles are here -------------- */
+fieldset {
+ margin: 0;
+ border: 1px solid #C3DE00;
+ padding: 10px;
+ /*border:none;
+padding:0;*/
+ color: #7563A5;
+}
+
+legend {
+ background-color: #FFFFFF;
+ text-align: center;
+ color: #097981;
+ padding: 0 12px;
+}
+
+label {
+ text-align: right;
+ width: 298px;
+ border-right: 1px dotted #099;
+ padding-right: 5px;
+ margin: 0 0 8px 0;
+ float: left;
+ clear: left;
+ display: block;
+ color: #7563A5;
+}
+
+label.checkbox,label.textarea {
+ border: none;
+}
+
+label.lgfield {
+ border: none;
+ text-align: center;
+ clear: both;
+ float: none;
+ width: 100%;
+}
+
+fieldset input,fieldset select,fieldset textarea {
+ margin-left: 10px;
+ margin-bottom: 8px;
+}
+
+select.longfield {
+ margin: 0 0 0 115px;
+}
+
+input [type="radio"],input [type="checkbox"] {
+ margin: 2px 0 0 4px;
+}
+
+textarea {
+ width: 250px;
+ float: left;
+}
+
+/*Get Help Form Styles*/
+p.formDisclaimer {
+ text-align: center;
+ margin: 32px 24px 12px 0;
+ font-style: italic;
+}
+
+div.buttonWrapper {
+ margin: 28px 0 14px 0;
+ clear: both;
+ text-align: center;
+}
+
+.formspacer {
+ height: 1em;
+ clear: both;
+}
+
+.hideField {
+ display: none;
+}
+
+.pushOpen {
+ height: 18em;
+}
+
+/* ----- error message for field validation ----- */
+#stepForm label.warning {
+ text-align: left;
+ width: auto;
+ padding: 0;
+ margin: 0 0 0 10px;
+ float: none;
+ clear: none;
+ display: inline;
+ color: #CC3366;
+ font-size: 10px;
+ border: none;
+ border-top: 1px dotted #CC3366;
+}
+
+div.requiredNotice {
+ width: 140px;
+ float: right;
+ margin: 0 24px 0 0;
+ padding: 0;
+}
+
+h3.stepHeader {
+ text-align: left;
+ font-size: 16px;
+ font-weight: bold;
+ margin: 0 0 24px 24px;
+ color: #676cac;
+}
+
+ul#stepForm,ul#stepForm li {
+ margin: 0;
+ padding: 0;
+}
+
+ul#stepForm li {
+ list-style: none;
+}
+
+/* Form Buttons */
+input.submitbutton,.nextbutton,.prevbutton {
+ width: 100px;
+ height: 40px;
+ background-color: #663399;
+ padding: 4px;
+ border: 1px solid #339933;
+ cursor: pointer;
+ text-align: center;
+ color: #FFFFFF;
+ margin: 7px;
+}
+
+input.submitbutton {
+ background-color: #006699;
+} \ No newline at end of file
diff --git a/bug/bug/jquery-validation-1.8.1/demo/radio-checkbox-select-demo.html b/bug/bug/jquery-validation-1.8.1/demo/radio-checkbox-select-demo.html
new file mode 100644
index 0000000..12c417c
--- /dev/null
+++ b/bug/bug/jquery-validation-1.8.1/demo/radio-checkbox-select-demo.html
@@ -0,0 +1,155 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+<title>Test for jQuery validate() plugin</title>
+
+<link rel="stylesheet" type="text/css" media="screen" href="css/screen.css" />
+
+<script src="../lib/jquery.js" type="text/javascript"></script>
+<script src="../lib/jquery.metadata.js" type="text/javascript"></script>
+<script src="../jquery.validate.js" type="text/javascript"></script>
+
+<script type="text/javascript">
+// only for demo purposes
+$.validator.setDefaults({
+ submitHandler: function() {
+ alert("submitted!");
+ }
+});
+
+$.metadata.setType("attr", "validate");
+
+$(document).ready(function() {
+ $("#form1").validate();
+ $("#selecttest").validate();
+});
+</script>
+
+<style type="text/css">
+.block { display: block; }
+form.cmxform label.error { display: none; }
+</style>
+
+</head>
+<body>
+
+<h1 id="banner"><a href="http://bassistance.de/jquery-plugins/jquery-plugin-validation/">jQuery Validation Plugin</a> Demo</h1>
+<div id="main">
+
+<form class="cmxform" id="form1" method="get" action="">
+ <fieldset>
+ <legend>Validating a form with a radio and checkbox buttons</legend>
+ <fieldset>
+ <legend>Gender</legend>
+ <label for="gender_male">
+ <input type="radio" id="gender_male" value="m" name="gender" validate="required:true" />
+ Male
+ </label>
+ <label for="gender_female">
+ <input type="radio" id="gender_female" value="f" name="gender"/>
+ Female
+ </label>
+ <label for="gender" class="error">Please select your gender</label>
+ </fieldset>
+ <fieldset>
+ <legend>Family</legend>
+ <label for="family_single">
+ <input type="radio" id="family_single" value="s" name="family" validate="required:true" />
+ Single
+ </label>
+ <label for="family_married">
+ <input type="radio" id="family_married" value="m" name="family" />
+ Married
+ </label>
+ <label for="family_other">
+ <input type="radio" id="family_other" value="o" name="family" />
+ Other
+ </label>
+ <label for="family" class="error">Please select your family status.</label>
+ </fieldset>
+ <p>
+ <label for="agree">Please agree to our policy</label>
+ <input type="checkbox" class="checkbox" id="agree" name="agree" validate="required:true" />
+ <br/>
+ <label for="agree" class="error block">Please agree to our policy!</label>
+ </p>
+ <fieldset>
+ <legend>Spam</legend>
+ <label for="spam_email">
+ <input type="checkbox" class="checkbox" id="spam_email" value="email" name="spam[]" validate="required:true, minlength:2" />
+ Spam via E-Mail
+ </label>
+ <label for="spam_phone">
+ <input type="checkbox" class="checkbox" id="spam_phone" value="phone" name="spam[]" />
+ Spam via Phone
+ </label>
+ <label for="spam_mail">
+ <input type="checkbox" class="checkbox" id="spam_mail" value="mail" name="spam[]" />
+ Spam via Mail
+ </label>
+ <label for="spam[]" class="error">Please select at least two types of spam.</label>
+ </fieldset>
+ <p>
+ <input class="submit" type="submit" value="Submit"/>
+ </p>
+ </fieldset>
+</form>
+
+<form id="selecttest">
+ <h2>Some tests with selects</h2>
+ <p>
+ <label for="jungle">Please select a jungle noun</label><br/>
+ <select id="jungle" name="jungle" title="Please select something!" validate="required:true">
+ <option value=""></option>
+ <option value="1">Buga</option>
+ <option value="2">Baga</option>
+ <option value="3">Oi</option>
+ </select>
+ </p>
+
+ <p>
+ <label for="fruit">Please select at least two fruits</label><br/>
+ <select id="fruit" name="fruit" title="Please select at least two fruits" validate="required:true, minlength:2" multiple="multiple">
+ <option value="b">Banana</option>
+ <option value="a">Apple</option>
+ <option value="p">Peach</option>
+ <option value="t">Turtle</option>
+ </select>
+ </p>
+
+ <p>
+ <label for="vegetables">Please select no more than two vergetables</label><br/>
+ <select id="vegetables" name="vegetables" title="Please select no more than two vergetables" validate="required:true, maxlength:2" multiple="multiple">
+ <option value="p">Potato</option>
+ <option value="t">Tomato</option>
+ <option value="s">Salad</option>
+ </select>
+ </p>
+
+ <p>
+ <label for="cars">Please select at least two cars, but no more than three</label><br/>
+ <select id="cars" name="cars" title="Please select at least two cars, but no more than three" validate="required:true, rangelength:[2,3]" multiple="multiple">
+ <option value="m_sl">Mercedes SL</option>
+ <option value="o_c">Opel Corsa</option>
+ <option value="vw_p">VW Polo</option>
+ <option value="t_s">Titanic Skoda</option>
+ </select>
+ </p>
+
+ <p><input type="submit" value="Validate Selecttests"/></p>
+</form>
+
+<a href="index.html">Back to main page</a>
+
+</div>
+
+<script src="http://www.google-analytics.com/urchin.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+_uacct = "UA-2623402-1";
+urchinTracker();
+</script>
+</body>
+</html> \ No newline at end of file
diff --git a/bug/bug/jquery-validation-1.8.1/demo/tabs/index.html b/bug/bug/jquery-validation-1.8.1/demo/tabs/index.html
new file mode 100644
index 0000000..8a9f69c
--- /dev/null
+++ b/bug/bug/jquery-validation-1.8.1/demo/tabs/index.html
@@ -0,0 +1,157 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+<title>jQuery UI tabs integration demo</title>
+
+<link rel="stylesheet" type="text/css" media="screen" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.7.1/themes/base/jquery-ui.css" />
+
+<script src="../../lib/jquery.js" type="text/javascript"></script>
+<script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.7.1/jquery-ui.min.js" type="text/javascript"></script>
+<script src="../../jquery.validate.js" type="text/javascript"></script>
+
+<script id="demo" type="text/javascript">
+$(document).ready(function() {
+ var tabs = $("#tabs").tabs();
+ var validator = $("#signupform").validate({
+ groups: {
+ birthdate: "birthdateDay birthdateMonth birthdateYear"
+ },
+ errorPlacement: function(label, element) {
+ if (/^birthdate/.test(element[0].name)) {
+ label.insertAfter("#birthdateYear");
+ } else {
+ label.insertAfter(element);
+ }
+ }
+ });
+
+ // validate the other two selects when one changes to update the whole group
+ var birthdaySelects = $("#birthdateGroup select").click(function() {
+ birthdaySelects.not(this).valid();
+ })
+
+ // overwrite focusInvalid to activate tab with invalid elements
+ validator.focusInvalid = function() {
+ if( this.settings.focusInvalid ) {
+ try {
+ var focused = $(this.findLastActive() || this.errorList.length && this.errorList[0].element || []).filter(":visible");
+ tabs.tabs("select", tabs.find(">div").index(focused.parent().parent()));
+ focused.focus();
+ } catch(e) {
+ // ignore IE throwing errors when focusing hidden elements
+ }
+ }
+ };
+});
+</script>
+
+<style>
+ body { font-size: 65.2% }
+ label { display: inline-block; width: 8em; }
+ label.error { color: red; margin-left: 0.5em; width: 20em; }
+</style>
+
+</head>
+<body>
+
+<form id="signupform">
+
+ <div id="tabs">
+ <ul>
+ <li><a href="#logindata">Login data</a></li>
+ <li><a href="#personaldata">Personal data</a></li>
+ <li><a href="#subscriptions">Subscriptions</a></li>
+ </ul>
+ <div id="logindata">
+ <p>
+ <label for="username">Username</label>
+ <input id="username" name="username" class="required" minlength="3" maxlength="20" type="text" />
+ </p>
+ <p>
+ <label for="email">Email address</label>
+ <input id="email" name="email" class="required email" type="text" />
+ </p>
+ <p>
+ <label for="password">Password</label>
+ <input name="password" type="password" class="required" id="password" minlength="4" maxlength="50" />
+ </p>
+ <p>
+ <label for="confirmpassword">Confirm Password</label>
+ <input name="confirmpassword" type="password" class="required" equalTo="#password" id="confirmpassword" />
+ </p>
+ </div>
+ <div id="personaldata">
+ <p>
+ <label for="street">Street</label>
+ <input id="street" name="street" class="required" minlength="3" maxlength="50" type="text" />
+ </p>
+ <p>
+ <label for="city">City</label>
+ <input id="city" name="city" class="required" minlength="3" maxlength="50" type="text" />
+ </p>
+ <p id="birthdateGroup">
+ <label for="birthdateDay">Birthdate</label>
+ <select id="birthdateDay" name="birthdateDay" class="required">
+ <option value="">Day</option>
+ <option>1</option>
+ <option>2</option>
+ <option>3</option>
+ <option>...</option>
+ </select>
+ <select id="birthdateMonth" name="birthdateMonth" class="required">
+ <option value="">Month</option>
+ <option>1</option>
+ <option>2</option>
+ <option>3</option>
+ <option>4</option>
+ <option>5</option>
+ <option>6</option>
+ <option>7</option>
+ <option>8</option>
+ <option>9</option>
+ <option>10</option>
+ <option>11</option>
+ <option>12</option>
+ </select>
+ <select id="birthdateYear" name="birthdateYear" class="required">
+ <option value="">Year</option>
+ <option>1950</option>
+ <option>1951</option>
+ <option>1952</option>
+ <option>1953</option>
+ <option>1954</option>
+ <option>1955</option>
+ <option>...</option>
+ </select>
+ </p>
+ </div>
+ <div id="subscriptions">
+ <p>
+ <label for="weekly">Weekly Newsletter</label>
+ <input id="weekly" name="weekly" type="checkbox" />
+ </p>
+ <p>
+ <label for="updates">Product Updates</label>
+ <input id="updates" name="updates" type="checkbox" />
+ </p>
+ <p>
+ <label for="terms">Terms and conditions</label>
+ <input id="terms" name="terms" class="required" type="checkbox" />
+ </p>
+ </div>
+ </div>
+
+ <input type="submit" />
+</form>
+
+
+<script src="http://www.google-analytics.com/urchin.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+_uacct = "UA-2623402-1";
+urchinTracker();
+</script>
+
+</body>
+</html> \ No newline at end of file
diff --git a/bug/bug/jquery-validation-1.8.1/demo/themerollered.html b/bug/bug/jquery-validation-1.8.1/demo/themerollered.html
new file mode 100644
index 0000000..445a22b
--- /dev/null
+++ b/bug/bug/jquery-validation-1.8.1/demo/themerollered.html
@@ -0,0 +1,227 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+<title>jQuery validation plug-in - main demo</title>
+
+<link rel="stylesheet" type="text/css" media="screen" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.7.2/themes/cupertino/jquery-ui.css" />
+<link rel="stylesheet" type="text/css" media="screen" href="http://jquery-ui.googlecode.com/svn/branches/dev/themes/base/ui.button.css" />
+
+<script src="../lib/jquery.js" type="text/javascript"></script>
+<script src="../jquery.validate.js" type="text/javascript"></script>
+
+<script src="http://jquery-ui.googlecode.com/svn/tags/latest/ui/jquery.ui.core.js" type="text/javascript"></script>
+<script src="http://jquery-ui.googlecode.com/svn/tags/latest/ui/jquery.ui.widget.js" type="text/javascript"></script>
+<script src="http://jquery-ui.googlecode.com/svn/tags/latest/ui/jquery.ui.button.js" type="text/javascript"></script>
+
+<script type="text/javascript" src="http://jqueryui.com/themeroller/themeswitchertool/"></script>
+
+<script type="text/javascript">
+$.validator.setDefaults({
+ submitHandler: function() { alert("submitted!"); },
+ highlight: function(input) {
+ $(input).addClass("ui-state-highlight");
+ },
+ unhighlight: function(input) {
+ $(input).removeClass("ui-state-highlight");
+ }
+});
+
+$().ready(function() {
+ $.fn.themeswitcher && $('<div/>').css({
+ position: "absolute",
+ right: 10,
+ top: 10
+ }).appendTo(document.body).themeswitcher();
+
+ // validate the comment form when it is submitted
+ $("#commentForm").validate();
+
+ // validate signup form on keyup and submit
+ $("#signupForm").validate({
+ rules: {
+ firstname: "required",
+ lastname: "required",
+ username: {
+ required: true,
+ minlength: 2
+ },
+ password: {
+ required: true,
+ minlength: 5
+ },
+ confirm_password: {
+ required: true,
+ minlength: 5,
+ equalTo: "#password"
+ },
+ email: {
+ required: true,
+ email: true
+ },
+ topic: {
+ required: "#newsletter:checked",
+ minlength: 2
+ },
+ agree: "required"
+ },
+ messages: {
+ firstname: "Please enter your firstname",
+ lastname: "Please enter your lastname",
+ username: {
+ required: "Please enter a username",
+ minlength: "Your username must consist of at least 2 characters"
+ },
+ password: {
+ required: "Please provide a password",
+ minlength: "Your password must be at least 5 characters long"
+ },
+ confirm_password: {
+ required: "Please provide a password",
+ minlength: "Your password must be at least 5 characters long",
+ equalTo: "Please enter the same password as above"
+ },
+ email: "Please enter a valid email address",
+ agree: "Please accept our policy"
+ }
+ });
+
+ // propose username by combining first- and lastname
+ $("#username").focus(function() {
+ var firstname = $("#firstname").val();
+ var lastname = $("#lastname").val();
+ if(firstname && lastname && !this.value) {
+ this.value = firstname + "." + lastname;
+ }
+ });
+
+ //code to hide topic selection, disable for demo
+ var newsletter = $("#newsletter");
+ // newsletter topics are optional, hide at first
+ var inital = newsletter.is(":checked");
+ var topics = $("#newsletter_topics")[inital ? "removeClass" : "addClass"]("gray");
+ var topicInputs = topics.find("input").attr("disabled", !inital);
+ // show when newsletter is checked
+ newsletter.click(function() {
+ topics[this.checked ? "removeClass" : "addClass"]("gray");
+ topicInputs.attr("disabled", !this.checked);
+ });
+
+ $("#signupForm input:not(:submit)").addClass("ui-widget-content");
+
+ $(":submit").button();
+});
+</script>
+
+<style type="text/css">
+body { font-size: 62.5%; }
+label { display: inline-block; width: 100px; }
+legend { padding: 0.5em; }
+fieldset fieldset label { display: block; }
+#commentForm { width: 500px; }
+#commentForm label { width: 250px; }
+#commentForm label.error, #commentForm button.submit { margin-left: 253px; }
+#signupForm { width: 670px; }
+#signupForm label.error {
+ margin-left: 10px;
+ width: auto;
+ display: inline;
+}
+#newsletter_topics label.error {
+ display: none;
+ margin-left: 103px;
+}
+</style>
+
+</head>
+<body>
+
+<form class="cmxform" id="commentForm" method="get" action="">
+ <fieldset class="ui-widget ui-widget-content ui-corner-all">
+ <legend class="ui-widget ui-widget-header ui-corner-all">Please provide your name, email address (won't be published) and a comment</legend>
+ <p>
+ <label for="cname">Name (required, at least 2 characters)</label>
+ <input id="cname" name="name" class="required ui-widget-content" minlength="2" />
+ <p>
+ <label for="cemail">E-Mail (required)</label>
+ <input id="cemail" name="email" class="required email ui-widget-content" />
+ </p>
+ <p>
+ <label for="curl">URL (optional)</label>
+ <input id="curl" name="url" class="url ui-widget-content" value="" />
+ </p>
+ <p>
+ <label for="ccomment">Your comment (required)</label>
+ <textarea id="ccomment" name="comment" class="required ui-widget-content"></textarea>
+ </p>
+ <p>
+ <button class="submit" type="submit">Submit</button>
+ </p>
+ </fieldset>
+</form>
+
+<form class="cmxform" id="signupForm" method="get" action="">
+ <fieldset class="ui-widget ui-widget-content ui-corner-all">
+ <legend class="ui-widget ui-widget-header ui-corner-all">Validating a complete form</legend>
+ <p>
+ <label for="firstname">Firstname</label>
+ <input id="firstname" name="firstname" />
+ </p>
+ <p>
+ <label for="lastname">Lastname</label>
+ <input id="lastname" name="lastname" />
+ </p>
+ <p>
+ <label for="username">Username</label>
+ <input id="username" name="username" />
+ </p>
+ <p>
+ <label for="password">Password</label>
+ <input id="password" name="password" type="password" />
+ </p>
+ <p>
+ <label for="confirm_password">Confirm password</label>
+ <input id="confirm_password" name="confirm_password" type="password" />
+ </p>
+ <p>
+ <label for="email">Email</label>
+ <input id="email" name="email" />
+ </p>
+ <p>
+ <label for="agree">Please agree to our policy</label>
+ <input type="checkbox" class="checkbox" id="agree" name="agree" />
+ </p>
+ <p>
+ <label for="newsletter">I'd like to receive the newsletter</label>
+ <input type="checkbox" class="checkbox" id="newsletter" name="newsletter" />
+ </p>
+ <fieldset id="newsletter_topics" class="ui-widget-content ui-corner-all">
+ <legend class="ui-widget-header ui-corner-all">Topics (select at least two) - note: would be hidden when newsletter isn't selected, but is visible here for the demo</legend>
+ <label for="topic_marketflash">
+ <input type="checkbox" id="topic_marketflash" value="marketflash" name="topic" />
+ Marketflash
+ </label>
+ <label for="topic_fuzz">
+ <input type="checkbox" id="topic_fuzz" value="fuzz" name="topic" />
+ Latest fuzz
+ </label>
+ <label for="topic_digester">
+ <input type="checkbox" id="topic_digester" value="digester" name="topic" />
+ Mailing list digester
+ </label>
+ <label for="topic" class="error">Please select at least two topics you'd like to receive.</label>
+ </fieldset>
+ <p>
+ <button class="submit" type="submit">Submit</button>
+ </p>
+ </fieldset>
+</form>
+
+<script src="http://www.google-analytics.com/urchin.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+_uacct = "UA-2623402-1";
+urchinTracker();
+</script>
+</body>
+</html> \ No newline at end of file
diff --git a/bug/bug/jquery-validation-1.8.1/demo/tinymce/index.html b/bug/bug/jquery-validation-1.8.1/demo/tinymce/index.html
new file mode 100644
index 0000000..8bfd182
--- /dev/null
+++ b/bug/bug/jquery-validation-1.8.1/demo/tinymce/index.html
@@ -0,0 +1,75 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<title>jQuery Validation plugin: integration with TinyMCE</title>
+
+<script type="text/javascript" src="../../lib/jquery.js"></script>
+<script type="text/javascript" src="../../jquery.validate.js"></script>
+<script type="text/javascript" src="tiny_mce.js"></script>
+<script type="text/javascript">
+ tinyMCE.init({
+ mode : "textareas",
+ theme : "simple",
+ // update validation status on change
+ onchange_callback: function(editor) {
+ tinyMCE.triggerSave();
+ $("#" + editor.id).valid();
+ }
+ });
+ $(function() {
+ var validator = $("#myform").submit(function() {
+ // update underlying textarea before submit validation
+ tinyMCE.triggerSave();
+ }).validate({
+ rules: {
+ title: "required",
+ content: "required"
+ },
+ errorPlacement: function(label, element) {
+ // position error label after generated textarea
+ if (element.is("textarea")) {
+ label.insertAfter(element.next());
+ } else {
+ label.insertAfter(element)
+ }
+ }
+ });
+ validator.focusInvalid = function() {
+ // put focus on tinymce on submit validation
+ if( this.settings.focusInvalid ) {
+ try {
+ var toFocus = $(this.findLastActive() || this.errorList.length && this.errorList[0].element || []);
+ if (toFocus.is("textarea")) {
+ tinyMCE.get(toFocus.attr("id")).focus();
+ } else {
+ toFocus.filter(":visible").focus();
+ }
+ } catch(e) {
+ // ignore IE throwing errors when focusing hidden elements
+ }
+ }
+ }
+ })
+</script>
+<!-- /TinyMCE -->
+
+</head>
+<body>
+
+<form id="myform" action="">
+ <h3>TinyMCE and Validation Plugin integration example</h3>
+
+ <label>Some other field</label>
+ <input name="title" />
+
+ <br/>
+
+ <label>Some richt text</label>
+ <textarea id="content" name="content" rows="15" cols="80" style="width: 80%"></textarea>
+
+ <br />
+ <input type="submit" name="save" value="Submit" />
+</form>
+
+</body>
+</html>
diff --git a/bug/bug/jquery-validation-1.8.1/demo/tinymce/themes/simple/editor_template.js b/bug/bug/jquery-validation-1.8.1/demo/tinymce/themes/simple/editor_template.js
new file mode 100644
index 0000000..d19fb53
--- /dev/null
+++ b/bug/bug/jquery-validation-1.8.1/demo/tinymce/themes/simple/editor_template.js
@@ -0,0 +1 @@
+(function(){var DOM=tinymce.DOM;tinymce.ThemeManager.requireLangPack('simple');tinymce.create('tinymce.themes.SimpleTheme',{init:function(ed,url){var t=this,states=['Bold','Italic','Underline','Strikethrough','InsertUnorderedList','InsertOrderedList'],s=ed.settings;t.editor=ed;ed.onInit.add(function(){ed.onNodeChange.add(function(ed,cm){tinymce.each(states,function(c){cm.get(c.toLowerCase()).setActive(ed.queryCommandState(c));});});ed.dom.loadCSS(url+"/skins/"+s.skin+"/content.css");});DOM.loadCSS((s.editor_css?ed.documentBaseURI.toAbsolute(s.editor_css):'')||url+"/skins/"+s.skin+"/ui.css");},renderUI:function(o){var t=this,n=o.targetNode,ic,tb,ed=t.editor,cf=ed.controlManager,sc;n=DOM.insertAfter(DOM.create('span',{id:ed.id+'_container','class':'mceEditor '+ed.settings.skin+'SimpleSkin'}),n);n=sc=DOM.add(n,'table',{cellPadding:0,cellSpacing:0,'class':'mceLayout'});n=tb=DOM.add(n,'tbody');n=DOM.add(tb,'tr');n=ic=DOM.add(DOM.add(n,'td'),'div',{'class':'mceIframeContainer'});n=DOM.add(DOM.add(tb,'tr',{'class':'last'}),'td',{'class':'mceToolbar mceLast',align:'center'});tb=t.toolbar=cf.createToolbar("tools1");tb.add(cf.createButton('bold',{title:'simple.bold_desc',cmd:'Bold'}));tb.add(cf.createButton('italic',{title:'simple.italic_desc',cmd:'Italic'}));tb.add(cf.createButton('underline',{title:'simple.underline_desc',cmd:'Underline'}));tb.add(cf.createButton('strikethrough',{title:'simple.striketrough_desc',cmd:'Strikethrough'}));tb.add(cf.createSeparator());tb.add(cf.createButton('undo',{title:'simple.undo_desc',cmd:'Undo'}));tb.add(cf.createButton('redo',{title:'simple.redo_desc',cmd:'Redo'}));tb.add(cf.createSeparator());tb.add(cf.createButton('cleanup',{title:'simple.cleanup_desc',cmd:'mceCleanup'}));tb.add(cf.createSeparator());tb.add(cf.createButton('insertunorderedlist',{title:'simple.bullist_desc',cmd:'InsertUnorderedList'}));tb.add(cf.createButton('insertorderedlist',{title:'simple.numlist_desc',cmd:'InsertOrderedList'}));tb.renderTo(n);return{iframeContainer:ic,editorContainer:ed.id+'_container',sizeContainer:sc,deltaHeight:-20};},getInfo:function(){return{longname:'Simple theme',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.ThemeManager.add('simple',tinymce.themes.SimpleTheme);})(); \ No newline at end of file
diff --git a/bug/bug/jquery-validation-1.8.1/demo/tinymce/themes/simple/img/icons.gif b/bug/bug/jquery-validation-1.8.1/demo/tinymce/themes/simple/img/icons.gif
new file mode 100644
index 0000000..16af141
--- /dev/null
+++ b/bug/bug/jquery-validation-1.8.1/demo/tinymce/themes/simple/img/icons.gif
Binary files differ
diff --git a/bug/bug/jquery-validation-1.8.1/demo/tinymce/themes/simple/langs/en.js b/bug/bug/jquery-validation-1.8.1/demo/tinymce/themes/simple/langs/en.js
new file mode 100644
index 0000000..6f09531
--- /dev/null
+++ b/bug/bug/jquery-validation-1.8.1/demo/tinymce/themes/simple/langs/en.js
@@ -0,0 +1,11 @@
+tinyMCE.addI18n('en.simple',{
+bold_desc:"Bold (Ctrl+B)",
+italic_desc:"Italic (Ctrl+I)",
+underline_desc:"Underline (Ctrl+U)",
+striketrough_desc:"Strikethrough",
+bullist_desc:"Unordered list",
+numlist_desc:"Ordered list",
+undo_desc:"Undo (Ctrl+Z)",
+redo_desc:"Redo (Ctrl+Y)",
+cleanup_desc:"Cleanup messy code"
+}); \ No newline at end of file
diff --git a/bug/bug/jquery-validation-1.8.1/demo/tinymce/themes/simple/skins/default/ui.css b/bug/bug/jquery-validation-1.8.1/demo/tinymce/themes/simple/skins/default/ui.css
new file mode 100644
index 0000000..32feae6
--- /dev/null
+++ b/bug/bug/jquery-validation-1.8.1/demo/tinymce/themes/simple/skins/default/ui.css
@@ -0,0 +1,32 @@
+/* Reset */
+.defaultSimpleSkin table, .defaultSimpleSkin tbody, .defaultSimpleSkin a, .defaultSimpleSkin img, .defaultSimpleSkin tr, .defaultSimpleSkin div, .defaultSimpleSkin td, .defaultSimpleSkin iframe, .defaultSimpleSkin span, .defaultSimpleSkin * {border:0; margin:0; padding:0; background:transparent; white-space:nowrap; text-decoration:none; font-weight:normal; cursor:default; color:#000}
+
+/* Containers */
+.defaultSimpleSkin {position:relative}
+.defaultSimpleSkin table.mceLayout {background:#F0F0EE; border:1px solid #CCC;}
+.defaultSimpleSkin iframe {display:block; background:#FFF; border-bottom:1px solid #CCC;}
+.defaultSimpleSkin .mceToolbar {height:24px;}
+
+/* Layout */
+.defaultSimpleSkin span.mceIcon, .defaultSimpleSkin img.mceIcon {display:block; width:20px; height:20px}
+.defaultSimpleSkin .mceIcon {background:url(../../img/icons.gif) no-repeat 20px 20px}
+
+/* Button */
+.defaultSimpleSkin .mceButton {display:block; border:1px solid #F0F0EE; width:20px; height:20px}
+.defaultSimpleSkin a.mceButtonEnabled:hover {border:1px solid #0A246A; background-color:#B2BBD0}
+.defaultSimpleSkin a.mceButtonActive {border:1px solid #0A246A; background-color:#C2CBE0}
+.defaultSimpleSkin .mceButtonDisabled span {opacity:0.3; -ms-filter:'alpha(opacity=30)'; filter:alpha(opacity=30)}
+
+/* Separator */
+.defaultSimpleSkin .mceSeparator {display:block; background:url(../../img/icons.gif) -180px 0; width:2px; height:20px; margin:0 2px 0 4px}
+
+/* Theme */
+.defaultSimpleSkin span.mce_bold {background-position:0 0}
+.defaultSimpleSkin span.mce_italic {background-position:-60px 0}
+.defaultSimpleSkin span.mce_underline {background-position:-140px 0}
+.defaultSimpleSkin span.mce_strikethrough {background-position:-120px 0}
+.defaultSimpleSkin span.mce_undo {background-position:-160px 0}
+.defaultSimpleSkin span.mce_redo {background-position:-100px 0}
+.defaultSimpleSkin span.mce_cleanup {background-position:-40px 0}
+.defaultSimpleSkin span.mce_insertunorderedlist {background-position:-20px 0}
+.defaultSimpleSkin span.mce_insertorderedlist {background-position:-80px 0}
diff --git a/bug/bug/jquery-validation-1.8.1/demo/tinymce/tiny_mce.js b/bug/bug/jquery-validation-1.8.1/demo/tinymce/tiny_mce.js
new file mode 100644
index 0000000..55aba6e
--- /dev/null
+++ b/bug/bug/jquery-validation-1.8.1/demo/tinymce/tiny_mce.js
@@ -0,0 +1 @@
+var tinymce={majorVersion:'3',minorVersion:'2.1.1',releaseDate:'2008-11-27',_init:function(){var t=this,d=document,w=window,na=navigator,ua=na.userAgent,i,nl,n,base,p,v;t.isOpera=w.opera&&opera.buildNumber;t.isWebKit=/WebKit/.test(ua);t.isOldWebKit=t.isWebKit&&!w.getSelection().getRangeAt;t.isIE=!t.isWebKit&&!t.isOpera&&(/MSIE/gi).test(ua)&&(/Explorer/gi).test(na.appName);t.isIE6=t.isIE&&/MSIE [56]/.test(ua);t.isGecko=!t.isWebKit&&/Gecko/.test(ua);t.isMac=ua.indexOf('Mac')!=-1;t.isAir=/adobeair/i.test(ua);if(w.tinyMCEPreInit){t.suffix=tinyMCEPreInit.suffix;t.baseURL=tinyMCEPreInit.base;t.query=tinyMCEPreInit.query;return;}t.suffix='';nl=d.getElementsByTagName('base');for(i=0;i<nl.length;i++){if(v=nl[i].href){if(/^https?:\/\/[^\/]+$/.test(v))v+='/';base=v?v.match(/.*\//)[0]:'';}}function getBase(n){if(n.src&&/tiny_mce(|_dev|_src|_gzip|_jquery|_prototype).js/.test(n.src)){if(/_(src|dev)\.js/g.test(n.src))t.suffix='_src';if((p=n.src.indexOf('?'))!=-1)t.query=n.src.substring(p+1);t.baseURL=n.src.substring(0,n.src.lastIndexOf('/'));if(base&&t.baseURL.indexOf('://')==-1)t.baseURL=base+t.baseURL;return t.baseURL;}return null;};nl=d.getElementsByTagName('script');for(i=0;i<nl.length;i++){if(getBase(nl[i]))return;}n=d.getElementsByTagName('head')[0];if(n){nl=n.getElementsByTagName('script');for(i=0;i<nl.length;i++){if(getBase(nl[i]))return;}}return;},is:function(o,t){var n=typeof(o);if(!t)return n!='undefined';if(t=='array'&&(o instanceof Array))return true;return n==t;},each:function(o,cb,s){var n,l;if(!o)return 0;s=s||o;if(typeof(o.length)!='undefined'){for(n=0,l=o.length;n<l;n++){if(cb.call(s,o[n],n,o)===false)return 0;}}else{for(n in o){if(o.hasOwnProperty(n)){if(cb.call(s,o[n],n,o)===false)return 0;}}}return 1;},map:function(a,f){var o=[];tinymce.each(a,function(v){o.push(f(v));});return o;},grep:function(a,f){var o=[];tinymce.each(a,function(v){if(!f||f(v))o.push(v);});return o;},inArray:function(a,v){var i,l;if(a){for(i=0,l=a.length;i<l;i++){if(a[i]===v)return i;}}return-1;},extend:function(o,e){var i,a=arguments;for(i=1;i<a.length;i++){e=a[i];tinymce.each(e,function(v,n){if(typeof(v)!=='undefined')o[n]=v;});}return o;},trim:function(s){return(s?''+s:'').replace(/^\s*|\s*$/g,'');},create:function(s,p){var t=this,sp,ns,cn,scn,c,de=0;s=/^((static) )?([\w.]+)(:([\w.]+))?/.exec(s);cn=s[3].match(/(^|\.)(\w+)$/i)[2];ns=t.createNS(s[3].replace(/\.\w+$/,''));if(ns[cn])return;if(s[2]=='static'){ns[cn]=p;if(this.onCreate)this.onCreate(s[2],s[3],ns[cn]);return;}if(!p[cn]){p[cn]=function(){};de=1;}ns[cn]=p[cn];t.extend(ns[cn].prototype,p);if(s[5]){sp=t.resolve(s[5]).prototype;scn=s[5].match(/\.(\w+)$/i)[1];c=ns[cn];if(de){ns[cn]=function(){return sp[scn].apply(this,arguments);};}else{ns[cn]=function(){this.parent=sp[scn];return c.apply(this,arguments);};}ns[cn].prototype[cn]=ns[cn];t.each(sp,function(f,n){ns[cn].prototype[n]=sp[n];});t.each(p,function(f,n){if(sp[n]){ns[cn].prototype[n]=function(){this.parent=sp[n];return f.apply(this,arguments);};}else{if(n!=cn)ns[cn].prototype[n]=f;}});}t.each(p['static'],function(f,n){ns[cn][n]=f;});if(this.onCreate)this.onCreate(s[2],s[3],ns[cn].prototype);},walk:function(o,f,n,s){s=s||this;if(o){if(n)o=o[n];tinymce.each(o,function(o,i){if(f.call(s,o,i,n)===false)return false;tinymce.walk(o,f,n,s);});}},createNS:function(n,o){var i,v;o=o||window;n=n.split('.');for(i=0;i<n.length;i++){v=n[i];if(!o[v])o[v]={};o=o[v];}return o;},resolve:function(n,o){var i,l;o=o||window;n=n.split('.');for(i=0,l=n.length;i<l;i++){o=o[n[i]];if(!o)break;}return o;},addUnload:function(f,s){var t=this,w=window;f={func:f,scope:s||this};if(!t.unloads){function unload(){var li=t.unloads,o,n;if(li){for(n in li){o=li[n];if(o&&o.func)o.func.call(o.scope,1);}if(w.detachEvent){w.detachEvent('onbeforeunload',fakeUnload);w.detachEvent('onunload',unload);}else if(w.removeEventListener)w.removeEventListener('unload',unload,false);t.unloads=o=li=w=unload=null;if(window.CollectGarbage)window.CollectGarbage();}};function fakeUnload(){var d=document;if(d.readyState=='interactive'){function stop(){d.detachEvent('onstop',stop);unload();d=null;};d.attachEvent('onstop',stop);window.setTimeout(function(){d.detachEvent('onstop',stop);},0);}};if(w.attachEvent){w.attachEvent('onunload',unload);w.attachEvent('onbeforeunload',fakeUnload);}else if(w.addEventListener)w.addEventListener('unload',unload,false);t.unloads=[f];}else t.unloads.push(f);return f;},removeUnload:function(f){var u=this.unloads,r=null;tinymce.each(u,function(o,i){if(o&&o.func==f){u.splice(i,1);r=f;return false;}});return r;},explode:function(s,d){return s?tinymce.map(s.split(d||','),tinymce.trim):s;},_addVer:function(u){var v;if(!this.query)return u;v=(u.indexOf('?')==-1?'?':'&')+this.query;if(u.indexOf('#')==-1)return u+v;return u.replace('#',v+'#');}};window.tinymce=tinymce;tinymce._init();tinymce.create('tinymce.util.Dispatcher',{scope:null,listeners:null,Dispatcher:function(s){this.scope=s||this;this.listeners=[];},add:function(cb,s){this.listeners.push({cb:cb,scope:s||this.scope});return cb;},addToTop:function(cb,s){this.listeners.unshift({cb:cb,scope:s||this.scope});return cb;},remove:function(cb){var l=this.listeners,o=null;tinymce.each(l,function(c,i){if(cb==c.cb){o=cb;l.splice(i,1);return false;}});return o;},dispatch:function(){var s,a=arguments,i,li=this.listeners,c;for(i=0;i<li.length;i++){c=li[i];s=c.cb.apply(c.scope,a);if(s===false)break;}return s;}});(function(){var each=tinymce.each;tinymce.create('tinymce.util.URI',{URI:function(u,s){var t=this,o,a,b;s=t.settings=s||{};if(/^(mailto|news|javascript|about):/i.test(u)||/^\s*#/.test(u)){t.source=u;return;}if(u.indexOf('/')===0&&u.indexOf('//')!==0)u=(s.base_uri?s.base_uri.protocol||'http':'http')+'://mce_host'+u;if(u.indexOf(':/')===-1&&u.indexOf('//')!==0)u=(s.base_uri.protocol||'http')+'://mce_host'+t.toAbsPath(s.base_uri.path,u);u=u.replace(/@@/g,'(mce_at)');u=/^(?:(?![^:@]+:[^:@\/]*@)([^:\/?#.]+):)?(?:\/\/)?((?:(([^:@]*):?([^:@]*))?@)?([^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/.exec(u);each(["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"],function(v,i){var s=u[i];if(s)s=s.replace(/\(mce_at\)/g,'@@');t[v]=s;});if(b=s.base_uri){if(!t.protocol)t.protocol=b.protocol;if(!t.userInfo)t.userInfo=b.userInfo;if(!t.port&&t.host=='mce_host')t.port=b.port;if(!t.host||t.host=='mce_host')t.host=b.host;t.source='';}},setPath:function(p){var t=this;p=/^(.*?)\/?(\w+)?$/.exec(p);t.path=p[0];t.directory=p[1];t.file=p[2];t.source='';t.getURI();},toRelative:function(u){var t=this,o;if(u==="./")return u;u=new tinymce.util.URI(u,{base_uri:t});if((u.host!='mce_host'&&t.host!=u.host&&u.host)||t.port!=u.port||t.protocol!=u.protocol)return u.getURI();o=t.toRelPath(t.path,u.path);if(u.query)o+='?'+u.query;if(u.anchor)o+='#'+u.anchor;return o;},toAbsolute:function(u,nh){var u=new tinymce.util.URI(u,{base_uri:this});return u.getURI(this.host==u.host?nh:0);},toRelPath:function(base,path){var items,bp=0,out='',i,l;base=base.substring(0,base.lastIndexOf('/'));base=base.split('/');items=path.split('/');if(base.length>=items.length){for(i=0,l=base.length;i<l;i++){if(i>=items.length||base[i]!=items[i]){bp=i+1;break;}}}if(base.length<items.length){for(i=0,l=items.length;i<l;i++){if(i>=base.length||base[i]!=items[i]){bp=i+1;break;}}}if(bp==1)return path;for(i=0,l=base.length-(bp-1);i<l;i++)out+="../";for(i=bp-1,l=items.length;i<l;i++){if(i!=bp-1)out+="/"+items[i];else out+=items[i];}return out;},toAbsPath:function(base,path){var i,nb=0,o=[];base=base.split('/');path=path.split('/');each(base,function(k){if(k)o.push(k);});base=o;for(i=path.length-1,o=[];i>=0;i--){if(path[i].length==0||path[i]==".")continue;if(path[i]=='..'){nb++;continue;}if(nb>0){nb--;continue;}o.push(path[i]);}i=base.length-nb;if(i<=0)return'/'+o.reverse().join('/');return'/'+base.slice(0,i).join('/')+'/'+o.reverse().join('/');},getURI:function(nh){var s,t=this;if(!t.source||nh){s='';if(!nh){if(t.protocol)s+=t.protocol+'://';if(t.userInfo)s+=t.userInfo+'@';if(t.host)s+=t.host;if(t.port)s+=':'+t.port;}if(t.path)s+=t.path;if(t.query)s+='?'+t.query;if(t.anchor)s+='#'+t.anchor;t.source=s;}return t.source;}});})();(function(){var each=tinymce.each;tinymce.create('static tinymce.util.Cookie',{getHash:function(n){var v=this.get(n),h;if(v){each(v.split('&'),function(v){v=v.split('=');h=h||{};h[unescape(v[0])]=unescape(v[1]);});}return h;},setHash:function(n,v,e,p,d,s){var o='';each(v,function(v,k){o+=(!o?'':'&')+escape(k)+'='+escape(v);});this.set(n,o,e,p,d,s);},get:function(n){var c=document.cookie,e,p=n+"=",b;if(!c)return;b=c.indexOf("; "+p);if(b==-1){b=c.indexOf(p);if(b!=0)return null;}else b+=2;e=c.indexOf(";",b);if(e==-1)e=c.length;return unescape(c.substring(b+p.length,e));},set:function(n,v,e,p,d,s){document.cookie=n+"="+escape(v)+((e)?"; expires="+e.toGMTString():"")+((p)?"; path="+escape(p):"")+((d)?"; domain="+d:"")+((s)?"; secure":"");},remove:function(n,p){var d=new Date();d.setTime(d.getTime()-1000);this.set(n,'',d,p,d);}});})();tinymce.create('static tinymce.util.JSON',{serialize:function(o){var i,v,s=tinymce.util.JSON.serialize,t;if(o==null)return'null';t=typeof o;if(t=='string'){v='\bb\tt\nn\ff\rr\""\'\'\\\\';return'"'+o.replace(/([\u0080-\uFFFF\x00-\x1f\"])/g,function(a,b){i=v.indexOf(b);if(i+1)return'\\'+v.charAt(i+1);a=b.charCodeAt().toString(16);return'\\u'+'0000'.substring(a.length)+a;})+'"';}if(t=='object'){if(o instanceof Array){for(i=0,v='[';i<o.length;i++)v+=(i>0?',':'')+s(o[i]);return v+']';}v='{';for(i in o)v+=typeof o[i]!='function'?(v.length>1?',"':'"')+i+'":'+s(o[i]):'';return v+'}';}return''+o;},parse:function(s){try{return eval('('+s+')');}catch(ex){}}});tinymce.create('static tinymce.util.XHR',{send:function(o){var x,t,w=window,c=0;o.scope=o.scope||this;o.success_scope=o.success_scope||o.scope;o.error_scope=o.error_scope||o.scope;o.async=o.async===false?false:true;o.data=o.data||'';function get(s){x=0;try{x=new ActiveXObject(s);}catch(ex){}return x;};x=w.XMLHttpRequest?new XMLHttpRequest():get('Microsoft.XMLHTTP')||get('Msxml2.XMLHTTP');if(x){if(x.overrideMimeType)x.overrideMimeType(o.content_type);x.open(o.type||(o.data?'POST':'GET'),o.url,o.async);if(o.content_type)x.setRequestHeader('Content-Type',o.content_type);x.send(o.data);function ready(){if(!o.async||x.readyState==4||c++>10000){if(o.success&&c<10000&&x.status==200)o.success.call(o.success_scope,''+x.responseText,x,o);else if(o.error)o.error.call(o.error_scope,c>10000?'TIMED_OUT':'GENERAL',x,o);x=null;}else w.setTimeout(ready,10);};if(!o.async)return ready();t=w.setTimeout(ready,10);}}});(function(){var extend=tinymce.extend,JSON=tinymce.util.JSON,XHR=tinymce.util.XHR;tinymce.create('tinymce.util.JSONRequest',{JSONRequest:function(s){this.settings=extend({},s);this.count=0;},send:function(o){var ecb=o.error,scb=o.success;o=extend(this.settings,o);o.success=function(c,x){c=JSON.parse(c);if(typeof(c)=='undefined'){c={error:'JSON Parse error.'};}if(c.error)ecb.call(o.error_scope||o.scope,c.error,x);else scb.call(o.success_scope||o.scope,c.result);};o.error=function(ty,x){ecb.call(o.error_scope||o.scope,ty,x);};o.data=JSON.serialize({id:o.id||'c'+(this.count++),method:o.method,params:o.params});o.content_type='application/json';XHR.send(o);},'static':{sendRPC:function(o){return new tinymce.util.JSONRequest().send(o);}}});}());(function(){var each=tinymce.each,is=tinymce.is;var isWebKit=tinymce.isWebKit,isIE=tinymce.isIE;tinymce.create('tinymce.dom.DOMUtils',{doc:null,root:null,files:null,listeners:{},pixelStyles:/^(top|left|bottom|right|width|height|borderWidth)$/,cache:{},idPattern:/^#[\w]+$/,elmPattern:/^[\w_*]+$/,elmClassPattern:/^([\w_]*)\.([\w_]+)$/,props:{"for":"htmlFor","class":"className",className:"className",checked:"checked",disabled:"disabled",maxlength:"maxLength",readonly:"readOnly",selected:"selected",value:"value",id:"id",name:"name",type:"type"},DOMUtils:function(d,s){var t=this;t.doc=d;t.win=window;t.files={};t.cssFlicker=false;t.counter=0;t.boxModel=!tinymce.isIE||d.compatMode=="CSS1Compat";t.stdMode=d.documentMode===8;this.settings=s=tinymce.extend({keep_values:false,hex_colors:1,process_html:1},s);if(tinymce.isIE6){try{d.execCommand('BackgroundImageCache',false,true);}catch(e){t.cssFlicker=true;}}tinymce.addUnload(t.destroy,t);},getRoot:function(){var t=this,s=t.settings;return(s&&t.get(s.root_element))||t.doc.body;},getViewPort:function(w){var d,b;w=!w?this.win:w;d=w.document;b=this.boxModel?d.documentElement:d.body;return{x:w.pageXOffset||b.scrollLeft,y:w.pageYOffset||b.scrollTop,w:w.innerWidth||b.clientWidth,h:w.innerHeight||b.clientHeight};},getRect:function(e){var p,t=this,sr;e=t.get(e);p=t.getPos(e);sr=t.getSize(e);return{x:p.x,y:p.y,w:sr.w,h:sr.h};},getSize:function(e){var t=this,w,h;e=t.get(e);w=t.getStyle(e,'width');h=t.getStyle(e,'height');if(w.indexOf('px')===-1)w=0;if(h.indexOf('px')===-1)h=0;return{w:parseInt(w)||e.offsetWidth||e.clientWidth,h:parseInt(h)||e.offsetHeight||e.clientHeight};},getParent:function(n,f,r){var na,se=this.settings;n=this.get(n);if(se.strict_root)r=r||this.getRoot();if(is(f,'string')){na=f.toUpperCase();f=function(n){var s=false;if(n.nodeType==1&&na==='*'){s=true;return false;}each(na.split(','),function(v){if(n.nodeType==1&&((se.strict&&n.nodeName.toUpperCase()==v)||n.nodeName.toUpperCase()==v)){s=true;return false;}});return s;};}while(n){if(n==r)return null;if(f(n))return n;n=n.parentNode;}return null;},get:function(e){var n;if(e&&this.doc&&typeof(e)=='string'){n=e;e=this.doc.getElementById(e);if(e&&e.id!==n)return this.doc.getElementsByName(n)[1];}return e;},select:function(pa,s){var t=this,cs,c,pl,o=[],x,i,l,n,xp;s=t.get(s)||t.doc;if(s.querySelectorAll){if(s!=t.doc){i=s.id;s.id='_mc_tmp';pa='#_mc_tmp '+pa;}l=tinymce.grep(s.querySelectorAll(pa));s.id=i;return l;}if(!t.selectorRe)t.selectorRe=/^([\w\\*]+)?(?:#([\w\\]+))?(?:\.([\w\\\.]+))?(?:\[\@([\w\\]+)([\^\$\*!]?=)([\w\\]+)\])?(?:\:([\w\\]+))?/i;;if(tinymce.isAir){each(tinymce.explode(pa),function(v){if(!(xp=t.cache[v])){xp='';each(v.split(' '),function(v){v=t.selectorRe.exec(v);xp+=v[1]?'//'+v[1]:'//*';if(v[2])xp+="[@id='"+v[2]+"']";if(v[3]){each(v[3].split('.'),function(n){xp+="[@class = '"+n+"' or contains(concat(' ', @class, ' '), ' "+n+" ')]";});}});t.cache[v]=xp;}xp=t.doc.evaluate(xp,s,null,4,null);while(n=xp.iterateNext())o.push(n);});return o;}if(t.settings.strict){function get(s,n){return s.getElementsByTagName(n.toLowerCase());};}else{function get(s,n){return s.getElementsByTagName(n);};}if(t.elmPattern.test(pa)){x=get(s,pa);for(i=0,l=x.length;i<l;i++)o.push(x[i]);return o;}if(t.elmClassPattern.test(pa)){pl=t.elmClassPattern.exec(pa);x=get(s,pl[1]||'*');c=' '+pl[2]+' ';for(i=0,l=x.length;i<l;i++){n=x[i];if(n.className&&(' '+n.className+' ').indexOf(c)!==-1)o.push(n);}return o;}function collect(n){if(!n.mce_save){n.mce_save=1;o.push(n);}};function collectIE(n){if(!n.getAttribute('mce_save')){n.setAttribute('mce_save','1');o.push(n);}};function find(n,f,r){var i,l,nl=get(r,n);for(i=0,l=nl.length;i<l;i++)f(nl[i]);};each(pa.split(','),function(v,i){v=tinymce.trim(v);if(t.elmPattern.test(v)){each(get(s,v),function(n){collect(n);});return;}if(t.elmClassPattern.test(v)){x=t.elmClassPattern.exec(v);each(get(s,x[1]),function(n){if(t.hasClass(n,x[2]))collect(n);});return;}if(!(cs=t.cache[pa])){cs='x=(function(cf, s) {';pl=v.split(' ');each(pl,function(v){var p=t.selectorRe.exec(v);p[1]=p[1]||'*';cs+='find("'+p[1]+'", function(n) {';if(p[2])cs+='if (n.id !== "'+p[2]+'") return;';if(p[3]){cs+='var c = " " + n.className + " ";';cs+='if (';c='';each(p[3].split('.'),function(v){if(v)c+=(c?'||':'')+'c.indexOf(" '+v+' ") === -1';});cs+=c+') return;';}});cs+='cf(n);';for(i=pl.length-1;i>=0;i--)cs+='}, '+(i?'n':'s')+');';cs+='})';t.cache[pa]=cs=eval(cs);}cs(isIE?collectIE:collect,s);});each(o,function(n){if(isIE)n.removeAttribute('mce_save');else delete n.mce_save;});return o;},add:function(p,n,a,h,c){var t=this;return this.run(p,function(p){var e,k;e=is(n,'string')?t.doc.createElement(n):n;t.setAttribs(e,a);if(h){if(h.nodeType)e.appendChild(h);else t.setHTML(e,h);}return!c?p.appendChild(e):e;});},create:function(n,a,h){return this.add(this.doc.createElement(n),n,a,h,1);},createHTML:function(n,a,h){var o='',t=this,k;o+='<'+n;for(k in a){if(a.hasOwnProperty(k))o+=' '+k+'="'+t.encode(a[k])+'"';}if(tinymce.is(h))return o+'>'+h+'</'+n+'>';return o+' />';},remove:function(n,k){return this.run(n,function(n){var p,g;p=n.parentNode;if(!p)return null;if(k){each(n.childNodes,function(c){p.insertBefore(c.cloneNode(true),n);});}return p.removeChild(n);});},setStyle:function(n,na,v){var t=this;return t.run(n,function(e){var s,i;s=e.style;na=na.replace(/-(\D)/g,function(a,b){return b.toUpperCase();});if(t.pixelStyles.test(na)&&(tinymce.is(v,'number')||/^[\-0-9\.]+$/.test(v)))v+='px';switch(na){case'opacity':if(isIE){s.filter=v===''?'':"alpha(opacity="+(v*100)+")";if(!n.currentStyle||!n.currentStyle.hasLayout)s.display='inline-block';}s[na]=s['-moz-opacity']=s['-khtml-opacity']=v||'';break;case'float':isIE?s.styleFloat=v:s.cssFloat=v;break;default:s[na]=v||'';}if(t.settings.update_styles)t.setAttrib(e,'mce_style');});},getStyle:function(n,na,c){n=this.get(n);if(!n)return false;if(this.doc.defaultView&&c){na=na.replace(/[A-Z]/g,function(a){return'-'+a;});try{return this.doc.defaultView.getComputedStyle(n,null).getPropertyValue(na);}catch(ex){return null;}}na=na.replace(/-(\D)/g,function(a,b){return b.toUpperCase();});if(na=='float')na=isIE?'styleFloat':'cssFloat';if(n.currentStyle&&c)return n.currentStyle[na];return n.style[na];},setStyles:function(e,o){var t=this,s=t.settings,ol;ol=s.update_styles;s.update_styles=0;each(o,function(v,n){t.setStyle(e,n,v);});s.update_styles=ol;if(s.update_styles)t.setAttrib(e,s.cssText);},setAttrib:function(e,n,v){var t=this;if(!e||!n)return;if(t.settings.strict)n=n.toLowerCase();return this.run(e,function(e){var s=t.settings;switch(n){case"style":if(!is(v,'string')){each(v,function(v,n){t.setStyle(e,n,v);});return;}if(s.keep_values){if(v&&!t._isRes(v))e.setAttribute('mce_style',v,2);else e.removeAttribute('mce_style',2);}e.style.cssText=v;break;case"class":e.className=v||'';break;case"src":case"href":if(s.keep_values){if(s.url_converter)v=s.url_converter.call(s.url_converter_scope||t,v,n,e);t.setAttrib(e,'mce_'+n,v,2);}break;case"shape":e.setAttribute('mce_style',v);break;}if(is(v)&&v!==null&&v.length!==0)e.setAttribute(n,''+v,2);else e.removeAttribute(n,2);});},setAttribs:function(e,o){var t=this;return this.run(e,function(e){each(o,function(v,n){t.setAttrib(e,n,v);});});},getAttrib:function(e,n,dv){var v,t=this;e=t.get(e);if(!e||e.nodeType!==1)return false;if(!is(dv))dv='';if(/^(src|href|style|coords|shape)$/.test(n)){v=e.getAttribute("mce_"+n);if(v)return v;}if(isIE&&t.props[n]){v=e[t.props[n]];v=v&&v.nodeValue?v.nodeValue:v;}if(!v)v=e.getAttribute(n,2);if(n==='style'){v=v||e.style.cssText;if(v){v=t.serializeStyle(t.parseStyle(v));if(t.settings.keep_values&&!t._isRes(v))e.setAttribute('mce_style',v);}}if(isWebKit&&n==="class"&&v)v=v.replace(/(apple|webkit)\-[a-z\-]+/gi,'');if(isIE){switch(n){case'rowspan':case'colspan':if(v===1)v='';break;case'size':if(v==='+0'||v===20)v='';break;case'width':case'height':case'vspace':case'checked':case'disabled':case'readonly':if(v===0)v='';break;case'hspace':if(v===-1)v='';break;case'maxlength':case'tabindex':if(v===32768||v===2147483647||v==='32768')v='';break;case'compact':case'noshade':case'nowrap':if(v===65535)return n;return dv;case'shape':v=v.toLowerCase();break;default:if(n.indexOf('on')===0&&v)v=(''+v).replace(/^function\s+anonymous\(\)\s+\{\s+(.*)\s+\}$/,'$1');}}return(v!==undefined&&v!==null&&v!=='')?''+v:dv;},getPos:function(n){var t=this,x=0,y=0,e,d=t.doc,r;n=t.get(n);if(n&&isIE){n=n.getBoundingClientRect();e=t.boxModel?d.documentElement:d.body;x=t.getStyle(t.select('html')[0],'borderWidth');x=(x=='medium'||t.boxModel&&!t.isIE6)&&2||x;n.top+=t.win.self!=t.win.top?2:0;return{x:n.left+e.scrollLeft-x,y:n.top+e.scrollTop-x};}r=n;while(r){x+=r.offsetLeft||0;y+=r.offsetTop||0;r=r.offsetParent;}r=n;while(r){if(!/^table-row|inline.*/i.test(t.getStyle(r,"display",1))){x-=r.scrollLeft||0;y-=r.scrollTop||0;}r=r.parentNode;if(r==d.body)break;}return{x:x,y:y};},parseStyle:function(st){var t=this,s=t.settings,o={};if(!st)return o;function compress(p,s,ot){var t,r,b,l;t=o[p+'-top'+s];if(!t)return;r=o[p+'-right'+s];if(t!=r)return;b=o[p+'-bottom'+s];if(r!=b)return;l=o[p+'-left'+s];if(b!=l)return;o[ot]=l;delete o[p+'-top'+s];delete o[p+'-right'+s];delete o[p+'-bottom'+s];delete o[p+'-left'+s];};function compress2(ta,a,b,c){var t;t=o[a];if(!t)return;t=o[b];if(!t)return;t=o[c];if(!t)return;o[ta]=o[a]+' '+o[b]+' '+o[c];delete o[a];delete o[b];delete o[c];};st=st.replace(/&(#?[a-z0-9]+);/g,'&$1_MCE_SEMI_');each(st.split(';'),function(v){var sv,ur=[];if(v){v=v.replace(/_MCE_SEMI_/g,';');v=v.replace(/url\([^\)]+\)/g,function(v){ur.push(v);return'url('+ur.length+')';});v=v.split(':');sv=tinymce.trim(v[1]);sv=sv.replace(/url\(([^\)]+)\)/g,function(a,b){return ur[parseInt(b)-1];});sv=sv.replace(/rgb\([^\)]+\)/g,function(v){return t.toHex(v);});if(s.url_converter){sv=sv.replace(/url\([\'\"]?([^\)\'\"]+)[\'\"]?\)/g,function(x,c){return'url('+s.url_converter.call(s.url_converter_scope||t,t.decode(c),'style',null)+')';});}o[tinymce.trim(v[0]).toLowerCase()]=sv;}});compress("border","","border");compress("border","-width","border-width");compress("border","-color","border-color");compress("border","-style","border-style");compress("padding","","padding");compress("margin","","margin");compress2('border','border-width','border-style','border-color');if(isIE){if(o.border=='medium none')o.border='';}return o;},serializeStyle:function(o){var s='';each(o,function(v,k){if(k&&v){if(tinymce.isGecko&&k.indexOf('-moz-')===0)return;switch(k){case'color':case'background-color':v=v.toLowerCase();break;}s+=(s?' ':'')+k+': '+v+';';}});return s;},loadCSS:function(u){var t=this,d=t.doc;if(!u)u='';each(u.split(','),function(u){if(t.files[u])return;t.files[u]=true;t.add(t.select('head')[0],'link',{rel:'stylesheet',href:tinymce._addVer(u)});});},addClass:function(e,c){return this.run(e,function(e){var o;if(!c)return 0;if(this.hasClass(e,c))return e.className;o=this.removeClass(e,c);return e.className=(o!=''?(o+' '):'')+c;});},removeClass:function(e,c){var t=this,re;return t.run(e,function(e){var v;if(t.hasClass(e,c)){if(!re)re=new RegExp("(^|\\s+)"+c+"(\\s+|$)","g");v=e.className.replace(re,' ');return e.className=tinymce.trim(v!=' '?v:'');}return e.className;});},hasClass:function(n,c){n=this.get(n);if(!n||!c)return false;return(' '+n.className+' ').indexOf(' '+c+' ')!==-1;},show:function(e){return this.setStyle(e,'display','block');},hide:function(e){return this.setStyle(e,'display','none');},isHidden:function(e){e=this.get(e);return!e||e.style.display=='none'||this.getStyle(e,'display')=='none';},uniqueId:function(p){return(!p?'mce_':p)+(this.counter++);},setHTML:function(e,h){var t=this;return this.run(e,function(e){var x,i,nl,n,p,x;h=t.processHTML(h);if(isIE){function set(){try{e.innerHTML='<br />'+h;e.removeChild(e.firstChild);}catch(ex){while(e.firstChild)e.firstChild.removeNode();x=t.create('div');x.innerHTML='<br />'+h;each(x.childNodes,function(n,i){if(i)e.appendChild(n);});}};if(t.settings.fix_ie_paragraphs)h=h.replace(/<p><\/p>|<p([^>]+)><\/p>|<p[^\/+]\/>/gi,'<p$1 mce_keep="true">&nbsp;</p>');set();if(t.settings.fix_ie_paragraphs){nl=e.getElementsByTagName("p");for(i=nl.length-1,x=0;i>=0;i--){n=nl[i];if(!n.hasChildNodes()){if(!n.mce_keep){x=1;break;}n.removeAttribute('mce_keep');}}}if(x){h=h.replace(/<p ([^>]+)>|<p>/g,'<div $1 mce_tmp="1">');h=h.replace(/<\/p>/g,'</div>');set();if(t.settings.fix_ie_paragraphs){nl=e.getElementsByTagName("DIV");for(i=nl.length-1;i>=0;i--){n=nl[i];if(n.mce_tmp){p=t.doc.createElement('p');n.cloneNode(false).outerHTML.replace(/([a-z0-9\-_]+)=/gi,function(a,b){var v;if(b!=='mce_tmp'){v=n.getAttribute(b);if(!v&&b==='class')v=n.className;p.setAttribute(b,v);}});for(x=0;x<n.childNodes.length;x++)p.appendChild(n.childNodes[x].cloneNode(true));n.swapNode(p);}}}}}else e.innerHTML=h;return h;});},processHTML:function(h){var t=this,s=t.settings;if(!s.process_html)return h;if(tinymce.isGecko){h=h.replace(/<(\/?)strong>|<strong( [^>]+)>/gi,'<$1b$2>');h=h.replace(/<(\/?)em>|<em( [^>]+)>/gi,'<$1i$2>');}else if(isIE){h=h.replace(/&apos;/g,'&#39;');h=h.replace(/\s+(disabled|checked|readonly|selected)\s*=\s*[\"\']?(false|0)[\"\']?/gi,'');}h=h.replace(/<a( )([^>]+)\/>|<a\/>/gi,'<a$1$2></a>');if(s.keep_values){if(/<script|style/.test(h)){function trim(s){s=s.replace(/(<!--\[CDATA\[|\]\]-->)/g,'\n');s=s.replace(/^[\r\n]*|[\r\n]*$/g,'');s=s.replace(/^\s*(\/\/\s*<!--|\/\/\s*<!\[CDATA\[|<!--|<!\[CDATA\[)[\r\n]*/g,'');s=s.replace(/\s*(\/\/\s*\]\]>|\/\/\s*-->|\]\]>|-->|\]\]-->)\s*$/g,'');return s;};h=h.replace(/<script([^>]+|)>([\s\S]*?)<\/script>/g,function(v,a,b){b=trim(b);if(!a)a=' type="text/javascript"';if(b)b='<!--\n'+b+'\n// -->';return'<mce:script'+a+'>'+b+'</mce:script>';});h=h.replace(/<style([^>]+|)>([\s\S]*?)<\/style>/g,function(v,a,b){b=trim(b);return'<mce:style'+a+'><!--\n'+b+'\n--></mce:style><style'+a+' mce_bogus="1">'+b+'</style>';});}h=h.replace(/<!\[CDATA\[([\s\S]+)\]\]>/g,'<!--[CDATA[$1]]-->');h=h.replace(/<([\w:]+) [^>]*(src|href|style|shape|coords)[^>]*>/gi,function(a,n){function handle(m,b,c){var u=c;if(a.indexOf('mce_'+b)!=-1)return m;if(b=='style'){if(t._isRes(c))return m;if(s.hex_colors){u=u.replace(/rgb\([^\)]+\)/g,function(v){return t.toHex(v);});}if(s.url_converter){u=u.replace(/url\([\'\"]?([^\)\'\"]+)\)/g,function(x,c){return'url('+t.encode(s.url_converter.call(s.url_converter_scope||t,t.decode(c),b,n))+')';});}}else if(b!='coords'&&b!='shape'){if(s.url_converter)u=t.encode(s.url_converter.call(s.url_converter_scope||t,t.decode(c),b,n));}return' '+b+'="'+c+'" mce_'+b+'="'+u+'"';};a=a.replace(/ (src|href|style|coords|shape)=[\"]([^\"]+)[\"]/gi,handle);a=a.replace(/ (src|href|style|coords|shape)=[\']([^\']+)[\']/gi,handle);return a.replace(/ (src|href|style|coords|shape)=([^\s\"\'>]+)/gi,handle);});}return h;},getOuterHTML:function(e){var d;e=this.get(e);if(!e)return null;if(isIE)return e.outerHTML;d=(e.ownerDocument||this.doc).createElement("body");d.appendChild(e.cloneNode(true));return d.innerHTML;},setOuterHTML:function(e,h,d){var t=this;return this.run(e,function(e){var n,tp;e=t.get(e);d=d||e.ownerDocument||t.doc;if(isIE&&e.nodeType==1)e.outerHTML=h;else{tp=d.createElement("body");tp.innerHTML=h;n=tp.lastChild;while(n){t.insertAfter(n.cloneNode(true),e);n=n.previousSibling;}t.remove(e);}});},decode:function(s){var e,n,v;if(/&[^;]+;/.test(s)){e=this.doc.createElement("div");e.innerHTML=s;n=e.firstChild;v='';if(n){do{v+=n.nodeValue;}while(n.nextSibling);}return v||s;}return s;},encode:function(s){return s?(''+s).replace(/[<>&\"]/g,function(c,b){switch(c){case'&':return'&amp;';case'"':return'&quot;';case'<':return'&lt;';case'>':return'&gt;';}return c;}):s;},insertAfter:function(n,r){var t=this;r=t.get(r);return this.run(n,function(n){var p,ns;p=r.parentNode;ns=r.nextSibling;if(ns)p.insertBefore(n,ns);else p.appendChild(n);return n;});},isBlock:function(n){if(n.nodeType&&n.nodeType!==1)return false;n=n.nodeName||n;return/^(H[1-6]|HR|P|DIV|ADDRESS|PRE|FORM|TABLE|LI|OL|UL|TD|CAPTION|BLOCKQUOTE|CENTER|DL|DT|DD|DIR|FIELDSET|NOSCRIPT|NOFRAMES|MENU|ISINDEX|SAMP)$/.test(n);},replace:function(n,o,k){if(is(o,'array'))n=n.cloneNode(true);return this.run(o,function(o){if(k){each(o.childNodes,function(c){n.appendChild(c.cloneNode(true));});}return o.parentNode.replaceChild(n,o);});},toHex:function(s){var c=/^\s*rgb\s*?\(\s*?([0-9]+)\s*?,\s*?([0-9]+)\s*?,\s*?([0-9]+)\s*?\)\s*$/i.exec(s);function hex(s){s=parseInt(s).toString(16);return s.length>1?s:'0'+s;};if(c){s='#'+hex(c[1])+hex(c[2])+hex(c[3]);return s;}return s;},getClasses:function(){var t=this,cl=[],i,lo={},f=t.settings.class_filter,ov;if(t.classes)return t.classes;function addClasses(s){each(s.imports,function(r){addClasses(r);});each(s.cssRules||s.rules,function(r){switch(r.type||1){case 1:if(r.selectorText){each(r.selectorText.split(','),function(v){v=v.replace(/^\s*|\s*$|^\s\./g,"");if(/\.mce/.test(v)||!/\.[\w\-]+$/.test(v))return;ov=v;v=v.replace(/.*\.([a-z0-9_\-]+).*/i,'$1');if(f&&!(v=f(v,ov)))return;if(!lo[v]){cl.push({'class':v});lo[v]=1;}});}break;case 3:addClasses(r.styleSheet);break;}});};try{each(t.doc.styleSheets,addClasses);}catch(ex){}if(cl.length>0)t.classes=cl;return cl;},run:function(e,f,s){var t=this,o;if(t.doc&&typeof(e)==='string')e=t.get(e);if(!e)return false;s=s||this;if(!e.nodeType&&(e.length||e.length===0)){o=[];each(e,function(e,i){if(e){if(typeof(e)=='string')e=t.doc.getElementById(e);o.push(f.call(s,e,i));}});return o;}return f.call(s,e);},getAttribs:function(n){var o;n=this.get(n);if(!n)return[];if(isIE){o=[];if(n.nodeName=='OBJECT')return n.attributes;n.cloneNode(false).outerHTML.replace(/([a-z0-9\:\-_]+)=/gi,function(a,b){o.push({specified:1,nodeName:b});});return o;}return n.attributes;},destroy:function(s){var t=this;t.win=t.doc=t.root=null;if(!s)tinymce.removeUnload(t.destroy);},_isRes:function(c){return/^(top|left|bottom|right|width|height)/i.test(c)||/;\s*(top|left|bottom|right|width|height)/i.test(c);}});tinymce.DOM=new tinymce.dom.DOMUtils(document,{process_html:0});})();(function(){var each=tinymce.each,DOM=tinymce.DOM,isIE=tinymce.isIE,isWebKit=tinymce.isWebKit,Event;tinymce.create('static tinymce.dom.Event',{inits:[],events:[],add:function(o,n,f,s){var cb,t=this,el=t.events,r;if(o&&o instanceof Array){r=[];each(o,function(o){o=DOM.get(o);r.push(t.add(o,n,f,s));});return r;}o=DOM.get(o);if(!o)return;cb=function(e){e=e||window.event;if(e&&!e.target&&isIE)e.target=e.srcElement;if(!s)return f(e);return f.call(s,e);};if(n=='unload'){tinymce.unloads.unshift({func:cb});return cb;}if(n=='init'){if(t.domLoaded)cb();else t.inits.push(cb);return cb;}el.push({obj:o,name:n,func:f,cfunc:cb,scope:s});t._add(o,n,cb);return f;},remove:function(o,n,f){var t=this,a=t.events,s=false,r;if(o&&o instanceof Array){r=[];each(o,function(o){o=DOM.get(o);r.push(t.remove(o,n,f));});return r;}o=DOM.get(o);each(a,function(e,i){if(e.obj==o&&e.name==n&&(!f||(e.func==f||e.cfunc==f))){a.splice(i,1);t._remove(o,n,e.cfunc);s=true;return false;}});return s;},clear:function(o){var t=this,a=t.events,i,e;if(o){o=DOM.get(o);for(i=a.length-1;i>=0;i--){e=a[i];if(e.obj===o){t._remove(e.obj,e.name,e.cfunc);e.obj=e.cfunc=null;a.splice(i,1);}}}},cancel:function(e){if(!e)return false;this.stop(e);return this.prevent(e);},stop:function(e){if(e.stopPropagation)e.stopPropagation();else e.cancelBubble=true;return false;},prevent:function(e){if(e.preventDefault)e.preventDefault();else e.returnValue=false;return false;},_unload:function(){var t=Event;each(t.events,function(e,i){t._remove(e.obj,e.name,e.cfunc);e.obj=e.cfunc=null;});t.events=[];t=null;},_add:function(o,n,f){if(o.attachEvent)o.attachEvent('on'+n,f);else if(o.addEventListener)o.addEventListener(n,f,false);else o['on'+n]=f;},_remove:function(o,n,f){if(o){try{if(o.detachEvent)o.detachEvent('on'+n,f);else if(o.removeEventListener)o.removeEventListener(n,f,false);else o['on'+n]=null;}catch(ex){}}},_pageInit:function(){var e=Event;if(e.domLoaded)return;e._remove(window,'DOMContentLoaded',e._pageInit);e.domLoaded=true;each(e.inits,function(c){c();});e.inits=[];},_wait:function(){var t;if(window.tinyMCE_GZ&&tinyMCE_GZ.loaded){Event.domLoaded=1;return;}if(isIE&&document.location.protocol!='https:'){document.write('<script id=__ie_onload defer src=\'javascript:""\';><\/script>');DOM.get("__ie_onload").onreadystatechange=function(){if(this.readyState=="complete"){Event._pageInit();DOM.get("__ie_onload").onreadystatechange=null;}};}else{Event._add(window,'DOMContentLoaded',Event._pageInit,Event);if(isIE||isWebKit){t=setInterval(function(){if(/loaded|complete/.test(document.readyState)){clearInterval(t);Event._pageInit();}},10);}}}});Event=tinymce.dom.Event;Event._wait();tinymce.addUnload(Event._unload);})();(function(){var each=tinymce.each;tinymce.create('tinymce.dom.Element',{Element:function(id,s){var t=this,dom,el;s=s||{};t.id=id;t.dom=dom=s.dom||tinymce.DOM;t.settings=s;if(!tinymce.isIE)el=t.dom.get(t.id);each(['getPos','getRect','getParent','add','setStyle','getStyle','setStyles','setAttrib','setAttribs','getAttrib','addClass','removeClass','hasClass','getOuterHTML','setOuterHTML','remove','show','hide','isHidden','setHTML','get'],function(k){t[k]=function(){var a=arguments,o;if(tinymce.isOpera){a=[id];each(arguments,function(v){a.push(v);});}else Array.prototype.unshift.call(a,el||id);o=dom[k].apply(dom,a);t.update(k);return o;};});},on:function(n,f,s){return tinymce.dom.Event.add(this.id,n,f,s);},getXY:function(){return{x:parseInt(this.getStyle('left')),y:parseInt(this.getStyle('top'))};},getSize:function(){var n=this.dom.get(this.id);return{w:parseInt(this.getStyle('width')||n.clientWidth),h:parseInt(this.getStyle('height')||n.clientHeight)};},moveTo:function(x,y){this.setStyles({left:x,top:y});},moveBy:function(x,y){var p=this.getXY();this.moveTo(p.x+x,p.y+y);},resizeTo:function(w,h){this.setStyles({width:w,height:h});},resizeBy:function(w,h){var s=this.getSize();this.resizeTo(s.w+w,s.h+h);},update:function(k){var t=this,b,dom=t.dom;if(tinymce.isIE6&&t.settings.blocker){k=k||'';if(k.indexOf('get')===0||k.indexOf('has')===0||k.indexOf('is')===0)return;if(k=='remove'){dom.remove(t.blocker);return;}if(!t.blocker){t.blocker=dom.uniqueId();b=dom.add(t.settings.container||dom.getRoot(),'iframe',{id:t.blocker,style:'position:absolute;',frameBorder:0,src:'javascript:""'});dom.setStyle(b,'opacity',0);}else b=dom.get(t.blocker);dom.setStyle(b,'left',t.getStyle('left',1));dom.setStyle(b,'top',t.getStyle('top',1));dom.setStyle(b,'width',t.getStyle('width',1));dom.setStyle(b,'height',t.getStyle('height',1));dom.setStyle(b,'display',t.getStyle('display',1));dom.setStyle(b,'zIndex',parseInt(t.getStyle('zIndex',1)||0)-1);}}});})();(function(){function trimNl(s){return s.replace(/[\n\r]+/g,'');};var is=tinymce.is,isIE=tinymce.isIE,each=tinymce.each;tinymce.create('tinymce.dom.Selection',{Selection:function(dom,win,serializer){var t=this;t.dom=dom;t.win=win;t.serializer=serializer;each(['onBeforeSetContent','onBeforeGetContent','onSetContent','onGetContent'],function(e){t[e]=new tinymce.util.Dispatcher(t);});tinymce.addUnload(t.destroy,t);},getContent:function(s){var t=this,r=t.getRng(),e=t.dom.create("body"),se=t.getSel(),wb,wa,n;s=s||{};wb=wa='';s.get=true;s.format=s.format||'html';t.onBeforeGetContent.dispatch(t,s);if(s.format=='text')return t.isCollapsed()?'':(r.text||(se.toString?se.toString():''));if(r.cloneContents){n=r.cloneContents();if(n)e.appendChild(n);}else if(is(r.item)||is(r.htmlText))e.innerHTML=r.item?r.item(0).outerHTML:r.htmlText;else e.innerHTML=r.toString();if(/^\s/.test(e.innerHTML))wb=' ';if(/\s+$/.test(e.innerHTML))wa=' ';s.getInner=true;s.content=t.isCollapsed()?'':wb+t.serializer.serialize(e,s)+wa;t.onGetContent.dispatch(t,s);return s.content;},setContent:function(h,s){var t=this,r=t.getRng(),c,d=t.win.document;s=s||{format:'html'};s.set=true;h=s.content=t.dom.processHTML(h);t.onBeforeSetContent.dispatch(t,s);h=s.content;if(r.insertNode){h+='<span id="__caret">_</span>';r.deleteContents();r.insertNode(t.getRng().createContextualFragment(h));c=t.dom.get('__caret');r=d.createRange();r.setStartBefore(c);r.setEndAfter(c);t.setRng(r);d.execCommand('Delete',false,null);t.dom.remove('__caret');}else{if(r.item){d.execCommand('Delete',false,null);r=t.getRng();}r.pasteHTML(h);}t.onSetContent.dispatch(t,s);},getStart:function(){var t=this,r=t.getRng(),e;if(isIE){if(r.item)return r.item(0);r=r.duplicate();r.collapse(1);e=r.parentElement();if(e&&e.nodeName=='BODY')return e.firstChild;return e;}else{e=r.startContainer;if(e.nodeName=='BODY')return e.firstChild;return t.dom.getParent(e,function(n){return n.nodeType==1;});}},getEnd:function(){var t=this,r=t.getRng(),e;if(isIE){if(r.item)return r.item(0);r=r.duplicate();r.collapse(0);e=r.parentElement();if(e&&e.nodeName=='BODY')return e.lastChild;return e;}else{e=r.endContainer;if(e.nodeName=='BODY')return e.lastChild;return t.dom.getParent(e,function(n){return n.nodeType==1;});}},getBookmark:function(si){var t=this,r=t.getRng(),tr,sx,sy,vp=t.dom.getViewPort(t.win),e,sp,bp,le,c=-0xFFFFFF,s,ro=t.dom.getRoot(),wb=0,wa=0,nv;sx=vp.x;sy=vp.y;if(si=='simple')return{rng:r,scrollX:sx,scrollY:sy};if(isIE){if(r.item){e=r.item(0);each(t.dom.select(e.nodeName),function(n,i){if(e==n){sp=i;return false;}});return{tag:e.nodeName,index:sp,scrollX:sx,scrollY:sy};}tr=t.dom.doc.body.createTextRange();tr.moveToElementText(ro);tr.collapse(true);bp=Math.abs(tr.move('character',c));tr=r.duplicate();tr.collapse(true);sp=Math.abs(tr.move('character',c));tr=r.duplicate();tr.collapse(false);le=Math.abs(tr.move('character',c))-sp;return{start:sp-bp,length:le,scrollX:sx,scrollY:sy};}e=t.getNode();s=t.getSel();if(!s)return null;if(e&&e.nodeName=='IMG'){return{scrollX:sx,scrollY:sy};}function getPos(r,sn,en){var w=t.dom.doc.createTreeWalker(r,NodeFilter.SHOW_TEXT,null,false),n,p=0,d={};while((n=w.nextNode())!=null){if(n==sn)d.start=p;if(n==en){d.end=p;return d;}p+=trimNl(n.nodeValue||'').length;}return null;};if(s.anchorNode==s.focusNode&&s.anchorOffset==s.focusOffset){e=getPos(ro,s.anchorNode,s.focusNode);if(!e)return{scrollX:sx,scrollY:sy};trimNl(s.anchorNode.nodeValue||'').replace(/^\s+/,function(a){wb=a.length;});return{start:Math.max(e.start+s.anchorOffset-wb,0),end:Math.max(e.end+s.focusOffset-wb,0),scrollX:sx,scrollY:sy,beg:s.anchorOffset-wb==0};}else{e=getPos(ro,r.startContainer,r.endContainer);if(!e)return{scrollX:sx,scrollY:sy};return{start:Math.max(e.start+r.startOffset-wb,0),end:Math.max(e.end+r.endOffset-wa,0),scrollX:sx,scrollY:sy,beg:r.startOffset-wb==0};}},moveToBookmark:function(b){var t=this,r=t.getRng(),s=t.getSel(),ro=t.dom.getRoot(),sd,nvl,nv;function getPos(r,sp,ep){var w=t.dom.doc.createTreeWalker(r,NodeFilter.SHOW_TEXT,null,false),n,p=0,d={},o,v,wa,wb;while((n=w.nextNode())!=null){wa=wb=0;nv=n.nodeValue||'';nvl=trimNl(nv).length;p+=nvl;if(p>=sp&&!d.startNode){o=sp-(p-nvl);if(b.beg&&o>=nvl)continue;d.startNode=n;d.startOffset=o+wb;}if(p>=ep){d.endNode=n;d.endOffset=ep-(p-nvl)+wb;return d;}}return null;};if(!b)return false;t.win.scrollTo(b.scrollX,b.scrollY);if(isIE){if(r=b.rng){try{r.select();}catch(ex){}return true;}t.win.focus();if(b.tag){r=ro.createControlRange();each(t.dom.select(b.tag),function(n,i){if(i==b.index)r.addElement(n);});}else{try{if(b.start<0)return true;r=s.createRange();r.moveToElementText(ro);r.collapse(true);r.moveStart('character',b.start);r.moveEnd('character',b.length);}catch(ex2){return true;}}try{r.select();}catch(ex){}return true;}if(!s)return false;if(b.rng){s.removeAllRanges();s.addRange(b.rng);}else{if(is(b.start)&&is(b.end)){try{sd=getPos(ro,b.start,b.end);if(sd){r=t.dom.doc.createRange();r.setStart(sd.startNode,sd.startOffset);r.setEnd(sd.endNode,sd.endOffset);s.removeAllRanges();s.addRange(r);}if(!tinymce.isOpera)t.win.focus();}catch(ex){}}}},select:function(n,c){var t=this,r=t.getRng(),s=t.getSel(),b,fn,ln,d=t.win.document;function first(n){return n?d.createTreeWalker(n,NodeFilter.SHOW_TEXT,null,false).nextNode():null;};function last(n){var c,o,w;if(!n)return null;w=d.createTreeWalker(n,NodeFilter.SHOW_TEXT,null,false);while(c=w.nextNode())o=c;return o;};if(isIE){try{b=d.body;if(/^(IMG|TABLE)$/.test(n.nodeName)){r=b.createControlRange();r.addElement(n);}else{r=b.createTextRange();r.moveToElementText(n);}r.select();}catch(ex){}}else{if(c){fn=first(n);ln=last(n);if(fn&&ln){r=d.createRange();r.setStart(fn,0);r.setEnd(ln,ln.nodeValue.length);}else r.selectNode(n);}else r.selectNode(n);t.setRng(r);}return n;},isCollapsed:function(){var t=this,r=t.getRng(),s=t.getSel();if(!r||r.item)return false;return!s||r.boundingWidth==0||r.collapsed;},collapse:function(b){var t=this,r=t.getRng(),n;if(r.item){n=r.item(0);r=this.win.document.body.createTextRange();r.moveToElementText(n);}r.collapse(!!b);t.setRng(r);},getSel:function(){var t=this,w=this.win;return w.getSelection?w.getSelection():w.document.selection;},getRng:function(){var t=this,s=t.getSel(),r;try{if(s)r=s.rangeCount>0?s.getRangeAt(0):(s.createRange?s.createRange():t.win.document.createRange());}catch(ex){}if(!r)r=isIE?t.win.document.body.createTextRange():t.win.document.createRange();return r;},setRng:function(r){var s;if(!isIE){s=this.getSel();if(s){s.removeAllRanges();s.addRange(r);}}else{try{r.select();}catch(ex){}}},setNode:function(n){var t=this;t.setContent(t.dom.getOuterHTML(n));return n;},getNode:function(){var t=this,r=t.getRng(),s=t.getSel(),e;if(!isIE){if(!r)return t.dom.getRoot();e=r.commonAncestorContainer;if(!r.collapsed){if(tinymce.isWebKit&&s.anchorNode&&s.anchorNode.nodeType==1)return s.anchorNode.childNodes[s.anchorOffset];if(r.startContainer==r.endContainer){if(r.startOffset-r.endOffset<2){if(r.startContainer.hasChildNodes())e=r.startContainer.childNodes[r.startOffset];}}}return t.dom.getParent(e,function(n){return n.nodeType==1;});}return r.item?r.item(0):r.parentElement();},destroy:function(s){var t=this;t.win=null;if(!s)tinymce.removeUnload(t.destroy);}});})();(function(){tinymce.create('tinymce.dom.XMLWriter',{node:null,XMLWriter:function(s){function getXML(){var i=document.implementation;if(!i||!i.createDocument){try{return new ActiveXObject('MSXML2.DOMDocument');}catch(ex){}try{return new ActiveXObject('Microsoft.XmlDom');}catch(ex){}}else return i.createDocument('','',null);};this.doc=getXML();this.valid=tinymce.isOpera||tinymce.isWebKit;this.reset();},reset:function(){var t=this,d=t.doc;if(d.firstChild)d.removeChild(d.firstChild);t.node=d.appendChild(d.createElement("html"));},writeStartElement:function(n){var t=this;t.node=t.node.appendChild(t.doc.createElement(n));},writeAttribute:function(n,v){if(this.valid)v=v.replace(/>/g,'%MCGT%');this.node.setAttribute(n,v);},writeEndElement:function(){this.node=this.node.parentNode;},writeFullEndElement:function(){var t=this,n=t.node;n.appendChild(t.doc.createTextNode(""));t.node=n.parentNode;},writeText:function(v){if(this.valid)v=v.replace(/>/g,'%MCGT%');this.node.appendChild(this.doc.createTextNode(v));},writeCDATA:function(v){this.node.appendChild(this.doc.createCDATA(v));},writeComment:function(v){if(tinymce.isIE)v=v.replace(/^\-|\-$/g,' ');this.node.appendChild(this.doc.createComment(v.replace(/\-\-/g,' ')));},getContent:function(){var h;h=this.doc.xml||new XMLSerializer().serializeToString(this.doc);h=h.replace(/<\?[^?]+\?>|<html>|<\/html>|<html\/>|<!DOCTYPE[^>]+>/g,'');h=h.replace(/ ?\/>/g,' />');if(this.valid)h=h.replace(/\%MCGT%/g,'&gt;');return h;}});})();(function(){tinymce.create('tinymce.dom.StringWriter',{str:null,tags:null,count:0,settings:null,indent:null,StringWriter:function(s){this.settings=tinymce.extend({indent_char:' ',indentation:1},s);this.reset();},reset:function(){this.indent='';this.str="";this.tags=[];this.count=0;},writeStartElement:function(n){this._writeAttributesEnd();this.writeRaw('<'+n);this.tags.push(n);this.inAttr=true;this.count++;this.elementCount=this.count;},writeAttribute:function(n,v){var t=this;t.writeRaw(" "+t.encode(n)+'="'+t.encode(v)+'"');},writeEndElement:function(){var n;if(this.tags.length>0){n=this.tags.pop();if(this._writeAttributesEnd(1))this.writeRaw('</'+n+'>');if(this.settings.indentation>0)this.writeRaw('\n');}},writeFullEndElement:function(){if(this.tags.length>0){this._writeAttributesEnd();this.writeRaw('</'+this.tags.pop()+'>');if(this.settings.indentation>0)this.writeRaw('\n');}},writeText:function(v){this._writeAttributesEnd();this.writeRaw(this.encode(v));this.count++;},writeCDATA:function(v){this._writeAttributesEnd();this.writeRaw('<![CDATA['+v+']]>');this.count++;},writeComment:function(v){this._writeAttributesEnd();this.writeRaw('<!-- '+v+'-->');this.count++;},writeRaw:function(v){this.str+=v;},encode:function(s){return s.replace(/[<>&"]/g,function(v){switch(v){case'<':return'&lt;';case'>':return'&gt;';case'&':return'&amp;';case'"':return'&quot;';}return v;});},getContent:function(){return this.str;},_writeAttributesEnd:function(s){if(!this.inAttr)return;this.inAttr=false;if(s&&this.elementCount==this.count){this.writeRaw(' />');return false;}this.writeRaw('>');return true;}});})();(function(){var extend=tinymce.extend,each=tinymce.each,Dispatcher=tinymce.util.Dispatcher,isIE=tinymce.isIE,isGecko=tinymce.isGecko;function getIEAtts(n){var o=[];if(n.nodeName=='OBJECT')return n.attributes;n.cloneNode(false).outerHTML.replace(/([a-z0-9\:\-_]+)=/gi,function(a,b){o.push({specified:1,nodeName:b});});return o;};function wildcardToRE(s){return s.replace(/([?+*])/g,'.$1');};tinymce.create('tinymce.dom.Serializer',{Serializer:function(s){var t=this;t.key=0;t.onPreProcess=new Dispatcher(t);t.onPostProcess=new Dispatcher(t);if(tinymce.relaxedDomain&&tinymce.isGecko){t.writer=new tinymce.dom.StringWriter();}else{try{t.writer=new tinymce.dom.XMLWriter();}catch(ex){t.writer=new tinymce.dom.StringWriter();}}t.settings=s=extend({dom:tinymce.DOM,valid_nodes:0,node_filter:0,attr_filter:0,invalid_attrs:/^(mce_|_moz_)/,closed:/(br|hr|input|meta|img|link|param)/,entity_encoding:'named',entities:'160,nbsp,161,iexcl,162,cent,163,pound,164,curren,165,yen,166,brvbar,167,sect,168,uml,169,copy,170,ordf,171,laquo,172,not,173,shy,174,reg,175,macr,176,deg,177,plusmn,178,sup2,179,sup3,180,acute,181,micro,182,para,183,middot,184,cedil,185,sup1,186,ordm,187,raquo,188,frac14,189,frac12,190,frac34,191,iquest,192,Agrave,193,Aacute,194,Acirc,195,Atilde,196,Auml,197,Aring,198,AElig,199,Ccedil,200,Egrave,201,Eacute,202,Ecirc,203,Euml,204,Igrave,205,Iacute,206,Icirc,207,Iuml,208,ETH,209,Ntilde,210,Ograve,211,Oacute,212,Ocirc,213,Otilde,214,Ouml,215,times,216,Oslash,217,Ugrave,218,Uacute,219,Ucirc,220,Uuml,221,Yacute,222,THORN,223,szlig,224,agrave,225,aacute,226,acirc,227,atilde,228,auml,229,aring,230,aelig,231,ccedil,232,egrave,233,eacute,234,ecirc,235,euml,236,igrave,237,iacute,238,icirc,239,iuml,240,eth,241,ntilde,242,ograve,243,oacute,244,ocirc,245,otilde,246,ouml,247,divide,248,oslash,249,ugrave,250,uacute,251,ucirc,252,uuml,253,yacute,254,thorn,255,yuml,402,fnof,913,Alpha,914,Beta,915,Gamma,916,Delta,917,Epsilon,918,Zeta,919,Eta,920,Theta,921,Iota,922,Kappa,923,Lambda,924,Mu,925,Nu,926,Xi,927,Omicron,928,Pi,929,Rho,931,Sigma,932,Tau,933,Upsilon,934,Phi,935,Chi,936,Psi,937,Omega,945,alpha,946,beta,947,gamma,948,delta,949,epsilon,950,zeta,951,eta,952,theta,953,iota,954,kappa,955,lambda,956,mu,957,nu,958,xi,959,omicron,960,pi,961,rho,962,sigmaf,963,sigma,964,tau,965,upsilon,966,phi,967,chi,968,psi,969,omega,977,thetasym,978,upsih,982,piv,8226,bull,8230,hellip,8242,prime,8243,Prime,8254,oline,8260,frasl,8472,weierp,8465,image,8476,real,8482,trade,8501,alefsym,8592,larr,8593,uarr,8594,rarr,8595,darr,8596,harr,8629,crarr,8656,lArr,8657,uArr,8658,rArr,8659,dArr,8660,hArr,8704,forall,8706,part,8707,exist,8709,empty,8711,nabla,8712,isin,8713,notin,8715,ni,8719,prod,8721,sum,8722,minus,8727,lowast,8730,radic,8733,prop,8734,infin,8736,ang,8743,and,8744,or,8745,cap,8746,cup,8747,int,8756,there4,8764,sim,8773,cong,8776,asymp,8800,ne,8801,equiv,8804,le,8805,ge,8834,sub,8835,sup,8836,nsub,8838,sube,8839,supe,8853,oplus,8855,otimes,8869,perp,8901,sdot,8968,lceil,8969,rceil,8970,lfloor,8971,rfloor,9001,lang,9002,rang,9674,loz,9824,spades,9827,clubs,9829,hearts,9830,diams,338,OElig,339,oelig,352,Scaron,353,scaron,376,Yuml,710,circ,732,tilde,8194,ensp,8195,emsp,8201,thinsp,8204,zwnj,8205,zwj,8206,lrm,8207,rlm,8211,ndash,8212,mdash,8216,lsquo,8217,rsquo,8218,sbquo,8220,ldquo,8221,rdquo,8222,bdquo,8224,dagger,8225,Dagger,8240,permil,8249,lsaquo,8250,rsaquo,8364,euro',bool_attrs:/(checked|disabled|readonly|selected|nowrap)/,valid_elements:'*[*]',extended_valid_elements:0,valid_child_elements:0,invalid_elements:0,fix_table_elements:0,fix_list_elements:true,fix_content_duplication:true,convert_fonts_to_spans:false,font_size_classes:0,font_size_style_values:0,apply_source_formatting:0,indent_mode:'simple',indent_char:'\t',indent_levels:1,remove_linebreaks:1,remove_redundant_brs:1,element_format:'xhtml'},s);t.dom=s.dom;if(s.remove_redundant_brs){t.onPostProcess.add(function(se,o){o.content=o.content.replace(/<br \/>(\s*<\/li>)/g,'$1');});}if(s.element_format=='html'){t.onPostProcess.add(function(se,o){o.content=o.content.replace(/<([^>]+) \/>/g,'<$1>');});}if(s.fix_list_elements){t.onPreProcess.add(function(se,o){var nl,x,a=['ol','ul'],i,n,p,r=/^(OL|UL)$/,np;function prevNode(e,n){var a=n.split(','),i;while((e=e.previousSibling)!=null){for(i=0;i<a.length;i++){if(e.nodeName==a[i])return e;}}return null;};for(x=0;x<a.length;x++){nl=t.dom.select(a[x],o.node);for(i=0;i<nl.length;i++){n=nl[i];p=n.parentNode;if(r.test(p.nodeName)){np=prevNode(n,'LI');if(!np){np=t.dom.create('li');np.innerHTML='&nbsp;';np.appendChild(n);p.insertBefore(np,p.firstChild);}else np.appendChild(n);}}}});}if(s.fix_table_elements){t.onPreProcess.add(function(se,o){each(t.dom.select('table',o.node),function(e){var pa=t.dom.getParent(e,'H1,H2,H3,H4,H5,H6,P'),pa2,n,tm,pl=[],i,ns;if(pa){pa2=pa.cloneNode(false);pl.push(e);for(n=e;n=n.parentNode;){pl.push(n);if(n==pa)break;}tm=pa2;for(i=pl.length-1;i>=0;i--){if(i==pl.length-1){while(ns=pl[i-1].nextSibling)tm.appendChild(ns.parentNode.removeChild(ns));}else{n=pl[i].cloneNode(false);if(i!=0){while(ns=pl[i-1].nextSibling)n.appendChild(ns.parentNode.removeChild(ns));}tm=tm.appendChild(n);}}e=t.dom.insertAfter(e.parentNode.removeChild(e),pa);t.dom.insertAfter(e,pa);t.dom.insertAfter(pa2,e);}});});}},setEntities:function(s){var t=this,a,i,l={},re='',v;if(t.entityLookup)return;a=s.split(',');for(i=0;i<a.length;i+=2){v=a[i];if(v==34||v==38||v==60||v==62)continue;l[String.fromCharCode(a[i])]=a[i+1];v=parseInt(a[i]).toString(16);re+='\\u'+'0000'.substring(v.length)+v;}if(!re){t.settings.entity_encoding='raw';return;}t.entitiesRE=new RegExp('['+re+']','g');t.entityLookup=l;},setValidChildRules:function(s){this.childRules=null;this.addValidChildRules(s);},addValidChildRules:function(s){var t=this,inst,intr,bloc;if(!s)return;inst='A|BR|SPAN|BDO|MAP|OBJECT|IMG|TT|I|B|BIG|SMALL|EM|STRONG|DFN|CODE|Q|SAMP|KBD|VAR|CITE|ABBR|ACRONYM|SUB|SUP|#text|#comment';intr='A|BR|SPAN|BDO|OBJECT|APPLET|IMG|MAP|IFRAME|TT|I|B|U|S|STRIKE|BIG|SMALL|FONT|BASEFONT|EM|STRONG|DFN|CODE|Q|SAMP|KBD|VAR|CITE|ABBR|ACRONYM|SUB|SUP|INPUT|SELECT|TEXTAREA|LABEL|BUTTON|#text|#comment';bloc='H[1-6]|P|DIV|ADDRESS|PRE|FORM|TABLE|LI|OL|UL|TD|CAPTION|BLOCKQUOTE|CENTER|DL|DT|DD|DIR|FIELDSET|FORM|NOSCRIPT|NOFRAMES|MENU|ISINDEX|SAMP';each(s.split(','),function(s){var p=s.split(/\[|\]/),re;s='';each(p[1].split('|'),function(v){if(s)s+='|';switch(v){case'%itrans':v=intr;break;case'%itrans_na':v=intr.substring(2);break;case'%istrict':v=inst;break;case'%istrict_na':v=inst.substring(2);break;case'%btrans':v=bloc;break;case'%bstrict':v=bloc;break;}s+=v;});re=new RegExp('^('+s.toLowerCase()+')$','i');each(p[0].split('/'),function(s){t.childRules=t.childRules||{};t.childRules[s]=re;});});s='';each(t.childRules,function(v,k){if(s)s+='|';s+=k;});t.parentElementsRE=new RegExp('^('+s.toLowerCase()+')$','i');},setRules:function(s){var t=this;t._setup();t.rules={};t.wildRules=[];t.validElements={};return t.addRules(s);},addRules:function(s){var t=this,dr;if(!s)return;t._setup();each(s.split(','),function(s){var p=s.split(/\[|\]/),tn=p[0].split('/'),ra,at,wat,va=[];if(dr)at=tinymce.extend([],dr.attribs);if(p.length>1){each(p[1].split('|'),function(s){var ar={},i;at=at||[];s=s.replace(/::/g,'~');s=/^([!\-])?([\w*.?~_\-]+|)([=:<])?(.+)?$/.exec(s);s[2]=s[2].replace(/~/g,':');if(s[1]=='!'){ra=ra||[];ra.push(s[2]);}if(s[1]=='-'){for(i=0;i<at.length;i++){if(at[i].name==s[2]){at.splice(i,1);return;}}}switch(s[3]){case'=':ar.defaultVal=s[4]||'';break;case':':ar.forcedVal=s[4];break;case'<':ar.validVals=s[4].split('?');break;}if(/[*.?]/.test(s[2])){wat=wat||[];ar.nameRE=new RegExp('^'+wildcardToRE(s[2])+'$');wat.push(ar);}else{ar.name=s[2];at.push(ar);}va.push(s[2]);});}each(tn,function(s,i){var pr=s.charAt(0),x=1,ru={};if(dr){if(dr.noEmpty)ru.noEmpty=dr.noEmpty;if(dr.fullEnd)ru.fullEnd=dr.fullEnd;if(dr.padd)ru.padd=dr.padd;}switch(pr){case'-':ru.noEmpty=true;break;case'+':ru.fullEnd=true;break;case'#':ru.padd=true;break;default:x=0;}tn[i]=s=s.substring(x);t.validElements[s]=1;if(/[*.?]/.test(tn[0])){ru.nameRE=new RegExp('^'+wildcardToRE(tn[0])+'$');t.wildRules=t.wildRules||{};t.wildRules.push(ru);}else{ru.name=tn[0];if(tn[0]=='@')dr=ru;t.rules[s]=ru;}ru.attribs=at;if(ra)ru.requiredAttribs=ra;if(wat){s='';each(va,function(v){if(s)s+='|';s+='('+wildcardToRE(v)+')';});ru.validAttribsRE=new RegExp('^'+s.toLowerCase()+'$');ru.wildAttribs=wat;}});});s='';each(t.validElements,function(v,k){if(s)s+='|';if(k!='@')s+=k;});t.validElementsRE=new RegExp('^('+wildcardToRE(s.toLowerCase())+')$');},findRule:function(n){var t=this,rl=t.rules,i,r;t._setup();r=rl[n];if(r)return r;rl=t.wildRules;for(i=0;i<rl.length;i++){if(rl[i].nameRE.test(n))return rl[i];}return null;},findAttribRule:function(ru,n){var i,wa=ru.wildAttribs;for(i=0;i<wa.length;i++){if(wa[i].nameRE.test(n))return wa[i];}return null;},serialize:function(n,o){var h,t=this;t._setup();o=o||{};o.format=o.format||'html';t.processObj=o;n=n.cloneNode(true);t.key=''+(parseInt(t.key)+1);if(!o.no_events){o.node=n;t.onPreProcess.dispatch(t,o);}t.writer.reset();t._serializeNode(n,o.getInner);o.content=t.writer.getContent();if(!o.no_events)t.onPostProcess.dispatch(t,o);t._postProcess(o);o.node=null;return tinymce.trim(o.content);},_postProcess:function(o){var t=this,s=t.settings,h=o.content,sc=[],p;if(o.format=='html'){p=t._protect({content:h,patterns:[{pattern:/(<script[^>]*>)(.*?)(<\/script>)/g},{pattern:/(<style[^>]*>)(.*?)(<\/style>)/g},{pattern:/(<pre[^>]*>)(.*?)(<\/pre>)/g,encode:1},{pattern:/(<!--\[CDATA\[)(.*?)(\]\]-->)/g}]});h=p.content;if(s.entity_encoding!=='raw')h=t._encode(h);if(!o.set){h=h.replace(/<p>\s+<\/p>|<p([^>]+)>\s+<\/p>/g,s.entity_encoding=='numeric'?'<p$1>&#160;</p>':'<p$1>&nbsp;</p>');if(s.remove_linebreaks){h=h.replace(/\r?\n|\r/g,' ');h=h.replace(/(<[^>]+>)\s+/g,'$1 ');h=h.replace(/\s+(<\/[^>]+>)/g,' $1');h=h.replace(/<(p|h[1-6]|blockquote|hr|div|table|tbody|tr|td|body|head|html|title|meta|style|pre|script|link|object) ([^>]+)>\s+/g,'<$1 $2>');h=h.replace(/<(p|h[1-6]|blockquote|hr|div|table|tbody|tr|td|body|head|html|title|meta|style|pre|script|link|object)>\s+/g,'<$1>');h=h.replace(/\s+<\/(p|h[1-6]|blockquote|hr|div|table|tbody|tr|td|body|head|html|title|meta|style|pre|script|link|object)>/g,'</$1>');}if(s.apply_source_formatting&&s.indent_mode=='simple'){h=h.replace(/<(\/?)(ul|hr|table|meta|link|tbody|tr|object|body|head|html|map)(|[^>]+)>\s*/g,'\n<$1$2$3>\n');h=h.replace(/\s*<(p|h[1-6]|blockquote|div|title|style|pre|script|td|li|area)(|[^>]+)>/g,'\n<$1$2>');h=h.replace(/<\/(p|h[1-6]|blockquote|div|title|style|pre|script|td|li)>\s*/g,'</$1>\n');h=h.replace(/\n\n/g,'\n');}}h=t._unprotect(h,p);h=h.replace(/<!--\[CDATA\[([\s\S]+)\]\]-->/g,'<![CDATA[$1]]>');if(s.entity_encoding=='raw')h=h.replace(/<p>&nbsp;<\/p>|<p([^>]+)>&nbsp;<\/p>/g,'<p$1>\u00a0</p>');}o.content=h;},_serializeNode:function(n,inn){var t=this,s=t.settings,w=t.writer,hc,el,cn,i,l,a,at,no,v,nn,ru,ar,iv;if(!s.node_filter||s.node_filter(n)){switch(n.nodeType){case 1:if(n.hasAttribute?n.hasAttribute('mce_bogus'):n.getAttribute('mce_bogus'))return;iv=false;hc=n.hasChildNodes();nn=n.getAttribute('mce_name')||n.nodeName.toLowerCase();if(isIE){if(n.scopeName!=='HTML'&&n.scopeName!=='html')nn=n.scopeName+':'+nn;}if(nn.indexOf('mce:')===0)nn=nn.substring(4);if(!t.validElementsRE.test(nn)||(t.invalidElementsRE&&t.invalidElementsRE.test(nn))||inn){iv=true;break;}if(isIE){if(s.fix_content_duplication){if(n.mce_serialized==t.key)return;n.mce_serialized=t.key;}if(nn.charAt(0)=='/')nn=nn.substring(1);}else if(isGecko){if(n.nodeName==='BR'&&n.getAttribute('type')=='_moz')return;}if(t.childRules){if(t.parentElementsRE.test(t.elementName)){if(!t.childRules[t.elementName].test(nn)){iv=true;break;}}t.elementName=nn;}ru=t.findRule(nn);nn=ru.name||nn;if((!hc&&ru.noEmpty)||(isIE&&!nn)){iv=true;break;}if(ru.requiredAttribs){a=ru.requiredAttribs;for(i=a.length-1;i>=0;i--){if(this.dom.getAttrib(n,a[i])!=='')break;}if(i==-1){iv=true;break;}}w.writeStartElement(nn);if(ru.attribs){for(i=0,at=ru.attribs,l=at.length;i<l;i++){a=at[i];v=t._getAttrib(n,a);if(v!==null)w.writeAttribute(a.name,v);}}if(ru.validAttribsRE){at=isIE?getIEAtts(n):n.attributes;for(i=at.length-1;i>-1;i--){no=at[i];if(no.specified){a=no.nodeName.toLowerCase();if(s.invalid_attrs.test(a)||!ru.validAttribsRE.test(a))continue;ar=t.findAttribRule(ru,a);v=t._getAttrib(n,ar,a);if(v!==null)w.writeAttribute(a,v);}}}if(ru.padd){if(hc&&(cn=n.firstChild)&&cn.nodeType===1&&n.childNodes.length===1){if(cn.hasAttribute?cn.hasAttribute('mce_bogus'):cn.getAttribute('mce_bogus'))w.writeText('\u00a0');}else if(!hc)w.writeText('\u00a0');}break;case 3:if(t.childRules&&t.parentElementsRE.test(t.elementName)){if(!t.childRules[t.elementName].test(n.nodeName))return;}return w.writeText(n.nodeValue);case 4:return w.writeCDATA(n.nodeValue);case 8:return w.writeComment(n.nodeValue);}}else if(n.nodeType==1)hc=n.hasChildNodes();if(hc){cn=n.firstChild;while(cn){t._serializeNode(cn);t.elementName=nn;cn=cn.nextSibling;}}if(!iv){if(hc||!s.closed.test(nn))w.writeFullEndElement();else w.writeEndElement();}},_protect:function(o){var t=this;o.items=o.items||[];function enc(s){return s.replace(/[\r\n\\]/g,function(c){if(c==='\n')return'\\n';else if(c==='\\')return'\\\\';return'\\r';});};function dec(s){return s.replace(/\\[\\rn]/g,function(c){if(c==='\\n')return'\n';else if(c==='\\\\')return'\\';return'\r';});};each(o.patterns,function(p){o.content=dec(enc(o.content).replace(p.pattern,function(x,a,b,c){b=dec(b);if(p.encode)b=t._encode(b);o.items.push(b);return a+'<!--mce:'+(o.items.length-1)+'-->'+c;}));});return o;},_unprotect:function(h,o){h=h.replace(/\<!--mce:([0-9]+)--\>/g,function(a,b){return o.items[parseInt(b)];});o.items=[];return h;},_encode:function(h){var t=this,s=t.settings,l;if(s.entity_encoding!=='raw'){if(s.entity_encoding.indexOf('named')!=-1){t.setEntities(s.entities);l=t.entityLookup;h=h.replace(t.entitiesRE,function(a){var v;if(v=l[a])a='&'+v+';';return a;});}if(s.entity_encoding.indexOf('numeric')!=-1){h=h.replace(/[\u007E-\uFFFF]/g,function(a){return'&#'+a.charCodeAt(0)+';';});}}return h;},_setup:function(){var t=this,s=this.settings;if(t.done)return;t.done=1;t.setRules(s.valid_elements);t.addRules(s.extended_valid_elements);t.addValidChildRules(s.valid_child_elements);if(s.invalid_elements)t.invalidElementsRE=new RegExp('^('+wildcardToRE(s.invalid_elements.replace(/,/g,'|').toLowerCase())+')$');if(s.attrib_value_filter)t.attribValueFilter=s.attribValueFilter;},_getAttrib:function(n,a,na){var i,v;na=na||a.name;if(a.forcedVal&&(v=a.forcedVal)){if(v==='{$uid}')return this.dom.uniqueId();return v;}v=this.dom.getAttrib(n,na);if(this.settings.bool_attrs.test(na)&&v){v=(''+v).toLowerCase();if(v==='false'||v==='0')return null;v=na;}switch(na){case'rowspan':case'colspan':if(v=='1')v='';break;}if(this.attribValueFilter)v=this.attribValueFilter(na,v,n);if(a.validVals){for(i=a.validVals.length-1;i>=0;i--){if(v==a.validVals[i])break;}if(i==-1)return null;}if(v===''&&typeof(a.defaultVal)!='undefined'){v=a.defaultVal;if(v==='{$uid}')return this.dom.uniqueId();return v;}else{if(na=='class'&&this.processObj.get)v=v.replace(/\s?mceItem\w+\s?/g,'');}if(v==='')return null;return v;}});})();(function(){var each=tinymce.each,Event=tinymce.dom.Event;tinymce.create('tinymce.dom.ScriptLoader',{ScriptLoader:function(s){this.settings=s||{};this.queue=[];this.lookup={};},isDone:function(u){return this.lookup[u]?this.lookup[u].state==2:0;},markDone:function(u){this.lookup[u]={state:2,url:u};},add:function(u,cb,s,pr){var t=this,lo=t.lookup,o;if(o=lo[u]){if(cb&&o.state==2)cb.call(s||this);return o;}o={state:0,url:u,func:cb,scope:s||this};if(pr)t.queue.unshift(o);else t.queue.push(o);lo[u]=o;return o;},load:function(u,cb,s){var t=this,o;if(o=t.lookup[u]){if(cb&&o.state==2)cb.call(s||t);return o;}function loadScript(u){if(Event.domLoaded||t.settings.strict_mode){tinymce.util.XHR.send({url:tinymce._addVer(u),error:t.settings.error,async:false,success:function(co){t.eval(co);}});}else document.write('<script type="text/javascript" src="'+tinymce._addVer(u)+'"></script>');};if(!tinymce.is(u,'string')){each(u,function(u){loadScript(u);});if(cb)cb.call(s||t);}else{loadScript(u);if(cb)cb.call(s||t);}},loadQueue:function(cb,s){var t=this;if(!t.queueLoading){t.queueLoading=1;t.queueCallbacks=[];t.loadScripts(t.queue,function(){t.queueLoading=0;if(cb)cb.call(s||t);each(t.queueCallbacks,function(o){o.func.call(o.scope);});});}else if(cb)t.queueCallbacks.push({func:cb,scope:s||t});},eval:function(co){var w=window;if(!w.execScript){try{eval.call(w,co);}catch(ex){eval(co,w);}}else w.execScript(co);},loadScripts:function(sc,cb,s){var t=this,lo=t.lookup;function done(o){o.state=2;if(o.func)o.func.call(o.scope||t);};function allDone(){var l;l=sc.length;each(sc,function(o){o=lo[o.url];if(o.state===2){done(o);l--;}else load(o);});if(l===0&&cb){cb.call(s||t);cb=0;}};function load(o){if(o.state>0)return;o.state=1;tinymce.dom.ScriptLoader.loadScript(o.url,function(){done(o);allDone();});};each(sc,function(o){var u=o.url;if(!lo[u]){lo[u]=o;t.queue.push(o);}else o=lo[u];if(o.state>0)return;if(!Event.domLoaded&&!t.settings.strict_mode){var ix,ol='';if(cb||o.func){o.state=1;ix=tinymce.dom.ScriptLoader._addOnLoad(function(){done(o);allDone();});if(tinymce.isIE)ol=' onreadystatechange="';else ol=' onload="';ol+='tinymce.dom.ScriptLoader._onLoad(this,\''+u+'\','+ix+');"';}document.write('<script type="text/javascript" src="'+tinymce._addVer(u)+'"'+ol+'></script>');if(!o.func)done(o);}else load(o);});allDone();},'static':{_addOnLoad:function(f){var t=this;t._funcs=t._funcs||[];t._funcs.push(f);return t._funcs.length-1;},_onLoad:function(e,u,ix){if(!tinymce.isIE||e.readyState=='complete')this._funcs[ix].call(this);},loadScript:function(u,cb){var id=tinymce.DOM.uniqueId(),e;function done(){Event.clear(id);tinymce.DOM.remove(id);if(cb){cb.call(document,u);cb=0;}};if(tinymce.isIE){tinymce.util.XHR.send({url:tinymce._addVer(u),async:false,success:function(co){window.execScript(co);done();}});}else{e=tinymce.DOM.create('script',{id:id,type:'text/javascript',src:tinymce._addVer(u)});Event.add(e,'load',done);(document.getElementsByTagName('head')[0]||document.body).appendChild(e);}}}});tinymce.ScriptLoader=new tinymce.dom.ScriptLoader();})();(function(){var DOM=tinymce.DOM,is=tinymce.is;tinymce.create('tinymce.ui.Control',{Control:function(id,s){this.id=id;this.settings=s=s||{};this.rendered=false;this.onRender=new tinymce.util.Dispatcher(this);this.classPrefix='';this.scope=s.scope||this;this.disabled=0;this.active=0;},setDisabled:function(s){var e;if(s!=this.disabled){e=DOM.get(this.id);if(e&&this.settings.unavailable_prefix){if(s){this.prevTitle=e.title;e.title=this.settings.unavailable_prefix+": "+e.title;}else e.title=this.prevTitle;}this.setState('Disabled',s);this.setState('Enabled',!s);this.disabled=s;}},isDisabled:function(){return this.disabled;},setActive:function(s){if(s!=this.active){this.setState('Active',s);this.active=s;}},isActive:function(){return this.active;},setState:function(c,s){var n=DOM.get(this.id);c=this.classPrefix+c;if(s)DOM.addClass(n,c);else DOM.removeClass(n,c);},isRendered:function(){return this.rendered;},renderHTML:function(){},renderTo:function(n){DOM.setHTML(n,this.renderHTML());},postRender:function(){var t=this,b;if(is(t.disabled)){b=t.disabled;t.disabled=-1;t.setDisabled(b);}if(is(t.active)){b=t.active;t.active=-1;t.setActive(b);}},remove:function(){DOM.remove(this.id);this.destroy();},destroy:function(){tinymce.dom.Event.clear(this.id);}});})();tinymce.create('tinymce.ui.Container:tinymce.ui.Control',{Container:function(id,s){this.parent(id,s);this.controls=[];this.lookup={};},add:function(c){this.lookup[c.id]=c;this.controls.push(c);return c;},get:function(n){return this.lookup[n];}});tinymce.create('tinymce.ui.Separator:tinymce.ui.Control',{Separator:function(id,s){this.parent(id,s);this.classPrefix='mceSeparator';},renderHTML:function(){return tinymce.DOM.createHTML('span',{'class':this.classPrefix});}});(function(){var is=tinymce.is,DOM=tinymce.DOM,each=tinymce.each,walk=tinymce.walk;tinymce.create('tinymce.ui.MenuItem:tinymce.ui.Control',{MenuItem:function(id,s){this.parent(id,s);this.classPrefix='mceMenuItem';},setSelected:function(s){this.setState('Selected',s);this.selected=s;},isSelected:function(){return this.selected;},postRender:function(){var t=this;t.parent();if(is(t.selected))t.setSelected(t.selected);}});})();(function(){var is=tinymce.is,DOM=tinymce.DOM,each=tinymce.each,walk=tinymce.walk;tinymce.create('tinymce.ui.Menu:tinymce.ui.MenuItem',{Menu:function(id,s){var t=this;t.parent(id,s);t.items={};t.collapsed=false;t.menuCount=0;t.onAddItem=new tinymce.util.Dispatcher(this);},expand:function(d){var t=this;if(d){walk(t,function(o){if(o.expand)o.expand();},'items',t);}t.collapsed=false;},collapse:function(d){var t=this;if(d){walk(t,function(o){if(o.collapse)o.collapse();},'items',t);}t.collapsed=true;},isCollapsed:function(){return this.collapsed;},add:function(o){if(!o.settings)o=new tinymce.ui.MenuItem(o.id||DOM.uniqueId(),o);this.onAddItem.dispatch(this,o);return this.items[o.id]=o;},addSeparator:function(){return this.add({separator:true});},addMenu:function(o){if(!o.collapse)o=this.createMenu(o);this.menuCount++;return this.add(o);},hasMenus:function(){return this.menuCount!==0;},remove:function(o){delete this.items[o.id];},removeAll:function(){var t=this;walk(t,function(o){if(o.removeAll)o.removeAll();else o.remove();o.destroy();},'items',t);t.items={};},createMenu:function(o){var m=new tinymce.ui.Menu(o.id||DOM.uniqueId(),o);m.onAddItem.add(this.onAddItem.dispatch,this.onAddItem);return m;}});})();(function(){var is=tinymce.is,DOM=tinymce.DOM,each=tinymce.each,Event=tinymce.dom.Event,Element=tinymce.dom.Element;tinymce.create('tinymce.ui.DropMenu:tinymce.ui.Menu',{DropMenu:function(id,s){s=s||{};s.container=s.container||DOM.doc.body;s.offset_x=s.offset_x||0;s.offset_y=s.offset_y||0;s.vp_offset_x=s.vp_offset_x||0;s.vp_offset_y=s.vp_offset_y||0;if(is(s.icons)&&!s.icons)s['class']+=' mceNoIcons';this.parent(id,s);this.onShowMenu=new tinymce.util.Dispatcher(this);this.onHideMenu=new tinymce.util.Dispatcher(this);this.classPrefix='mceMenu';},createMenu:function(s){var t=this,cs=t.settings,m;s.container=s.container||cs.container;s.parent=t;s.constrain=s.constrain||cs.constrain;s['class']=s['class']||cs['class'];s.vp_offset_x=s.vp_offset_x||cs.vp_offset_x;s.vp_offset_y=s.vp_offset_y||cs.vp_offset_y;m=new tinymce.ui.DropMenu(s.id||DOM.uniqueId(),s);m.onAddItem.add(t.onAddItem.dispatch,t.onAddItem);return m;},update:function(){var t=this,s=t.settings,tb=DOM.get('menu_'+t.id+'_tbl'),co=DOM.get('menu_'+t.id+'_co'),tw,th;tw=s.max_width?Math.min(tb.clientWidth,s.max_width):tb.clientWidth;th=s.max_height?Math.min(tb.clientHeight,s.max_height):tb.clientHeight;if(!DOM.boxModel)t.element.setStyles({width:tw+2,height:th+2});else t.element.setStyles({width:tw,height:th});if(s.max_width)DOM.setStyle(co,'width',tw);if(s.max_height){DOM.setStyle(co,'height',th);if(tb.clientHeight<s.max_height)DOM.setStyle(co,'overflow','hidden');}},showMenu:function(x,y,px){var t=this,s=t.settings,co,vp=DOM.getViewPort(),w,h,mx,my,ot=2,dm,tb,cp=t.classPrefix;t.collapse(1);if(t.isMenuVisible)return;if(!t.rendered){co=DOM.add(t.settings.container,t.renderNode());each(t.items,function(o){o.postRender();});t.element=new Element('menu_'+t.id,{blocker:1,container:s.container});}else co=DOM.get('menu_'+t.id);if(!tinymce.isOpera)DOM.setStyles(co,{left:-0xFFFF,top:-0xFFFF});DOM.show(co);t.update();x+=s.offset_x||0;y+=s.offset_y||0;vp.w-=4;vp.h-=4;if(s.constrain){w=co.clientWidth-ot;h=co.clientHeight-ot;mx=vp.x+vp.w;my=vp.y+vp.h;if((x+s.vp_offset_x+w)>mx)x=px?px-w:Math.max(0,(mx-s.vp_offset_x)-w);if((y+s.vp_offset_y+h)>my)y=Math.max(0,(my-s.vp_offset_y)-h);}DOM.setStyles(co,{left:x,top:y});t.element.update();t.isMenuVisible=1;t.mouseClickFunc=Event.add(co,'click',function(e){var m;e=e.target;if(e&&(e=DOM.getParent(e,'TR'))&&!DOM.hasClass(e,cp+'ItemSub')){m=t.items[e.id];if(m.isDisabled())return;dm=t;while(dm){if(dm.hideMenu)dm.hideMenu();dm=dm.settings.parent;}if(m.settings.onclick)m.settings.onclick(e);return Event.cancel(e);}});if(t.hasMenus()){t.mouseOverFunc=Event.add(co,'mouseover',function(e){var m,r,mi;e=e.target;if(e&&(e=DOM.getParent(e,'TR'))){m=t.items[e.id];if(t.lastMenu)t.lastMenu.collapse(1);if(m.isDisabled())return;if(e&&DOM.hasClass(e,cp+'ItemSub')){r=DOM.getRect(e);m.showMenu((r.x+r.w-ot),r.y-ot,r.x);t.lastMenu=m;DOM.addClass(DOM.get(m.id).firstChild,cp+'ItemActive');}}});}t.onShowMenu.dispatch(t);if(s.keyboard_focus){Event.add(co,'keydown',t._keyHandler,t);DOM.select('a','menu_'+t.id)[0].focus();t._focusIdx=0;}},hideMenu:function(c){var t=this,co=DOM.get('menu_'+t.id),e;if(!t.isMenuVisible)return;Event.remove(co,'mouseover',t.mouseOverFunc);Event.remove(co,'click',t.mouseClickFunc);Event.remove(co,'keydown',t._keyHandler);DOM.hide(co);t.isMenuVisible=0;if(!c)t.collapse(1);if(t.element)t.element.hide();if(e=DOM.get(t.id))DOM.removeClass(e.firstChild,t.classPrefix+'ItemActive');t.onHideMenu.dispatch(t);},add:function(o){var t=this,co;o=t.parent(o);if(t.isRendered&&(co=DOM.get('menu_'+t.id)))t._add(DOM.select('tbody',co)[0],o);return o;},collapse:function(d){this.parent(d);this.hideMenu(1);},remove:function(o){DOM.remove(o.id);this.destroy();return this.parent(o);},destroy:function(){var t=this,co=DOM.get('menu_'+t.id);Event.remove(co,'mouseover',t.mouseOverFunc);Event.remove(co,'click',t.mouseClickFunc);if(t.element)t.element.remove();DOM.remove(co);},renderNode:function(){var t=this,s=t.settings,n,tb,co,w;w=DOM.create('div',{id:'menu_'+t.id,'class':s['class'],'style':'position:absolute;left:0;top:0;z-index:200000'});co=DOM.add(w,'div',{id:'menu_'+t.id+'_co','class':t.classPrefix+(s['class']?' '+s['class']:'')});t.element=new Element('menu_'+t.id,{blocker:1,container:s.container});if(s.menu_line)DOM.add(co,'span',{'class':t.classPrefix+'Line'});n=DOM.add(co,'table',{id:'menu_'+t.id+'_tbl',border:0,cellPadding:0,cellSpacing:0});tb=DOM.add(n,'tbody');each(t.items,function(o){t._add(tb,o);});t.rendered=true;return w;},_keyHandler:function(e){var t=this,kc=e.keyCode;function focus(d){var i=t._focusIdx+d,e=DOM.select('a','menu_'+t.id)[i];if(e){t._focusIdx=i;e.focus();}};switch(kc){case 38:focus(-1);return;case 40:focus(1);return;case 13:return;case 27:return this.hideMenu();}},_add:function(tb,o){var n,s=o.settings,a,ro,it,cp=this.classPrefix,ic;if(s.separator){ro=DOM.add(tb,'tr',{id:o.id,'class':cp+'ItemSeparator'});DOM.add(ro,'td',{'class':cp+'ItemSeparator'});if(n=ro.previousSibling)DOM.addClass(n,'mceLast');return;}n=ro=DOM.add(tb,'tr',{id:o.id,'class':cp+'Item '+cp+'ItemEnabled'});n=it=DOM.add(n,'td');n=a=DOM.add(n,'a',{href:'javascript:;',onclick:"return false;",onmousedown:'return false;'});DOM.addClass(it,s['class']);ic=DOM.add(n,'span',{'class':'mceIcon'+(s.icon?' mce_'+s.icon:'')});if(s.icon_src)DOM.add(ic,'img',{src:s.icon_src});n=DOM.add(n,s.element||'span',{'class':'mceText',title:o.settings.title},o.settings.title);if(o.settings.style)DOM.setAttrib(n,'style',o.settings.style);if(tb.childNodes.length==1)DOM.addClass(ro,'mceFirst');if((n=ro.previousSibling)&&DOM.hasClass(n,cp+'ItemSeparator'))DOM.addClass(ro,'mceFirst');if(o.collapse)DOM.addClass(ro,cp+'ItemSub');if(n=ro.previousSibling)DOM.removeClass(n,'mceLast');DOM.addClass(ro,'mceLast');}});})();(function(){var DOM=tinymce.DOM;tinymce.create('tinymce.ui.Button:tinymce.ui.Control',{Button:function(id,s){this.parent(id,s);this.classPrefix='mceButton';},renderHTML:function(){var cp=this.classPrefix,s=this.settings,h,l;l=DOM.encode(s.label||'');h='<a id="'+this.id+'" href="javascript:;" class="'+cp+' '+cp+'Enabled '+s['class']+(l?' '+cp+'Labeled':'')+'" onmousedown="return false;" onclick="return false;" title="'+DOM.encode(s.title)+'">';if(s.image)h+='<img class="mceIcon" src="'+s.image+'" />'+l+'</a>';else h+='<span class="mceIcon '+s['class']+'"></span>'+(l?'<span class="'+cp+'Label">'+l+'</span>':'')+'</a>';return h;},postRender:function(){var t=this,s=t.settings;tinymce.dom.Event.add(t.id,'click',function(e){if(!t.isDisabled())return s.onclick.call(s.scope,e);});}});})();(function(){var DOM=tinymce.DOM,Event=tinymce.dom.Event,each=tinymce.each,Dispatcher=tinymce.util.Dispatcher;tinymce.create('tinymce.ui.ListBox:tinymce.ui.Control',{ListBox:function(id,s){var t=this;t.parent(id,s);t.items=[];t.onChange=new Dispatcher(t);t.onPostRender=new Dispatcher(t);t.onAdd=new Dispatcher(t);t.onRenderMenu=new tinymce.util.Dispatcher(this);t.classPrefix='mceListBox';},select:function(va){var t=this,fv,f;if(va==undefined)return t.selectByIndex(-1);if(va&&va.call)f=va;else{f=function(v){return v==va;};}if(va!=t.selectedValue){each(t.items,function(o,i){if(f(o.value)){fv=1;t.selectByIndex(i);return false;}});if(!fv)t.selectByIndex(-1);}},selectByIndex:function(idx){var t=this,e,o;if(idx!=t.selectedIndex){e=DOM.get(t.id+'_text');o=t.items[idx];if(o){t.selectedValue=o.value;t.selectedIndex=idx;DOM.setHTML(e,DOM.encode(o.title));DOM.removeClass(e,'mceTitle');}else{DOM.setHTML(e,DOM.encode(t.settings.title));DOM.addClass(e,'mceTitle');t.selectedValue=t.selectedIndex=null;}e=0;}else t.selectedValue=t.selectedIndex=null;},add:function(n,v,o){var t=this;o=o||{};o=tinymce.extend(o,{title:n,value:v});t.items.push(o);t.onAdd.dispatch(t,o);},getLength:function(){return this.items.length;},renderHTML:function(){var h='',t=this,s=t.settings,cp=t.classPrefix;h='<table id="'+t.id+'" cellpadding="0" cellspacing="0" class="'+cp+' '+cp+'Enabled'+(s['class']?(' '+s['class']):'')+'"><tbody><tr>';h+='<td>'+DOM.createHTML('a',{id:t.id+'_text',href:'javascript:;','class':'mceText',onclick:"return false;",onmousedown:'return false;'},DOM.encode(t.settings.title))+'</td>';h+='<td>'+DOM.createHTML('a',{id:t.id+'_open',tabindex:-1,href:'javascript:;','class':'mceOpen',onclick:"return false;",onmousedown:'return false;'},'<span></span>')+'</td>';h+='</tr></tbody></table>';return h;},showMenu:function(){var t=this,p1,p2,e=DOM.get(this.id),m;if(t.isDisabled()||t.items.length==0)return;if(t.menu&&t.menu.isMenuVisible)return t.hideMenu();if(!t.isMenuRendered){t.renderMenu();t.isMenuRendered=true;}p1=DOM.getPos(this.settings.menu_container);p2=DOM.getPos(e);m=t.menu;m.settings.offset_x=p2.x;m.settings.offset_y=p2.y;m.settings.keyboard_focus=!tinymce.isOpera;if(t.oldID)m.items[t.oldID].setSelected(0);each(t.items,function(o){if(o.value===t.selectedValue){m.items[o.id].setSelected(1);t.oldID=o.id;}});m.showMenu(0,e.clientHeight);Event.add(DOM.doc,'mousedown',t.hideMenu,t);DOM.addClass(t.id,t.classPrefix+'Selected');},hideMenu:function(e){var t=this;if(e&&e.type=="mousedown"&&(e.target.id==t.id+'_text'||e.target.id==t.id+'_open'))return;if(!e||!DOM.getParent(e.target,function(n){return DOM.hasClass(n,'mceMenu');})){DOM.removeClass(t.id,t.classPrefix+'Selected');Event.remove(DOM.doc,'mousedown',t.hideMenu,t);if(t.menu)t.menu.hideMenu();}},renderMenu:function(){var t=this,m;m=t.settings.control_manager.createDropMenu(t.id+'_menu',{menu_line:1,'class':t.classPrefix+'Menu mceNoIcons',max_width:150,max_height:150});m.onHideMenu.add(t.hideMenu,t);m.add({title:t.settings.title,'class':'mceMenuItemTitle',onclick:function(){if(t.settings.onselect('')!==false)t.select('');}});each(t.items,function(o){o.id=DOM.uniqueId();o.onclick=function(){if(t.settings.onselect(o.value)!==false)t.select(o.value);};m.add(o);});t.onRenderMenu.dispatch(t,m);t.menu=m;},postRender:function(){var t=this,cp=t.classPrefix;Event.add(t.id,'click',t.showMenu,t);Event.add(t.id+'_text','focus',function(e){if(!t._focused){t.keyDownHandler=Event.add(t.id+'_text','keydown',function(e){var idx=-1,v,kc=e.keyCode;each(t.items,function(v,i){if(t.selectedValue==v.value)idx=i;});if(kc==38)v=t.items[idx-1];else if(kc==40)v=t.items[idx+1];else if(kc==13){v=t.selectedValue;t.selectedValue=null;t.settings.onselect(v);return Event.cancel(e);}if(v){t.hideMenu();t.select(v.value);}});}t._focused=1;});Event.add(t.id+'_text','blur',function(){Event.remove(t.id+'_text','keydown',t.keyDownHandler);t._focused=0;});if(tinymce.isIE6||!DOM.boxModel){Event.add(t.id,'mouseover',function(){if(!DOM.hasClass(t.id,cp+'Disabled'))DOM.addClass(t.id,cp+'Hover');});Event.add(t.id,'mouseout',function(){if(!DOM.hasClass(t.id,cp+'Disabled'))DOM.removeClass(t.id,cp+'Hover');});}t.onPostRender.dispatch(t,DOM.get(t.id));},destroy:function(){this.parent();Event.clear(this.id+'_text');}});})();(function(){var DOM=tinymce.DOM,Event=tinymce.dom.Event,each=tinymce.each,Dispatcher=tinymce.util.Dispatcher;tinymce.create('tinymce.ui.NativeListBox:tinymce.ui.ListBox',{NativeListBox:function(id,s){this.parent(id,s);this.classPrefix='mceNativeListBox';},setDisabled:function(s){DOM.get(this.id).disabled=s;},isDisabled:function(){return DOM.get(this.id).disabled;},select:function(va){var t=this,fv,f;if(va==undefined)return t.selectByIndex(-1);if(va&&va.call)f=va;else{f=function(v){return v==va;};}if(va!=t.selectedValue){each(t.items,function(o,i){if(f(o.value)){fv=1;t.selectByIndex(i);return false;}});if(!fv)t.selectByIndex(-1);}},selectByIndex:function(idx){DOM.get(this.id).selectedIndex=idx+1;this.selectedValue=this.items[idx]?this.items[idx].value:null;},add:function(n,v,a){var o,t=this;a=a||{};a.value=v;if(t.isRendered())DOM.add(DOM.get(this.id),'option',a,n);o={title:n,value:v,attribs:a};t.items.push(o);t.onAdd.dispatch(t,o);},getLength:function(){return DOM.get(this.id).options.length-1;},renderHTML:function(){var h,t=this;h=DOM.createHTML('option',{value:''},'-- '+t.settings.title+' --');each(t.items,function(it){h+=DOM.createHTML('option',{value:it.value},it.title);});h=DOM.createHTML('select',{id:t.id,'class':'mceNativeListBox'},h);return h;},postRender:function(){var t=this,ch;t.rendered=true;function onChange(e){var v=t.items[e.target.selectedIndex-1];if(v&&(v=v.value)){t.onChange.dispatch(t,v);if(t.settings.onselect)t.settings.onselect(v);}};Event.add(t.id,'change',onChange);Event.add(t.id,'keydown',function(e){var bf;Event.remove(t.id,'change',ch);bf=Event.add(t.id,'blur',function(){Event.add(t.id,'change',onChange);Event.remove(t.id,'blur',bf);});if(e.keyCode==13||e.keyCode==32){onChange(e);return Event.cancel(e);}});t.onPostRender.dispatch(t,DOM.get(t.id));}});})();(function(){var DOM=tinymce.DOM,Event=tinymce.dom.Event,each=tinymce.each;tinymce.create('tinymce.ui.MenuButton:tinymce.ui.Button',{MenuButton:function(id,s){this.parent(id,s);this.onRenderMenu=new tinymce.util.Dispatcher(this);s.menu_container=s.menu_container||DOM.doc.body;},showMenu:function(){var t=this,p1,p2,e=DOM.get(t.id),m;if(t.isDisabled())return;if(!t.isMenuRendered){t.renderMenu();t.isMenuRendered=true;}if(t.isMenuVisible)return t.hideMenu();p1=DOM.getPos(t.settings.menu_container);p2=DOM.getPos(e);m=t.menu;m.settings.offset_x=p2.x;m.settings.offset_y=p2.y;m.settings.vp_offset_x=p2.x;m.settings.vp_offset_y=p2.y;m.settings.keyboard_focus=t._focused;m.showMenu(0,e.clientHeight);Event.add(DOM.doc,'mousedown',t.hideMenu,t);t.setState('Selected',1);t.isMenuVisible=1;},renderMenu:function(){var t=this,m;m=t.settings.control_manager.createDropMenu(t.id+'_menu',{menu_line:1,'class':this.classPrefix+'Menu',icons:t.settings.icons});m.onHideMenu.add(t.hideMenu,t);t.onRenderMenu.dispatch(t,m);t.menu=m;},hideMenu:function(e){var t=this;if(e&&e.type=="mousedown"&&DOM.getParent(e.target,function(e){return e.id===t.id||e.id===t.id+'_open';}))return;if(!e||!DOM.getParent(e.target,function(n){return DOM.hasClass(n,'mceMenu');})){t.setState('Selected',0);Event.remove(DOM.doc,'mousedown',t.hideMenu,t);if(t.menu)t.menu.hideMenu();}t.isMenuVisible=0;},postRender:function(){var t=this,s=t.settings;Event.add(t.id,'click',function(){if(!t.isDisabled()){if(s.onclick)s.onclick(t.value);t.showMenu();}});}});})();(function(){var DOM=tinymce.DOM,Event=tinymce.dom.Event,each=tinymce.each;tinymce.create('tinymce.ui.SplitButton:tinymce.ui.MenuButton',{SplitButton:function(id,s){this.parent(id,s);this.classPrefix='mceSplitButton';},renderHTML:function(){var h,t=this,s=t.settings,h1;h='<tbody><tr>';if(s.image)h1=DOM.createHTML('img ',{src:s.image,'class':'mceAction '+s['class']});else h1=DOM.createHTML('span',{'class':'mceAction '+s['class']},'');h+='<td>'+DOM.createHTML('a',{id:t.id+'_action',href:'javascript:;','class':'mceAction '+s['class'],onclick:"return false;",onmousedown:'return false;',title:s.title},h1)+'</td>';h1=DOM.createHTML('span',{'class':'mceOpen '+s['class']});h+='<td>'+DOM.createHTML('a',{id:t.id+'_open',href:'javascript:;','class':'mceOpen '+s['class'],onclick:"return false;",onmousedown:'return false;',title:s.title},h1)+'</td>';h+='</tr></tbody>';return DOM.createHTML('table',{id:t.id,'class':'mceSplitButton mceSplitButtonEnabled '+s['class'],cellpadding:'0',cellspacing:'0',onmousedown:'return false;',title:s.title},h);},postRender:function(){var t=this,s=t.settings;if(s.onclick){Event.add(t.id+'_action','click',function(){if(!t.isDisabled())s.onclick(t.value);});}Event.add(t.id+'_open','click',t.showMenu,t);Event.add(t.id+'_open','focus',function(){t._focused=1;});Event.add(t.id+'_open','blur',function(){t._focused=0;});if(tinymce.isIE6||!DOM.boxModel){Event.add(t.id,'mouseover',function(){if(!DOM.hasClass(t.id,'mceSplitButtonDisabled'))DOM.addClass(t.id,'mceSplitButtonHover');});Event.add(t.id,'mouseout',function(){if(!DOM.hasClass(t.id,'mceSplitButtonDisabled'))DOM.removeClass(t.id,'mceSplitButtonHover');});}},destroy:function(){this.parent();Event.clear(this.id+'_action');Event.clear(this.id+'_open');}});})();(function(){var DOM=tinymce.DOM,Event=tinymce.dom.Event,is=tinymce.is,each=tinymce.each;tinymce.create('tinymce.ui.ColorSplitButton:tinymce.ui.SplitButton',{ColorSplitButton:function(id,s){var t=this;t.parent(id,s);t.settings=s=tinymce.extend({colors:'000000,993300,333300,003300,003366,000080,333399,333333,800000,FF6600,808000,008000,008080,0000FF,666699,808080,FF0000,FF9900,99CC00,339966,33CCCC,3366FF,800080,999999,FF00FF,FFCC00,FFFF00,00FF00,00FFFF,00CCFF,993366,C0C0C0,FF99CC,FFCC99,FFFF99,CCFFCC,CCFFFF,99CCFF,CC99FF,FFFFFF',grid_width:8,default_color:'#888888'},t.settings);t.onShowMenu=new tinymce.util.Dispatcher(t);t.onHideMenu=new tinymce.util.Dispatcher(t);t.value=s.default_color;},showMenu:function(){var t=this,r,p,e,p2;if(t.isDisabled())return;if(!t.isMenuRendered){t.renderMenu();t.isMenuRendered=true;}if(t.isMenuVisible)return t.hideMenu();e=DOM.get(t.id);DOM.show(t.id+'_menu');DOM.addClass(e,'mceSplitButtonSelected');p2=DOM.getPos(e);DOM.setStyles(t.id+'_menu',{left:p2.x,top:p2.y+e.clientHeight,zIndex:200000});e=0;Event.add(DOM.doc,'mousedown',t.hideMenu,t);if(t._focused){t._keyHandler=Event.add(t.id+'_menu','keydown',function(e){if(e.keyCode==27)t.hideMenu();});DOM.select('a',t.id+'_menu')[0].focus();}t.onShowMenu.dispatch(t);t.isMenuVisible=1;},hideMenu:function(e){var t=this;if(e&&e.type=="mousedown"&&DOM.getParent(e.target,function(e){return e.id===t.id+'_open';}))return;if(!e||!DOM.getParent(e.target,function(n){return DOM.hasClass(n,'mceSplitButtonMenu');})){DOM.removeClass(t.id,'mceSplitButtonSelected');Event.remove(DOM.doc,'mousedown',t.hideMenu,t);Event.remove(t.id+'_menu','keydown',t._keyHandler);DOM.hide(t.id+'_menu');}t.onHideMenu.dispatch(t);t.isMenuVisible=0;},renderMenu:function(){var t=this,m,i=0,s=t.settings,n,tb,tr,w;w=DOM.add(s.menu_container,'div',{id:t.id+'_menu','class':s['menu_class']+' '+s['class'],style:'position:absolute;left:0;top:-1000px;'});m=DOM.add(w,'div',{'class':s['class']+' mceSplitButtonMenu'});DOM.add(m,'span',{'class':'mceMenuLine'});n=DOM.add(m,'table',{'class':'mceColorSplitMenu'});tb=DOM.add(n,'tbody');i=0;each(is(s.colors,'array')?s.colors:s.colors.split(','),function(c){c=c.replace(/^#/,'');if(!i--){tr=DOM.add(tb,'tr');i=s.grid_width-1;}n=DOM.add(tr,'td');n=DOM.add(n,'a',{href:'javascript:;',style:{backgroundColor:'#'+c},mce_color:'#'+c});});if(s.more_colors_func){n=DOM.add(tb,'tr');n=DOM.add(n,'td',{colspan:s.grid_width,'class':'mceMoreColors'});n=DOM.add(n,'a',{id:t.id+'_more',href:'javascript:;',onclick:'return false;','class':'mceMoreColors'},s.more_colors_title);Event.add(n,'click',function(e){s.more_colors_func.call(s.more_colors_scope||this);return Event.cancel(e);});}DOM.addClass(m,'mceColorSplitMenu');Event.add(t.id+'_menu','click',function(e){var c;e=e.target;if(e.nodeName=='A'&&(c=e.getAttribute('mce_color')))t.setColor(c);return Event.cancel(e);});return w;},setColor:function(c){var t=this;DOM.setStyle(t.id+'_preview','backgroundColor',c);t.value=c;t.hideMenu();t.settings.onselect(c);},postRender:function(){var t=this,id=t.id;t.parent();DOM.add(id+'_action','div',{id:id+'_preview','class':'mceColorPreview'});DOM.setStyle(t.id+'_preview','backgroundColor',t.value);},destroy:function(){this.parent();Event.clear(this.id+'_menu');Event.clear(this.id+'_more');DOM.remove(this.id+'_menu');}});})();tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container',{renderHTML:function(){var t=this,h='',c,co,dom=tinymce.DOM,s=t.settings,i,pr,nx,cl;cl=t.controls;for(i=0;i<cl.length;i++){co=cl[i];pr=cl[i-1];nx=cl[i+1];if(i===0){c='mceToolbarStart';if(co.Button)c+=' mceToolbarStartButton';else if(co.SplitButton)c+=' mceToolbarStartSplitButton';else if(co.ListBox)c+=' mceToolbarStartListBox';h+=dom.createHTML('td',{'class':c},dom.createHTML('span',null,'<!-- IE -->'));}if(pr&&co.ListBox){if(pr.Button||pr.SplitButton)h+=dom.createHTML('td',{'class':'mceToolbarEnd'},dom.createHTML('span',null,'<!-- IE -->'));}if(dom.stdMode)h+='<td style="position: relative">'+co.renderHTML()+'</td>';else h+='<td>'+co.renderHTML()+'</td>';if(nx&&co.ListBox){if(nx.Button||nx.SplitButton)h+=dom.createHTML('td',{'class':'mceToolbarStart'},dom.createHTML('span',null,'<!-- IE -->'));}}c='mceToolbarEnd';if(co.Button)c+=' mceToolbarEndButton';else if(co.SplitButton)c+=' mceToolbarEndSplitButton';else if(co.ListBox)c+=' mceToolbarEndListBox';h+=dom.createHTML('td',{'class':c},dom.createHTML('span',null,'<!-- IE -->'));return dom.createHTML('table',{id:t.id,'class':'mceToolbar'+(s['class']?' '+s['class']:''),cellpadding:'0',cellspacing:'0',align:t.settings.align||''},'<tbody><tr>'+h+'</tr></tbody>');}});(function(){var Dispatcher=tinymce.util.Dispatcher,each=tinymce.each;tinymce.create('tinymce.AddOnManager',{items:[],urls:{},lookup:{},onAdd:new Dispatcher(this),get:function(n){return this.lookup[n];},requireLangPack:function(n){var u,s=tinymce.EditorManager.settings;if(s&&s.language){u=this.urls[n]+'/langs/'+s.language+'.js';if(!tinymce.dom.Event.domLoaded&&!s.strict_mode)tinymce.ScriptLoader.load(u);else tinymce.ScriptLoader.add(u);}},add:function(id,o){this.items.push(o);this.lookup[id]=o;this.onAdd.dispatch(this,id,o);return o;},load:function(n,u,cb,s){var t=this;if(t.urls[n])return;if(u.indexOf('/')!=0&&u.indexOf('://')==-1)u=tinymce.baseURL+'/'+u;t.urls[n]=u.substring(0,u.lastIndexOf('/'));tinymce.ScriptLoader.add(u,cb,s);}});tinymce.PluginManager=new tinymce.AddOnManager();tinymce.ThemeManager=new tinymce.AddOnManager();}());(function(){var each=tinymce.each,extend=tinymce.extend,DOM=tinymce.DOM,Event=tinymce.dom.Event,ThemeManager=tinymce.ThemeManager,PluginManager=tinymce.PluginManager,explode=tinymce.explode;tinymce.create('static tinymce.EditorManager',{editors:{},i18n:{},activeEditor:null,preInit:function(){var t=this,lo=window.location;tinymce.documentBaseURL=lo.href.replace(/[\?#].*$/,'').replace(/[\/\\][^\/]+$/,'');if(!/[\/\\]$/.test(tinymce.documentBaseURL))tinymce.documentBaseURL+='/';tinymce.baseURL=new tinymce.util.URI(tinymce.documentBaseURL).toAbsolute(tinymce.baseURL);tinymce.EditorManager.baseURI=new tinymce.util.URI(tinymce.baseURL);if(document.domain&&lo.hostname!=document.domain)tinymce.relaxedDomain=document.domain;if(!tinymce.relaxedDomain&&tinymce.EditorManager.baseURI.host!=lo.hostname&&lo.hostname)document.domain=tinymce.relaxedDomain=lo.hostname.replace(/.*\.(.+\..+)$/,'$1');t.onBeforeUnload=new tinymce.util.Dispatcher(t);Event.add(window,'beforeunload',function(e){t.onBeforeUnload.dispatch(t,e);});},init:function(s){var t=this,pl,sl=tinymce.ScriptLoader,c,e,el=[],ed;function execCallback(se,n,s){var f=se[n];if(!f)return;if(tinymce.is(f,'string')){s=f.replace(/\.\w+$/,'');s=s?tinymce.resolve(s):0;f=tinymce.resolve(f);}return f.apply(s||this,Array.prototype.slice.call(arguments,2));};s=extend({theme:"simple",language:"en",strict_loading_mode:document.contentType=='application/xhtml+xml'},s);t.settings=s;if(!Event.domLoaded&&!s.strict_loading_mode){if(s.language)sl.add(tinymce.baseURL+'/langs/'+s.language+'.js');if(s.theme&&s.theme.charAt(0)!='-'&&!ThemeManager.urls[s.theme])ThemeManager.load(s.theme,'themes/'+s.theme+'/editor_template'+tinymce.suffix+'.js');if(s.plugins){pl=explode(s.plugins);if(tinymce.inArray(pl,'compat2x')!=-1)PluginManager.load('compat2x','plugins/compat2x/editor_plugin'+tinymce.suffix+'.js');each(pl,function(v){if(v&&v.charAt(0)!='-'&&!PluginManager.urls[v]){if(!tinymce.isWebKit&&v=='safari')return;PluginManager.load(v,'plugins/'+v+'/editor_plugin'+tinymce.suffix+'.js');}});}sl.loadQueue();}Event.add(document,'init',function(){var l,co;execCallback(s,'onpageload');if(s.browsers){l=false;each(explode(s.browsers),function(v){switch(v){case'ie':case'msie':if(tinymce.isIE)l=true;break;case'gecko':if(tinymce.isGecko)l=true;break;case'safari':case'webkit':if(tinymce.isWebKit)l=true;break;case'opera':if(tinymce.isOpera)l=true;break;}});if(!l)return;}switch(s.mode){case"exact":l=s.elements||'';if(l.length>0){each(explode(l),function(v){if(DOM.get(v)){ed=new tinymce.Editor(v,s);el.push(ed);ed.render(1);}else{c=0;each(document.forms,function(f){each(f.elements,function(e){if(e.name===v){v='mce_editor_'+c;DOM.setAttrib(e,'id',v);ed=new tinymce.Editor(v,s);el.push(ed);ed.render(1);}});});}});}break;case"textareas":case"specific_textareas":function hasClass(n,c){return c.constructor===RegExp?c.test(n.className):DOM.hasClass(n,c);};each(DOM.select('textarea'),function(v){if(s.editor_deselector&&hasClass(v,s.editor_deselector))return;if(!s.editor_selector||hasClass(v,s.editor_selector)){e=DOM.get(v.name);if(!v.id&&!e)v.id=v.name;if(!v.id||t.get(v.id))v.id=DOM.uniqueId();ed=new tinymce.Editor(v.id,s);el.push(ed);ed.render(1);}});break;}if(s.oninit){l=co=0;each(el,function(ed){co++;if(!ed.initialized){ed.onInit.add(function(){l++;if(l==co)execCallback(s,'oninit');});}else l++;if(l==co)execCallback(s,'oninit');});}});},get:function(id){return this.editors[id];},getInstanceById:function(id){return this.get(id);},add:function(e){this.editors[e.id]=e;this._setActive(e);return e;},remove:function(e){var t=this;if(!t.editors[e.id])return null;delete t.editors[e.id];if(t.activeEditor==e){each(t.editors,function(e){t._setActive(e);return false;});}e.destroy();return e;},execCommand:function(c,u,v){var t=this,ed=t.get(v),w;switch(c){case"mceFocus":ed.focus();return true;case"mceAddEditor":case"mceAddControl":if(!t.get(v))new tinymce.Editor(v,t.settings).render();return true;case"mceAddFrameControl":w=v.window;w.tinyMCE=tinyMCE;w.tinymce=tinymce;tinymce.DOM.doc=w.document;tinymce.DOM.win=w;ed=new tinymce.Editor(v.element_id,v);ed.render();if(tinymce.isIE){function clr(){ed.destroy();w.detachEvent('onunload',clr);w=w.tinyMCE=w.tinymce=null;};w.attachEvent('onunload',clr);}v.page_window=null;return true;case"mceRemoveEditor":case"mceRemoveControl":if(ed)ed.remove();return true;case'mceToggleEditor':if(!ed){t.execCommand('mceAddControl',0,v);return true;}if(ed.isHidden())ed.show();else ed.hide();return true;}if(t.activeEditor)return t.activeEditor.execCommand(c,u,v);return false;},execInstanceCommand:function(id,c,u,v){var ed=this.get(id);if(ed)return ed.execCommand(c,u,v);return false;},triggerSave:function(){each(this.editors,function(e){e.save();});},addI18n:function(p,o){var lo,i18n=this.i18n;if(!tinymce.is(p,'string')){each(p,function(o,lc){each(o,function(o,g){each(o,function(o,k){if(g==='common')i18n[lc+'.'+k]=o;else i18n[lc+'.'+g+'.'+k]=o;});});});}else{each(o,function(o,k){i18n[p+'.'+k]=o;});}},_setActive:function(e){this.selectedInstance=this.activeEditor=e;}});tinymce.EditorManager.preInit();})();var tinyMCE=window.tinyMCE=tinymce.EditorManager;(function(){var DOM=tinymce.DOM,Event=tinymce.dom.Event,extend=tinymce.extend,Dispatcher=tinymce.util.Dispatcher;var each=tinymce.each,isGecko=tinymce.isGecko,isIE=tinymce.isIE,isWebKit=tinymce.isWebKit;var is=tinymce.is,ThemeManager=tinymce.ThemeManager,PluginManager=tinymce.PluginManager,EditorManager=tinymce.EditorManager;var inArray=tinymce.inArray,grep=tinymce.grep,explode=tinymce.explode;tinymce.create('tinymce.Editor',{Editor:function(id,s){var t=this;t.id=t.editorId=id;t.execCommands={};t.queryStateCommands={};t.queryValueCommands={};t.plugins={};each(['onPreInit','onBeforeRenderUI','onPostRender','onInit','onRemove','onActivate','onDeactivate','onClick','onEvent','onMouseUp','onMouseDown','onDblClick','onKeyDown','onKeyUp','onKeyPress','onContextMenu','onSubmit','onReset','onPaste','onPreProcess','onPostProcess','onBeforeSetContent','onBeforeGetContent','onSetContent','onGetContent','onLoadContent','onSaveContent','onNodeChange','onChange','onBeforeExecCommand','onExecCommand','onUndo','onRedo','onVisualAid','onSetProgressState'],function(e){t[e]=new Dispatcher(t);});t.settings=s=extend({id:id,language:'en',docs_language:'en',theme:'simple',skin:'default',delta_width:0,delta_height:0,popup_css:'',plugins:'',document_base_url:tinymce.documentBaseURL,add_form_submit_trigger:1,submit_patch:1,add_unload_trigger:1,convert_urls:1,relative_urls:1,remove_script_host:1,table_inline_editing:0,object_resizing:1,cleanup:1,accessibility_focus:1,custom_shortcuts:1,custom_undo_redo_keyboard_shortcuts:1,custom_undo_redo_restore_selection:1,custom_undo_redo:1,doctype:'<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">',visual_table_class:'mceItemTable',visual:1,inline_styles:true,convert_fonts_to_spans:true,font_size_style_values:'xx-small,x-small,small,medium,large,x-large,xx-large',apply_source_formatting:1,directionality:'ltr',forced_root_block:'p',valid_elements:'@[id|class|style|title|dir<ltr?rtl|lang|xml::lang|onclick|ondblclick|onmousedown|onmouseup|onmouseover|onmousemove|onmouseout|onkeypress|onkeydown|onkeyup],a[rel|rev|charset|hreflang|tabindex|accesskey|type|name|href|target|title|class|onfocus|onblur],strong/b,em/i,strike,u,#p[align],-ol[type|compact],-ul[type|compact],-li,br,img[longdesc|usemap|src|border|alt=|title|hspace|vspace|width|height|align],-sub,-sup,-blockquote[cite],-table[border=0|cellspacing|cellpadding|width|frame|rules|height|align|summary|bgcolor|background|bordercolor],-tr[rowspan|width|height|align|valign|bgcolor|background|bordercolor],tbody,thead,tfoot,#td[colspan|rowspan|width|height|align|valign|bgcolor|background|bordercolor|scope],#th[colspan|rowspan|width|height|align|valign|scope],caption,-div,-span,-code,-pre,address,-h1,-h2,-h3,-h4,-h5,-h6,hr[size|noshade],-font[face|size|color],dd,dl,dt,cite,abbr,acronym,del[datetime|cite],ins[datetime|cite],object[classid|width|height|codebase|*],param[name|value],embed[type|width|height|src|*],script[src|type],map[name],area[shape|coords|href|alt|target],bdo,button,col[align|char|charoff|span|valign|width],colgroup[align|char|charoff|span|valign|width],dfn,fieldset,form[action|accept|accept-charset|enctype|method],input[accept|alt|checked|disabled|maxlength|name|readonly|size|src|type|value|tabindex|accesskey],kbd,label[for],legend,noscript,optgroup[label|disabled],option[disabled|label|selected|value],q[cite],samp,select[disabled|multiple|name|size],small,textarea[cols|rows|disabled|name|readonly],tt,var,big',hidden_input:1,padd_empty_editor:1,render_ui:1,init_theme:1,force_p_newlines:1,indentation:'30px',keep_styles:1},s);t.documentBaseURI=new tinymce.util.URI(s.document_base_url||tinymce.documentBaseURL,{base_uri:tinyMCE.baseURI});t.baseURI=EditorManager.baseURI;t.execCallback('setup',t);},render:function(nst){var t=this,s=t.settings,id=t.id,sl=tinymce.ScriptLoader;if(!Event.domLoaded){Event.add(document,'init',function(){t.render();});return;}if(!nst){s.strict_loading_mode=1;tinyMCE.settings=s;}if(!t.getElement())return;if(s.strict_loading_mode){sl.settings.strict_mode=s.strict_loading_mode;tinymce.DOM.settings.strict=1;}if(!/TEXTAREA|INPUT/i.test(t.getElement().nodeName)&&s.hidden_input&&DOM.getParent(id,'form'))DOM.insertAfter(DOM.create('input',{type:'hidden',name:id}),id);t.windowManager=new tinymce.WindowManager(t);if(s.encoding=='xml'){t.onGetContent.add(function(ed,o){if(o.save)o.content=DOM.encode(o.content);});}if(s.add_form_submit_trigger){t.onSubmit.addToTop(function(){if(t.initialized){t.save();t.isNotDirty=1;}});}if(s.add_unload_trigger&&!s.ask){t._beforeUnload=tinyMCE.onBeforeUnload.add(function(){if(t.initialized&&!t.destroyed&&!t.isHidden())t.save({format:'raw',no_events:true});});}tinymce.addUnload(t.destroy,t);if(s.submit_patch){t.onBeforeRenderUI.add(function(){var n=t.getElement().form;if(!n)return;if(n._mceOldSubmit)return;if(!n.submit.nodeType&&!n.submit.length){t.formElement=n;n._mceOldSubmit=n.submit;n.submit=function(){EditorManager.triggerSave();t.isNotDirty=1;return this._mceOldSubmit(this);};}n=null;});}function loadScripts(){if(s.language)sl.add(tinymce.baseURL+'/langs/'+s.language+'.js');if(s.theme.charAt(0)!='-'&&!ThemeManager.urls[s.theme])ThemeManager.load(s.theme,'themes/'+s.theme+'/editor_template'+tinymce.suffix+'.js');each(explode(s.plugins),function(p){if(p&&p.charAt(0)!='-'&&!PluginManager.urls[p]){if(!isWebKit&&p=='safari')return;PluginManager.load(p,'plugins/'+p+'/editor_plugin'+tinymce.suffix+'.js');}});sl.loadQueue(function(){if(s.ask){function ask(){window.setTimeout(function(){Event.remove(t.id,'focus',ask);t.windowManager.confirm(t.getLang('edit_confirm'),function(s){if(s)t.init();});},0);};Event.add(t.id,'focus',ask);return;}if(!t.removed)t.init();});};if(s.plugins.indexOf('compat2x')!=-1){PluginManager.load('compat2x','plugins/compat2x/editor_plugin'+tinymce.suffix+'.js');sl.loadQueue(loadScripts);}else loadScripts();},init:function(){var n,t=this,s=t.settings,w,h,e=t.getElement(),o,ti,u,bi,bc,re;EditorManager.add(t);s.theme=s.theme.replace(/-/,'');o=ThemeManager.get(s.theme);t.theme=new o();if(t.theme.init&&s.init_theme)t.theme.init(t,ThemeManager.urls[s.theme]||tinymce.documentBaseURL.replace(/\/$/,''));each(explode(s.plugins.replace(/\-/g,'')),function(p){var c=PluginManager.get(p),u=PluginManager.urls[p]||tinymce.documentBaseURL.replace(/\/$/,''),po;if(c){po=new c(t,u);t.plugins[p]=po;if(po.init)po.init(t,u);}});if(s.popup_css!==false){if(s.popup_css)s.popup_css=t.documentBaseURI.toAbsolute(s.popup_css);else s.popup_css=t.baseURI.toAbsolute("themes/"+s.theme+"/skins/"+s.skin+"/dialog.css");}if(s.popup_css_add)s.popup_css+=','+t.documentBaseURI.toAbsolute(s.popup_css_add);t.controlManager=new tinymce.ControlManager(t);t.undoManager=new tinymce.UndoManager(t);t.undoManager.onAdd.add(function(um,l){if(!l.initial)return t.onChange.dispatch(t,l,um);});t.undoManager.onUndo.add(function(um,l){return t.onUndo.dispatch(t,l,um);});t.undoManager.onRedo.add(function(um,l){return t.onRedo.dispatch(t,l,um);});if(s.custom_undo_redo){t.onExecCommand.add(function(ed,cmd,ui,val,a){if(cmd!='Undo'&&cmd!='Redo'&&cmd!='mceRepaint'&&(!a||!a.skip_undo))t.undoManager.add();});}t.onExecCommand.add(function(ed,c){if(!/^(FontName|FontSize)$/.test(c))t.nodeChanged();});if(isGecko){function repaint(a,o){if(!o||!o.initial)t.execCommand('mceRepaint');};t.onUndo.add(repaint);t.onRedo.add(repaint);t.onSetContent.add(repaint);}t.onBeforeRenderUI.dispatch(t,t.controlManager);if(s.render_ui){w=s.width||e.style.width||e.offsetWidth;h=s.height||e.style.height||e.offsetHeight;t.orgDisplay=e.style.display;re=/^[0-9\.]+(|px)$/i;if(re.test(''+w))w=Math.max(parseInt(w)+(o.deltaWidth||0),100);if(re.test(''+h))h=Math.max(parseInt(h)+(o.deltaHeight||0),100);o=t.theme.renderUI({targetNode:e,width:w,height:h,deltaWidth:s.delta_width,deltaHeight:s.delta_height});t.editorContainer=o.editorContainer;}DOM.setStyles(o.sizeContainer||o.editorContainer,{width:w,height:h});h=(o.iframeHeight||h)+(typeof(h)=='number'?(o.deltaHeight||0):'');if(h<100)h=100;t.iframeHTML=s.doctype+'<html><head xmlns="http://www.w3.org/1999/xhtml"><base href="'+t.documentBaseURI.getURI()+'" />';t.iframeHTML+='<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />';if(tinymce.relaxedDomain)t.iframeHTML+='<script type="text/javascript">document.domain = "'+tinymce.relaxedDomain+'";</script>';bi=s.body_id||'tinymce';if(bi.indexOf('=')!=-1){bi=t.getParam('body_id','','hash');bi=bi[t.id]||bi;}bc=s.body_class||'';if(bc.indexOf('=')!=-1){bc=t.getParam('body_class','','hash');bc=bc[t.id]||'';}t.iframeHTML+='</head><body id="'+bi+'" class="mceContentBody '+bc+'"></body></html>';if(tinymce.relaxedDomain){if(isIE||(tinymce.isOpera&&parseFloat(opera.version())>=9.5))u='javascript:(function(){document.open();document.domain="'+document.domain+'";var ed = window.parent.tinyMCE.get("'+t.id+'");document.write(ed.iframeHTML);document.close();ed.setupIframe();})()';else if(tinymce.isOpera)u='javascript:(function(){document.open();document.domain="'+document.domain+'";document.close();ed.setupIframe();})()';}n=DOM.add(o.iframeContainer,'iframe',{id:t.id+"_ifr",src:u||'javascript:""',frameBorder:'0',style:{width:'100%',height:h}});t.contentAreaContainer=o.iframeContainer;DOM.get(o.editorContainer).style.display=t.orgDisplay;DOM.get(t.id).style.display='none';if(tinymce.isOldWebKit){Event.add(n,'load',t.setupIframe,t);n.src=tinymce.baseURL+'/plugins/safari/blank.htm';}else{if(!isIE||!tinymce.relaxedDomain)t.setupIframe();e=n=o=null;}},setupIframe:function(){var t=this,s=t.settings,e=DOM.get(t.id),d=t.getDoc(),h,b;if(!isIE||!tinymce.relaxedDomain){d.open();d.write(t.iframeHTML);d.close();}if(!isIE){try{if(!s.readonly)d.designMode='On';}catch(ex){}}if(isIE){b=t.getBody();DOM.hide(b);if(!s.readonly)b.contentEditable=true;DOM.show(b);}t.dom=new tinymce.DOM.DOMUtils(t.getDoc(),{keep_values:true,url_converter:t.convertURL,url_converter_scope:t,hex_colors:s.force_hex_style_colors,class_filter:s.class_filter,update_styles:1,fix_ie_paragraphs:1});t.serializer=new tinymce.dom.Serializer({entity_encoding:s.entity_encoding,entities:s.entities,valid_elements:s.verify_html===false?'*[*]':s.valid_elements,extended_valid_elements:s.extended_valid_elements,valid_child_elements:s.valid_child_elements,invalid_elements:s.invalid_elements,fix_table_elements:s.fix_table_elements,fix_list_elements:s.fix_list_elements,fix_content_duplication:s.fix_content_duplication,convert_fonts_to_spans:s.convert_fonts_to_spans,font_size_classes:s.font_size_classes,font_size_style_values:s.font_size_style_values,apply_source_formatting:s.apply_source_formatting,remove_linebreaks:s.remove_linebreaks,element_format:s.element_format,dom:t.dom});t.selection=new tinymce.dom.Selection(t.dom,t.getWin(),t.serializer);t.forceBlocks=new tinymce.ForceBlocks(t,{forced_root_block:s.forced_root_block});t.editorCommands=new tinymce.EditorCommands(t);t.serializer.onPreProcess.add(function(se,o){return t.onPreProcess.dispatch(t,o,se);});t.serializer.onPostProcess.add(function(se,o){return t.onPostProcess.dispatch(t,o,se);});t.onPreInit.dispatch(t);if(!s.gecko_spellcheck)t.getBody().spellcheck=0;if(!s.readonly)t._addEvents();t.controlManager.onPostRender.dispatch(t,t.controlManager);t.onPostRender.dispatch(t);if(s.directionality)t.getBody().dir=s.directionality;if(s.nowrap)t.getBody().style.whiteSpace="nowrap";if(s.auto_resize)t.onNodeChange.add(t.resizeToContent,t);if(s.custom_elements){function handleCustom(ed,o){each(explode(s.custom_elements),function(v){var n;if(v.indexOf('~')===0){v=v.substring(1);n='span';}else n='div';o.content=o.content.replace(new RegExp('<('+v+')([^>]*)>','g'),'<'+n+' mce_name="$1"$2>');o.content=o.content.replace(new RegExp('</('+v+')>','g'),'</'+n+'>');});};t.onBeforeSetContent.add(handleCustom);t.onPostProcess.add(function(ed,o){if(o.set)handleCustom(ed,o)});}if(s.handle_node_change_callback){t.onNodeChange.add(function(ed,cm,n){t.execCallback('handle_node_change_callback',t.id,n,-1,-1,true,t.selection.isCollapsed());});}if(s.save_callback){t.onSaveContent.add(function(ed,o){var h=t.execCallback('save_callback',t.id,o.content,t.getBody());if(h)o.content=h;});}if(s.onchange_callback){t.onChange.add(function(ed,l){t.execCallback('onchange_callback',t,l);});}if(s.convert_newlines_to_brs){t.onBeforeSetContent.add(function(ed,o){if(o.initial)o.content=o.content.replace(/\r?\n/g,'<br />');});}if(s.fix_nesting&&isIE){t.onBeforeSetContent.add(function(ed,o){o.content=t._fixNesting(o.content);});}if(s.preformatted){t.onPostProcess.add(function(ed,o){o.content=o.content.replace(/^\s*<pre.*?>/,'');o.content=o.content.replace(/<\/pre>\s*$/,'');if(o.set)o.content='<pre class="mceItemHidden">'+o.content+'</pre>';});}if(s.verify_css_classes){t.serializer.attribValueFilter=function(n,v){var s,cl;if(n=='class'){if(!t.classesRE){cl=t.dom.getClasses();if(cl.length>0){s='';each(cl,function(o){s+=(s?'|':'')+o['class'];});t.classesRE=new RegExp('('+s+')','gi');}}return!t.classesRE||/(\bmceItem\w+\b|\bmceTemp\w+\b)/g.test(v)||t.classesRE.test(v)?v:'';}return v;};}if(s.convert_fonts_to_spans)t._convertFonts();if(s.inline_styles)t._convertInlineElements();if(s.cleanup_callback){t.onBeforeSetContent.add(function(ed,o){o.content=t.execCallback('cleanup_callback','insert_to_editor',o.content,o);});t.onPreProcess.add(function(ed,o){if(o.set)t.execCallback('cleanup_callback','insert_to_editor_dom',o.node,o);if(o.get)t.execCallback('cleanup_callback','get_from_editor_dom',o.node,o);});t.onPostProcess.add(function(ed,o){if(o.set)o.content=t.execCallback('cleanup_callback','insert_to_editor',o.content,o);if(o.get)o.content=t.execCallback('cleanup_callback','get_from_editor',o.content,o);});}if(s.save_callback){t.onGetContent.add(function(ed,o){if(o.save)o.content=t.execCallback('save_callback',t.id,o.content,t.getBody());});}if(s.handle_event_callback){t.onEvent.add(function(ed,e,o){if(t.execCallback('handle_event_callback',e,ed,o)===false)Event.cancel(e);});}t.onSetContent.add(function(){t.addVisual(t.getBody());});if(s.padd_empty_editor){t.onPostProcess.add(function(ed,o){o.content=o.content.replace(/^(<p[^>]*>(&nbsp;|&#160;|\s|\u00a0|)<\/p>[\r\n]*|<br \/>[\r\n]*)$/,'');});}if(isGecko&&!s.readonly){try{d.designMode='Off';d.designMode='On';}catch(ex){}}setTimeout(function(){if(t.removed)return;t.load({initial:true,format:(s.cleanup_on_startup?'html':'raw')});t.startContent=t.getContent({format:'raw'});t.undoManager.add({initial:true});t.initialized=true;t.onInit.dispatch(t);t.execCallback('setupcontent_callback',t.id,t.getBody(),t.getDoc());t.execCallback('init_instance_callback',t);t.focus(true);t.nodeChanged({initial:1});if(s.content_css){tinymce.each(explode(s.content_css),function(u){t.dom.loadCSS(t.documentBaseURI.toAbsolute(u));});}if(s.auto_focus){setTimeout(function(){var ed=EditorManager.get(s.auto_focus);ed.selection.select(ed.getBody(),1);ed.selection.collapse(1);ed.getWin().focus();},100);}},1);e=null;},focus:function(sf){var oed,t=this,ce=t.settings.content_editable;if(!sf){if(!ce&&(!isIE||t.selection.getNode().ownerDocument!=t.getDoc()))t.getWin().focus();}if(EditorManager.activeEditor!=t){if((oed=EditorManager.activeEditor)!=null)oed.onDeactivate.dispatch(oed,t);t.onActivate.dispatch(t,oed);}EditorManager._setActive(t);},execCallback:function(n){var t=this,f=t.settings[n],s;if(!f)return;if(t.callbackLookup&&(s=t.callbackLookup[n])){f=s.func;s=s.scope;}if(is(f,'string')){s=f.replace(/\.\w+$/,'');s=s?tinymce.resolve(s):0;f=tinymce.resolve(f);t.callbackLookup=t.callbackLookup||{};t.callbackLookup[n]={func:f,scope:s};}return f.apply(s||t,Array.prototype.slice.call(arguments,1));},translate:function(s){var c=this.settings.language||'en',i18n=EditorManager.i18n;if(!s)return'';return i18n[c+'.'+s]||s.replace(/{\#([^}]+)\}/g,function(a,b){return i18n[c+'.'+b]||'{#'+b+'}';});},getLang:function(n,dv){return EditorManager.i18n[(this.settings.language||'en')+'.'+n]||(is(dv)?dv:'{#'+n+'}');},getParam:function(n,dv,ty){var tr=tinymce.trim,v=is(this.settings[n])?this.settings[n]:dv,o;if(ty==='hash'){o={};if(is(v,'string')){each(v.indexOf('=')>0?v.split(/[;,](?![^=;,]*(?:[;,]|$))/):v.split(','),function(v){v=v.split('=');if(v.length>1)o[tr(v[0])]=tr(v[1]);else o[tr(v[0])]=tr(v);});}else o=v;return o;}return v;},nodeChanged:function(o){var t=this,s=t.selection,n=s.getNode()||t.getBody();if(t.initialized){t.onNodeChange.dispatch(t,o?o.controlManager||t.controlManager:t.controlManager,isIE&&n.ownerDocument!=t.getDoc()?t.getBody():n,s.isCollapsed(),o);}},addButton:function(n,s){var t=this;t.buttons=t.buttons||{};t.buttons[n]=s;},addCommand:function(n,f,s){this.execCommands[n]={func:f,scope:s||this};},addQueryStateHandler:function(n,f,s){this.queryStateCommands[n]={func:f,scope:s||this};},addQueryValueHandler:function(n,f,s){this.queryValueCommands[n]={func:f,scope:s||this};},addShortcut:function(pa,desc,cmd_func,sc){var t=this,c;if(!t.settings.custom_shortcuts)return false;t.shortcuts=t.shortcuts||{};if(is(cmd_func,'string')){c=cmd_func;cmd_func=function(){t.execCommand(c,false,null);};}if(is(cmd_func,'object')){c=cmd_func;cmd_func=function(){t.execCommand(c[0],c[1],c[2]);};}each(explode(pa),function(pa){var o={func:cmd_func,scope:sc||this,desc:desc,alt:false,ctrl:false,shift:false};each(explode(pa,'+'),function(v){switch(v){case'alt':case'ctrl':case'shift':o[v]=true;break;default:o.charCode=v.charCodeAt(0);o.keyCode=v.toUpperCase().charCodeAt(0);}});t.shortcuts[(o.ctrl?'ctrl':'')+','+(o.alt?'alt':'')+','+(o.shift?'shift':'')+','+o.keyCode]=o;});return true;},execCommand:function(cmd,ui,val,a){var t=this,s=0,o,st;if(!/^(mceAddUndoLevel|mceEndUndoLevel|mceBeginUndoLevel|mceRepaint|SelectAll)$/.test(cmd)&&(!a||!a.skip_focus))t.focus();o={};t.onBeforeExecCommand.dispatch(t,cmd,ui,val,o);if(o.terminate)return false;if(t.execCallback('execcommand_callback',t.id,t.selection.getNode(),cmd,ui,val)){t.onExecCommand.dispatch(t,cmd,ui,val,a);return true;}if(o=t.execCommands[cmd]){st=o.func.call(o.scope,ui,val);if(st!==true){t.onExecCommand.dispatch(t,cmd,ui,val,a);return st;}}each(t.plugins,function(p){if(p.execCommand&&p.execCommand(cmd,ui,val)){t.onExecCommand.dispatch(t,cmd,ui,val,a);s=1;return false;}});if(s)return true;if(t.theme.execCommand&&t.theme.execCommand(cmd,ui,val)){t.onExecCommand.dispatch(t,cmd,ui,val,a);return true;}if(t.editorCommands.execCommand(cmd,ui,val)){t.onExecCommand.dispatch(t,cmd,ui,val,a);return true;}t.getDoc().execCommand(cmd,ui,val);t.onExecCommand.dispatch(t,cmd,ui,val,a);},queryCommandState:function(c){var t=this,o,s;if(t._isHidden())return;if(o=t.queryStateCommands[c]){s=o.func.call(o.scope);if(s!==true)return s;}o=t.editorCommands.queryCommandState(c);if(o!==-1)return o;try{return this.getDoc().queryCommandState(c);}catch(ex){}},queryCommandValue:function(c){var t=this,o,s;if(t._isHidden())return;if(o=t.queryValueCommands[c]){s=o.func.call(o.scope);if(s!==true)return s;}o=t.editorCommands.queryCommandValue(c);if(is(o))return o;try{return this.getDoc().queryCommandValue(c);}catch(ex){}},show:function(){var t=this;DOM.show(t.getContainer());DOM.hide(t.id);t.load();},hide:function(){var t=this,d=t.getDoc();if(isIE&&d)d.execCommand('SelectAll');t.save();DOM.hide(t.getContainer());DOM.setStyle(t.id,'display',t.orgDisplay);},isHidden:function(){return!DOM.isHidden(this.id);},setProgressState:function(b,ti,o){this.onSetProgressState.dispatch(this,b,ti,o);return b;},resizeToContent:function(){var t=this;DOM.setStyle(t.id+"_ifr",'height',t.getBody().scrollHeight);},load:function(o){var t=this,e=t.getElement(),h;if(e){o=o||{};o.load=true;h=t.setContent(is(e.value)?e.value:e.innerHTML,o);o.element=e;if(!o.no_events)t.onLoadContent.dispatch(t,o);o.element=e=null;return h;}},save:function(o){var t=this,e=t.getElement(),h,f;if(!e||!t.initialized)return;o=o||{};o.save=true;if(!o.no_events){t.undoManager.typing=0;t.undoManager.add();}o.element=e;h=o.content=t.getContent(o);if(!o.no_events)t.onSaveContent.dispatch(t,o);h=o.content;if(!/TEXTAREA|INPUT/i.test(e.nodeName)){e.innerHTML=h;if(f=DOM.getParent(t.id,'form')){each(f.elements,function(e){if(e.name==t.id){e.value=h;return false;}});}}else e.value=h;o.element=e=null;return h;},setContent:function(h,o){var t=this;o=o||{};o.format=o.format||'html';o.set=true;o.content=h;if(!o.no_events)t.onBeforeSetContent.dispatch(t,o);if(!tinymce.isIE&&(h.length===0||/^\s+$/.test(h))){o.content=t.dom.setHTML(t.getBody(),'<br mce_bogus="1" />');o.format='raw';}o.content=t.dom.setHTML(t.getBody(),tinymce.trim(o.content));if(o.format!='raw'&&t.settings.cleanup){o.getInner=true;o.content=t.dom.setHTML(t.getBody(),t.serializer.serialize(t.getBody(),o));}if(!o.no_events)t.onSetContent.dispatch(t,o);return o.content;},getContent:function(o){var t=this,h;o=o||{};o.format=o.format||'html';o.get=true;if(!o.no_events)t.onBeforeGetContent.dispatch(t,o);if(o.format!='raw'&&t.settings.cleanup){o.getInner=true;h=t.serializer.serialize(t.getBody(),o);}else h=t.getBody().innerHTML;h=h.replace(/^\s*|\s*$/g,'');o.content=h;if(!o.no_events)t.onGetContent.dispatch(t,o);return o.content;},isDirty:function(){var t=this;return tinymce.trim(t.startContent)!=tinymce.trim(t.getContent({format:'raw',no_events:1}))&&!t.isNotDirty;},getContainer:function(){var t=this;if(!t.container)t.container=DOM.get(t.editorContainer||t.id+'_parent');return t.container;},getContentAreaContainer:function(){return this.contentAreaContainer;},getElement:function(){return DOM.get(this.settings.content_element||this.id);},getWin:function(){var t=this,e;if(!t.contentWindow){e=DOM.get(t.id+"_ifr");if(e)t.contentWindow=e.contentWindow;}return t.contentWindow;},getDoc:function(){var t=this,w;if(!t.contentDocument){w=t.getWin();if(w)t.contentDocument=w.document;}return t.contentDocument;},getBody:function(){return this.bodyElement||this.getDoc().body;},convertURL:function(u,n,e){var t=this,s=t.settings;if(s.urlconverter_callback)return t.execCallback('urlconverter_callback',u,e,true,n);if(!s.convert_urls||(e&&e.nodeName=='LINK')||u.indexOf('file:')===0)return u;if(s.relative_urls)return t.documentBaseURI.toRelative(u);u=t.documentBaseURI.toAbsolute(u,s.remove_script_host);return u;},addVisual:function(e){var t=this,s=t.settings;e=e||t.getBody();if(!is(t.hasVisual))t.hasVisual=s.visual;each(t.dom.select('table,a',e),function(e){var v;switch(e.nodeName){case'TABLE':v=t.dom.getAttrib(e,'border');if(!v||v=='0'){if(t.hasVisual)t.dom.addClass(e,s.visual_table_class);else t.dom.removeClass(e,s.visual_table_class);}return;case'A':v=t.dom.getAttrib(e,'name');if(v){if(t.hasVisual)t.dom.addClass(e,'mceItemAnchor');else t.dom.removeClass(e,'mceItemAnchor');}return;}});t.onVisualAid.dispatch(t,e,t.hasVisual);},remove:function(){var t=this,e=t.getContainer();t.removed=1;t.hide();t.execCallback('remove_instance_callback',t);t.onRemove.dispatch(t);t.onExecCommand.listeners=[];EditorManager.remove(t);DOM.remove(e);},destroy:function(s){var t=this;if(t.destroyed)return;if(!s){tinymce.removeUnload(t.destroy);tinyMCE.onBeforeUnload.remove(t._beforeUnload);if(t.theme.destroy)t.theme.destroy();t.controlManager.destroy();t.selection.destroy();t.dom.destroy();if(!t.settings.content_editable){Event.clear(t.getWin());Event.clear(t.getDoc());}Event.clear(t.getBody());Event.clear(t.formElement);}if(t.formElement){t.formElement.submit=t.formElement._mceOldSubmit;t.formElement._mceOldSubmit=null;}t.contentAreaContainer=t.formElement=t.container=t.settings.content_element=t.bodyElement=t.contentDocument=t.contentWindow=null;if(t.selection)t.selection=t.selection.win=t.selection.dom=t.selection.dom.doc=null;t.destroyed=1;},_addEvents:function(){var t=this,i,s=t.settings,lo={mouseup:'onMouseUp',mousedown:'onMouseDown',click:'onClick',keyup:'onKeyUp',keydown:'onKeyDown',keypress:'onKeyPress',submit:'onSubmit',reset:'onReset',contextmenu:'onContextMenu',dblclick:'onDblClick',paste:'onPaste'};function eventHandler(e,o){var ty=e.type;if(t.removed)return;if(t.onEvent.dispatch(t,e,o)!==false){t[lo[e.fakeType||e.type]].dispatch(t,e,o);}};each(lo,function(v,k){switch(k){case'contextmenu':if(tinymce.isOpera){Event.add(t.getBody(),'mousedown',function(e){if(e.ctrlKey){e.fakeType='contextmenu';eventHandler(e);}});}else Event.add(t.getBody(),k,eventHandler);break;case'paste':Event.add(t.getBody(),k,function(e){var tx,h,el,r;if(e.clipboardData)tx=e.clipboardData.getData('text/plain');else if(tinymce.isIE)tx=t.getWin().clipboardData.getData('Text');eventHandler(e,{text:tx,html:h});});break;case'submit':case'reset':Event.add(t.getElement().form||DOM.getParent(t.id,'form'),k,eventHandler);break;default:Event.add(s.content_editable?t.getBody():t.getDoc(),k,eventHandler);}});Event.add(s.content_editable?t.getBody():(isGecko?t.getDoc():t.getWin()),'focus',function(e){t.focus(true);});if(tinymce.isGecko){Event.add(t.getDoc(),'DOMNodeInserted',function(e){var v;e=e.target;if(e.nodeType===1&&e.nodeName==='IMG'&&(v=e.getAttribute('mce_src')))e.src=t.documentBaseURI.toAbsolute(v);});}if(isGecko){function setOpts(){var t=this,d=t.getDoc(),s=t.settings;if(isGecko&&!s.readonly){if(t._isHidden()){try{if(!s.content_editable)d.designMode='On';}catch(ex){}}try{d.execCommand("styleWithCSS",0,false);}catch(ex){if(!t._isHidden())try{d.execCommand("useCSS",0,true);}catch(ex){}}if(!s.table_inline_editing)try{d.execCommand('enableInlineTableEditing',false,false);}catch(ex){}if(!s.object_resizing)try{d.execCommand('enableObjectResizing',false,false);}catch(ex){}}};t.onBeforeExecCommand.add(setOpts);t.onMouseDown.add(setOpts);}t.onMouseUp.add(t.nodeChanged);t.onClick.add(t.nodeChanged);t.onKeyUp.add(function(ed,e){var c=e.keyCode;if((c>=33&&c<=36)||(c>=37&&c<=40)||c==13||c==45||c==46||c==8||(tinymce.isMac&&(c==91||c==93))||e.ctrlKey)t.nodeChanged();});t.onReset.add(function(){t.setContent(t.startContent,{format:'raw'});});if(t.getParam('tab_focus')){function tabCancel(ed,e){if(e.keyCode===9)return Event.cancel(e);};function tabHandler(ed,e){var x,i,f,el,v;function find(d){f=DOM.getParent(ed.id,'form');el=f.elements;if(f){each(el,function(e,i){if(e.id==ed.id){x=i;return false;}});if(d>0){for(i=x+1;i<el.length;i++){if(el[i].type!='hidden')return el[i];}}else{for(i=x-1;i>=0;i--){if(el[i].type!='hidden')return el[i];}}}return null;};if(e.keyCode===9){v=explode(ed.getParam('tab_focus'));if(v.length==1){v[1]=v[0];v[0]=':prev';}if(e.shiftKey){if(v[0]==':prev')el=find(-1);else el=DOM.get(v[0]);}else{if(v[1]==':next')el=find(1);else el=DOM.get(v[1]);}if(el){if(ed=EditorManager.get(el.id||el.name))ed.focus();else window.setTimeout(function(){window.focus();el.focus();},10);return Event.cancel(e);}}};t.onKeyUp.add(tabCancel);if(isGecko){t.onKeyPress.add(tabHandler);t.onKeyDown.add(tabCancel);}else t.onKeyDown.add(tabHandler);}if(s.custom_shortcuts){if(s.custom_undo_redo_keyboard_shortcuts){t.addShortcut('ctrl+z',t.getLang('undo_desc'),'Undo');t.addShortcut('ctrl+y',t.getLang('redo_desc'),'Redo');}if(isGecko){t.addShortcut('ctrl+b',t.getLang('bold_desc'),'Bold');t.addShortcut('ctrl+i',t.getLang('italic_desc'),'Italic');t.addShortcut('ctrl+u',t.getLang('underline_desc'),'Underline');}for(i=1;i<=6;i++)t.addShortcut('ctrl+'+i,'',['FormatBlock',false,'<h'+i+'>']);t.addShortcut('ctrl+7','',['FormatBlock',false,'<p>']);t.addShortcut('ctrl+8','',['FormatBlock',false,'<div>']);t.addShortcut('ctrl+9','',['FormatBlock',false,'<address>']);function find(e){var v=null;if(!e.altKey&&!e.ctrlKey&&!e.metaKey)return v;each(t.shortcuts,function(o){if(tinymce.isMac&&o.ctrl!=e.metaKey)return;else if(!tinymce.isMac&&o.ctrl!=e.ctrlKey)return;if(o.alt!=e.altKey)return;if(o.shift!=e.shiftKey)return;if(e.keyCode==o.keyCode||(e.charCode&&e.charCode==o.charCode)){v=o;return false;}});return v;};t.onKeyUp.add(function(ed,e){var o=find(e);if(o)return Event.cancel(e);});t.onKeyPress.add(function(ed,e){var o=find(e);if(o)return Event.cancel(e);});t.onKeyDown.add(function(ed,e){var o=find(e);if(o){o.func.call(o.scope);return Event.cancel(e);}});}if(tinymce.isIE){Event.add(t.getDoc(),'controlselect',function(e){var re=t.resizeInfo,cb;e=e.target;if(e.nodeName!=='IMG')return;if(re)Event.remove(re.node,re.ev,re.cb);if(!t.dom.hasClass(e,'mceItemNoResize')){ev='resizeend';cb=Event.add(e,ev,function(e){var v;e=e.target;if(v=t.dom.getStyle(e,'width')){t.dom.setAttrib(e,'width',v.replace(/[^0-9%]+/g,''));t.dom.setStyle(e,'width','');}if(v=t.dom.getStyle(e,'height')){t.dom.setAttrib(e,'height',v.replace(/[^0-9%]+/g,''));t.dom.setStyle(e,'height','');}});}else{ev='resizestart';cb=Event.add(e,'resizestart',Event.cancel,Event);}re=t.resizeInfo={node:e,ev:ev,cb:cb};});t.onKeyDown.add(function(ed,e){switch(e.keyCode){case 8:if(t.selection.getRng().item){t.selection.getRng().item(0).removeNode();return Event.cancel(e);}}});}if(tinymce.isOpera){t.onClick.add(function(ed,e){Event.prevent(e);});}if(s.custom_undo_redo){function addUndo(){t.undoManager.typing=0;t.undoManager.add();};if(tinymce.isIE){Event.add(t.getWin(),'blur',function(e){var n;if(t.selection){n=t.selection.getNode();if(!t.removed&&n.ownerDocument&&n.ownerDocument!=t.getDoc())addUndo();}});}else{Event.add(t.getDoc(),'blur',function(){if(t.selection&&!t.removed)addUndo();});}t.onMouseDown.add(addUndo);t.onKeyUp.add(function(ed,e){if((e.keyCode>=33&&e.keyCode<=36)||(e.keyCode>=37&&e.keyCode<=40)||e.keyCode==13||e.keyCode==45||e.ctrlKey){t.undoManager.typing=0;t.undoManager.add();}});t.onKeyDown.add(function(ed,e){if((e.keyCode>=33&&e.keyCode<=36)||(e.keyCode>=37&&e.keyCode<=40)||e.keyCode==13||e.keyCode==45){if(t.undoManager.typing){t.undoManager.add();t.undoManager.typing=0;}return;}if(!t.undoManager.typing){t.undoManager.add();t.undoManager.typing=1;}});}},_convertInlineElements:function(){var t=this,s=t.settings,dom=t.dom,v,e,na,st,sp;function convert(ed,o){if(!s.inline_styles)return;if(o.get){each(t.dom.select('table,u,strike',o.node),function(n){switch(n.nodeName){case'TABLE':if(v=dom.getAttrib(n,'height')){dom.setStyle(n,'height',v);dom.setAttrib(n,'height','');}break;case'U':case'STRIKE':n.style.textDecoration=n.nodeName=='U'?'underline':'line-through';dom.setAttrib(n,'mce_style','');dom.setAttrib(n,'mce_name','span');break;}});}else if(o.set){each(t.dom.select('table,span',o.node).reverse(),function(n){if(n.nodeName=='TABLE'){if(v=dom.getStyle(n,'height'))dom.setAttrib(n,'height',v.replace(/[^0-9%]+/g,''));}else{if(n.style.textDecoration=='underline')na='u';else if(n.style.textDecoration=='line-through')na='strike';else na='';if(na){n.style.textDecoration='';dom.setAttrib(n,'mce_style','');e=dom.create(na,{style:dom.getAttrib(n,'style')});dom.replace(e,n,1);}}});}};t.onPreProcess.add(convert);if(!s.cleanup_on_startup){t.onSetContent.add(function(ed,o){if(o.initial)convert(t,{node:t.getBody(),set:1});});}},_convertFonts:function(){var t=this,s=t.settings,dom=t.dom,fz,fzn,sl,cl;if(!s.inline_styles)return;fz=[8,10,12,14,18,24,36];fzn=['xx-small','x-small','small','medium','large','x-large','xx-large'];if(sl=s.font_size_style_values)sl=explode(sl);if(cl=s.font_size_classes)cl=explode(cl);function process(no){var n,sp,nl,x;if(!s.inline_styles)return;nl=t.dom.select('font',no);for(x=nl.length-1;x>=0;x--){n=nl[x];sp=dom.create('span',{style:dom.getAttrib(n,'style'),'class':dom.getAttrib(n,'class')});dom.setStyles(sp,{fontFamily:dom.getAttrib(n,'face'),color:dom.getAttrib(n,'color'),backgroundColor:n.style.backgroundColor});if(n.size){if(sl)dom.setStyle(sp,'fontSize',sl[parseInt(n.size)-1]);else dom.setAttrib(sp,'class',cl[parseInt(n.size)-1]);}dom.setAttrib(sp,'mce_style','');dom.replace(sp,n,1);}};t.onPreProcess.add(function(ed,o){if(o.get)process(o.node);});t.onSetContent.add(function(ed,o){if(o.initial)process(o.node);});},_isHidden:function(){var s;if(!isGecko)return 0;s=this.selection.getSel();return(!s||!s.rangeCount||s.rangeCount==0);},_fixNesting:function(s){var d=[],i;s=s.replace(/<(\/)?([^\s>]+)[^>]*?>/g,function(a,b,c){var e;if(b==='/'){if(!d.length)return'';if(c!==d[d.length-1].tag){for(i=d.length-1;i>=0;i--){if(d[i].tag===c){d[i].close=1;break;}}return'';}else{d.pop();if(d.length&&d[d.length-1].close){a=a+'</'+d[d.length-1].tag+'>';d.pop();}}}else{if(/^(br|hr|input|meta|img|link|param)$/i.test(c))return a;if(/\/>$/.test(a))return a;d.push({tag:c});}return a;});for(i=d.length-1;i>=0;i--)s+='</'+d[i].tag+'>';return s;}});})();(function(){var each=tinymce.each,isIE=tinymce.isIE,isGecko=tinymce.isGecko,isOpera=tinymce.isOpera,isWebKit=tinymce.isWebKit;function isBlock(n){return/^(H[1-6]|HR|P|DIV|ADDRESS|PRE|FORM|TABLE|OL|UL|TD|CAPTION|BLOCKQUOTE|CENTER|DL|DT|DD|DIR|FIELDSET|NOSCRIPT|NOFRAMES|MENU|ISINDEX|SAMP)$/.test(n.nodeName);};tinymce.create('tinymce.EditorCommands',{EditorCommands:function(ed){this.editor=ed;},execCommand:function(cmd,ui,val){var t=this,ed=t.editor,f;switch(cmd){case'Cut':case'Copy':case'Paste':try{ed.getDoc().execCommand(cmd,ui,val);}catch(ex){if(isGecko){ed.windowManager.confirm(ed.getLang('clipboard_msg'),function(s){if(s)window.open('http://www.mozilla.org/editor/midasdemo/securityprefs.html','mceExternal');});}else ed.windowManager.alert(ed.getLang('clipboard_no_support'));}return true;case'mceResetDesignMode':case'mceBeginUndoLevel':return true;case'unlink':t.UnLink();return true;case'JustifyLeft':case'JustifyCenter':case'JustifyRight':case'JustifyFull':t.mceJustify(cmd,cmd.substring(7).toLowerCase());return true;case'mceEndUndoLevel':case'mceAddUndoLevel':ed.undoManager.add();return true;default:f=this[cmd];if(f){f.call(this,ui,val);return true;}}return false;},Indent:function(){var ed=this.editor,d=ed.dom,s=ed.selection,e,iv,iu;iv=ed.settings.indentation;iu=/[a-z%]+$/i.exec(iv);iv=parseInt(iv);if(ed.settings.inline_styles&&(!this.queryStateInsertUnorderedList()&&!this.queryStateInsertOrderedList())){each(this._getSelectedBlocks(),function(e){d.setStyle(e,'paddingLeft',(parseInt(e.style.paddingLeft||0)+iv)+iu);});return;}ed.getDoc().execCommand('Indent',false,null);if(isIE){d.getParent(s.getNode(),function(n){if(n.nodeName=='BLOCKQUOTE'){n.dir=n.style.cssText='';}});}},Outdent:function(){var ed=this.editor,d=ed.dom,s=ed.selection,e,v,iv,iu;iv=ed.settings.indentation;iu=/[a-z%]+$/i.exec(iv);iv=parseInt(iv);if(ed.settings.inline_styles&&(!this.queryStateInsertUnorderedList()&&!this.queryStateInsertOrderedList())){each(this._getSelectedBlocks(),function(e){v=Math.max(0,parseInt(e.style.paddingLeft||0)-iv);d.setStyle(e,'paddingLeft',v?v+iu:'');});return;}ed.getDoc().execCommand('Outdent',false,null);},mceSetAttribute:function(u,v){var ed=this.editor,d=ed.dom,e;if(e=d.getParent(ed.selection.getNode(),d.isBlock))d.setAttrib(e,v.name,v.value);},mceSetContent:function(u,v){this.editor.setContent(v);},mceToggleVisualAid:function(){var ed=this.editor;ed.hasVisual=!ed.hasVisual;ed.addVisual();},mceReplaceContent:function(u,v){var s=this.editor.selection;s.setContent(v.replace(/\{\$selection\}/g,s.getContent({format:'text'})));},mceInsertLink:function(u,v){var ed=this.editor,s=ed.selection,e=ed.dom.getParent(s.getNode(),'A');if(tinymce.is(v,'string'))v={href:v};function set(e){each(v,function(v,k){ed.dom.setAttrib(e,k,v);});};if(!e){ed.execCommand('CreateLink',false,'javascript:mctmp(0);');each(ed.dom.select('a'),function(e){if(e.href=='javascript:mctmp(0);')set(e);});}else{if(v.href)set(e);else ed.dom.remove(e,1);}},UnLink:function(){var ed=this.editor,s=ed.selection;if(s.isCollapsed())s.select(s.getNode());ed.getDoc().execCommand('unlink',false,null);s.collapse(0);},FontName:function(u,v){var t=this,ed=t.editor,s=ed.selection,e;if(!v){if(s.isCollapsed())s.select(s.getNode());t.RemoveFormat();}else{if(ed.settings.convert_fonts_to_spans)t._applyInlineStyle('span',{style:{fontFamily:v}});else ed.getDoc().execCommand('FontName',false,v);}},FontSize:function(u,v){var ed=this.editor,s=ed.settings,fc,fs;if(s.convert_fonts_to_spans&&v>=1&&v<=7){fs=tinymce.explode(s.font_size_style_values);fc=tinymce.explode(s.font_size_classes);if(fc)v=fc[v-1]||v;else v=fs[v-1]||v;}if(v>=1&&v<=7)ed.getDoc().execCommand('FontSize',false,v);else this._applyInlineStyle('span',{style:{fontSize:v}});},queryCommandValue:function(c){var f=this['queryValue'+c];if(f)return f.call(this,c);return false;},queryCommandState:function(cmd){var f;switch(cmd){case'JustifyLeft':case'JustifyCenter':case'JustifyRight':case'JustifyFull':return this.queryStateJustify(cmd,cmd.substring(7).toLowerCase());default:if(f=this['queryState'+cmd])return f.call(this,cmd);}return-1;},_queryState:function(c){try{return this.editor.getDoc().queryCommandState(c);}catch(ex){}},_queryVal:function(c){try{return this.editor.getDoc().queryCommandValue(c);}catch(ex){}},queryValueFontSize:function(){var ed=this.editor,v=0,p;if(p=ed.dom.getParent(ed.selection.getNode(),'SPAN'))v=p.style.fontSize;if(!v&&(isOpera||isWebKit)){if(p=ed.dom.getParent(ed.selection.getNode(),'FONT'))v=p.size;return v;}return v||this._queryVal('FontSize');},queryValueFontName:function(){var ed=this.editor,v=0,p;if(p=ed.dom.getParent(ed.selection.getNode(),'FONT'))v=p.face;if(p=ed.dom.getParent(ed.selection.getNode(),'SPAN'))v=p.style.fontFamily.replace(/, /g,',').replace(/[\'\"]/g,'').toLowerCase();if(!v)v=this._queryVal('FontName');return v;},mceJustify:function(c,v){var ed=this.editor,se=ed.selection,n=se.getNode(),nn=n.nodeName,bl,nb,dom=ed.dom,rm;if(ed.settings.inline_styles&&this.queryStateJustify(c,v))rm=1;bl=dom.getParent(n,ed.dom.isBlock);if(nn=='IMG'){if(v=='full')return;if(rm){if(v=='center')dom.setStyle(bl||n.parentNode,'textAlign','');dom.setStyle(n,'float','');this.mceRepaint();return;}if(v=='center'){if(bl&&/^(TD|TH)$/.test(bl.nodeName))bl=0;if(!bl||bl.childNodes.length>1){nb=dom.create('p');nb.appendChild(n.cloneNode(false));if(bl)dom.insertAfter(nb,bl);else dom.insertAfter(nb,n);dom.remove(n);n=nb.firstChild;bl=nb;}dom.setStyle(bl,'textAlign',v);dom.setStyle(n,'float','');}else{dom.setStyle(n,'float',v);dom.setStyle(bl||n.parentNode,'textAlign','');}this.mceRepaint();return;}if(ed.settings.inline_styles&&ed.settings.forced_root_block){if(rm)v='';each(this._getSelectedBlocks(dom.getParent(se.getStart(),dom.isBlock),dom.getParent(se.getEnd(),dom.isBlock)),function(e){dom.setAttrib(e,'align','');dom.setStyle(e,'textAlign',v=='full'?'justify':v);});return;}else if(!rm)ed.getDoc().execCommand(c,false,null);if(ed.settings.inline_styles){if(rm){dom.getParent(ed.selection.getNode(),function(n){if(n.style&&n.style.textAlign)dom.setStyle(n,'textAlign','');});return;}each(dom.select('*'),function(n){var v=n.align;if(v){if(v=='full')v='justify';dom.setStyle(n,'textAlign',v);dom.setAttrib(n,'align','');}});}},mceSetCSSClass:function(u,v){this.mceSetStyleInfo(0,{command:'setattrib',name:'class',value:v});},getSelectedElement:function(){var t=this,ed=t.editor,dom=ed.dom,se=ed.selection,r=se.getRng(),r1,r2,sc,ec,so,eo,e,sp,ep,re;if(se.isCollapsed()||r.item)return se.getNode();re=ed.settings.merge_styles_invalid_parents;if(tinymce.is(re,'string'))re=new RegExp(re,'i');if(isIE){r1=r.duplicate();r1.collapse(true);sc=r1.parentElement();r2=r.duplicate();r2.collapse(false);ec=r2.parentElement();if(sc!=ec){r1.move('character',1);sc=r1.parentElement();}if(sc==ec){r1=r.duplicate();r1.moveToElementText(sc);if(r1.compareEndPoints('StartToStart',r)==0&&r1.compareEndPoints('EndToEnd',r)==0)return re&&re.test(sc.nodeName)?null:sc;}}else{function getParent(n){return dom.getParent(n,function(n){return n.nodeType==1;});};sc=r.startContainer;ec=r.endContainer;so=r.startOffset;eo=r.endOffset;if(!r.collapsed){if(sc==ec){if(so-eo<2){if(sc.hasChildNodes()){sp=sc.childNodes[so];return re&&re.test(sp.nodeName)?null:sp;}}}}if(sc.nodeType!=3||ec.nodeType!=3)return null;if(so==0){sp=getParent(sc);if(sp&&sp.firstChild!=sc)sp=null;}if(so==sc.nodeValue.length){e=sc.nextSibling;if(e&&e.nodeType==1)sp=sc.nextSibling;}if(eo==0){e=ec.previousSibling;if(e&&e.nodeType==1)ep=e;}if(eo==ec.nodeValue.length){ep=getParent(ec);if(ep&&ep.lastChild!=ec)ep=null;}if(sp==ep)return re&&sp&&re.test(sp.nodeName)?null:sp;}return null;},InsertHorizontalRule:function(){if(isGecko||isIE)this.editor.selection.setContent('<hr />');else this.editor.getDoc().execCommand('InsertHorizontalRule',false,'');},RemoveFormat:function(){var t=this,ed=t.editor,s=ed.selection,b;if(isWebKit)s.setContent(s.getContent({format:'raw'}).replace(/(<(span|b|i|strong|em|strike) [^>]+>|<(span|b|i|strong|em|strike)>|<\/(span|b|i|strong|em|strike)>|)/g,''),{format:'raw'});else ed.getDoc().execCommand('RemoveFormat',false,null);t.mceSetStyleInfo(0,{command:'removeformat'});ed.addVisual();},mceSetStyleInfo:function(u,v){var t=this,ed=t.editor,d=ed.getDoc(),dom=ed.dom,e,b,s=ed.selection,nn=v.wrapper||'span',b=s.getBookmark(),re;function set(n,e){if(n.nodeType==1){switch(v.command){case'setattrib':return dom.setAttrib(n,v.name,v.value);case'setstyle':return dom.setStyle(n,v.name,v.value);case'removeformat':return dom.setAttrib(n,'class','');}}};re=ed.settings.merge_styles_invalid_parents;if(tinymce.is(re,'string'))re=new RegExp(re,'i');if((e=t.getSelectedElement())&&!ed.settings.force_span_wrappers)set(e,1);else{d.execCommand('FontName',false,'__');each(isWebKit?dom.select('span'):dom.select('font'),function(n){var sp,e;if(dom.getAttrib(n,'face')=='__'||n.style.fontFamily==='__'){sp=dom.create(nn,{mce_new:'1'});set(sp);each(n.childNodes,function(n){sp.appendChild(n.cloneNode(true));});dom.replace(sp,n);}});}each(dom.select(nn).reverse(),function(n){var p=n.parentNode;if(!dom.getAttrib(n,'mce_new')){p=dom.getParent(n,function(n){return n.nodeType==1&&dom.getAttrib(n,'mce_new');});if(p)dom.remove(n,1);}});each(dom.select(nn).reverse(),function(n){var p=n.parentNode;if(!p||!dom.getAttrib(n,'mce_new'))return;if(ed.settings.force_span_wrappers&&p.nodeName!='SPAN')return;if(p.nodeName==nn.toUpperCase()&&p.childNodes.length==1)return dom.remove(p,1);if(n.nodeType==1&&(!re||!re.test(p.nodeName))&&p.childNodes.length==1){set(p);dom.setAttrib(n,'class','');}});each(dom.select(nn).reverse(),function(n){if(dom.getAttrib(n,'mce_new')||(dom.getAttribs(n).length<=1&&n.className==='')){if(!dom.getAttrib(n,'class')&&!dom.getAttrib(n,'style'))return dom.remove(n,1);dom.setAttrib(n,'mce_new','');}});s.moveToBookmark(b);},queryStateJustify:function(c,v){var ed=this.editor,n=ed.selection.getNode(),dom=ed.dom;if(n&&n.nodeName=='IMG'){if(dom.getStyle(n,'float')==v)return 1;return n.parentNode.style.textAlign==v;}n=dom.getParent(ed.selection.getStart(),function(n){return n.nodeType==1&&n.style.textAlign;});if(v=='full')v='justify';if(ed.settings.inline_styles)return(n&&n.style.textAlign==v);return this._queryState(c);},ForeColor:function(ui,v){var ed=this.editor;if(ed.settings.convert_fonts_to_spans){this._applyInlineStyle('span',{style:{color:v}});return;}else ed.getDoc().execCommand('ForeColor',false,v);},HiliteColor:function(ui,val){var t=this,ed=t.editor,d=ed.getDoc();if(ed.settings.convert_fonts_to_spans){this._applyInlineStyle('span',{style:{backgroundColor:val}});return;}function set(s){if(!isGecko)return;try{d.execCommand("styleWithCSS",0,s);}catch(ex){d.execCommand("useCSS",0,!s);}};if(isGecko||isOpera){set(true);d.execCommand('hilitecolor',false,val);set(false);}else d.execCommand('BackColor',false,val);},Undo:function(){var ed=this.editor;if(ed.settings.custom_undo_redo){ed.undoManager.undo();ed.nodeChanged();}else ed.getDoc().execCommand('Undo',false,null);},Redo:function(){var ed=this.editor;if(ed.settings.custom_undo_redo){ed.undoManager.redo();ed.nodeChanged();}else ed.getDoc().execCommand('Redo',false,null);},FormatBlock:function(ui,val){var t=this,ed=t.editor,s=ed.selection,dom=ed.dom,bl,nb,b;function isBlock(n){return/^(P|DIV|H[1-6]|ADDRESS|BLOCKQUOTE|PRE)$/.test(n.nodeName);};bl=dom.getParent(s.getNode(),function(n){return isBlock(n);});if(bl){if((isIE&&isBlock(bl.parentNode))||bl.nodeName=='DIV'){nb=ed.dom.create(val);each(dom.getAttribs(bl),function(v){dom.setAttrib(nb,v.nodeName,dom.getAttrib(bl,v.nodeName));});b=s.getBookmark();dom.replace(nb,bl,1);s.moveToBookmark(b);ed.nodeChanged();return;}}val=ed.settings.forced_root_block?(val||'<p>'):val;if(val.indexOf('<')==-1)val='<'+val+'>';if(tinymce.isGecko)val=val.replace(/<(div|blockquote|code|dt|dd|dl|samp)>/gi,'$1');ed.getDoc().execCommand('FormatBlock',false,val);},mceCleanup:function(){var ed=this.editor,s=ed.selection,b=s.getBookmark();ed.setContent(ed.getContent());s.moveToBookmark(b);},mceRemoveNode:function(ui,val){var ed=this.editor,s=ed.selection,b,n=val||s.getNode();if(n==ed.getBody())return;b=s.getBookmark();ed.dom.remove(n,1);s.moveToBookmark(b);ed.nodeChanged();},mceSelectNodeDepth:function(ui,val){var ed=this.editor,s=ed.selection,c=0;ed.dom.getParent(s.getNode(),function(n){if(n.nodeType==1&&c++==val){s.select(n);ed.nodeChanged();return false;}},ed.getBody());},mceSelectNode:function(u,v){this.editor.selection.select(v);},mceInsertContent:function(ui,val){this.editor.selection.setContent(val);},mceInsertRawHTML:function(ui,val){var ed=this.editor;ed.selection.setContent('tiny_mce_marker');ed.setContent(ed.getContent().replace(/tiny_mce_marker/g,val));},mceRepaint:function(){var s,b,e=this.editor;if(tinymce.isGecko){try{s=e.selection;b=s.getBookmark(true);if(s.getSel())s.getSel().selectAllChildren(e.getBody());s.collapse(true);s.moveToBookmark(b);}catch(ex){}}},queryStateUnderline:function(){var ed=this.editor,n=ed.selection.getNode();if(n&&n.nodeName=='A')return false;return this._queryState('Underline');},queryStateOutdent:function(){var ed=this.editor,n;if(ed.settings.inline_styles){if((n=ed.dom.getParent(ed.selection.getStart(),ed.dom.isBlock))&&parseInt(n.style.paddingLeft)>0)return true;if((n=ed.dom.getParent(ed.selection.getEnd(),ed.dom.isBlock))&&parseInt(n.style.paddingLeft)>0)return true;}return this.queryStateInsertUnorderedList()||this.queryStateInsertOrderedList()||(!ed.settings.inline_styles&&!!ed.dom.getParent(ed.selection.getNode(),'BLOCKQUOTE'));},queryStateInsertUnorderedList:function(){return this.editor.dom.getParent(this.editor.selection.getNode(),'UL');},queryStateInsertOrderedList:function(){return this.editor.dom.getParent(this.editor.selection.getNode(),'OL');},queryStatemceBlockQuote:function(){return!!this.editor.dom.getParent(this.editor.selection.getStart(),function(n){return n.nodeName==='BLOCKQUOTE';});},mceBlockQuote:function(){var t=this,ed=t.editor,s=ed.selection,dom=ed.dom,sb,eb,n,bm,bq,r,bq2,i,nl;function getBQ(e){return dom.getParent(e,function(n){return n.nodeName==='BLOCKQUOTE';});};sb=dom.getParent(s.getStart(),isBlock);eb=dom.getParent(s.getEnd(),isBlock);if(bq=getBQ(sb)){if(sb!=eb||sb.childNodes.length>1||(sb.childNodes.length==1&&sb.firstChild.nodeName!='BR'))bm=s.getBookmark();if(getBQ(eb)){bq2=bq.cloneNode(false);while(n=eb.nextSibling)bq2.appendChild(n.parentNode.removeChild(n));}if(bq2)dom.insertAfter(bq2,bq);nl=t._getSelectedBlocks(sb,eb);for(i=nl.length-1;i>=0;i--){dom.insertAfter(nl[i],bq);}if(/^\s*$/.test(bq.innerHTML))dom.remove(bq,1);if(bq2&&/^\s*$/.test(bq2.innerHTML))dom.remove(bq2,1);if(!bm){if(!isIE){r=ed.getDoc().createRange();r.setStart(sb,0);r.setEnd(sb,0);s.setRng(r);}else{s.select(sb);s.collapse(0);if(dom.getParent(s.getStart(),isBlock)!=sb){r=s.getRng();r.move('character',-1);r.select();}}}else t.editor.selection.moveToBookmark(bm);return;}if(isIE&&!sb&&!eb){t.editor.getDoc().execCommand('Indent');n=getBQ(s.getNode());n.style.margin=n.dir='';return;}if(!sb||!eb)return;if(sb!=eb||sb.childNodes.length>1||(sb.childNodes.length==1&&sb.firstChild.nodeName!='BR'))bm=s.getBookmark();each(t._getSelectedBlocks(getBQ(s.getStart()),getBQ(s.getEnd())),function(e){if(e.nodeName=='BLOCKQUOTE'&&!bq){bq=e;return;}if(!bq){bq=dom.create('blockquote');e.parentNode.insertBefore(bq,e);}if(e.nodeName=='BLOCKQUOTE'&&bq){n=e.firstChild;while(n){bq.appendChild(n.cloneNode(true));n=n.nextSibling;}dom.remove(e);return;}bq.appendChild(dom.remove(e));});if(!bm){if(!isIE){r=ed.getDoc().createRange();r.setStart(sb,0);r.setEnd(sb,0);s.setRng(r);}else{s.select(sb);s.collapse(1);}}else s.moveToBookmark(bm);},_applyInlineStyle:function(na,at,op){var t=this,ed=t.editor,dom=ed.dom,bm,lo={},kh;na=na.toUpperCase();if(op&&op.check_classes&&at['class'])op.check_classes.push(at['class']);function replaceFonts(){var bm;each(dom.select(tinymce.isWebKit&&!tinymce.isAir?'span':'font'),function(n){if(n.style.fontFamily=='mceinline'||n.face=='mceinline'){if(!bm)bm=ed.selection.getBookmark();at._mce_new='1';dom.replace(dom.create(na,at),n,1);}});each(dom.select(na),function(n){if(n.getAttribute('_mce_new')){function removeStyle(n){if(n.nodeType==1){each(at.style,function(v,k){dom.setStyle(n,k,'');});if(at['class']&&n.className&&op){each(op.check_classes,function(c){if(dom.hasClass(n,c))dom.removeClass(n,c);});}}};each(dom.select(na,n),removeStyle);if(n.parentNode&&n.parentNode.nodeType==1&&n.parentNode.childNodes.length==1)removeStyle(n.parentNode);dom.getParent(n.parentNode,function(pn){if(pn.nodeType==1){if(at.style){each(at.style,function(v,k){var sv;if(!lo[k]&&(sv=dom.getStyle(pn,k))){if(sv===v)dom.setStyle(n,k,'');lo[k]=1;}});}if(at['class']&&pn.className&&op){each(op.check_classes,function(c){if(dom.hasClass(pn,c))dom.removeClass(n,c);});}}return false;});n.removeAttribute('_mce_new');}});each(dom.select(na).reverse(),function(n){var c=0;each(dom.getAttribs(n),function(an){if(an.nodeName.substring(0,1)!='_'&&dom.getAttrib(n,an.nodeName)!=''){c++;}});if(c==0)dom.remove(n,1);});ed.selection.moveToBookmark(bm);return!!bm;};ed.focus();ed.getDoc().execCommand('FontName',false,'mceinline');replaceFonts();if(kh=t._applyInlineStyle.keyhandler){ed.onKeyUp.remove(kh);ed.onKeyPress.remove(kh);ed.onKeyDown.remove(kh);ed.onSetContent.remove(t._applyInlineStyle.chandler);}if(ed.selection.isCollapsed()){t._pendingStyles=tinymce.extend(t._pendingStyles||{},at.style);t._applyInlineStyle.chandler=ed.onSetContent.add(function(){delete t._pendingStyles;});t._applyInlineStyle.keyhandler=kh=function(e){if(t._pendingStyles){at.style=t._pendingStyles;delete t._pendingStyles;}if(replaceFonts()){ed.onKeyDown.remove(t._applyInlineStyle.keyhandler);ed.onKeyPress.remove(t._applyInlineStyle.keyhandler);}if(e.type=='keyup')ed.onKeyUp.remove(t._applyInlineStyle.keyhandler);};ed.onKeyDown.add(kh);ed.onKeyPress.add(kh);ed.onKeyUp.add(kh);}else t._pendingStyles=0;},_getSelectedBlocks:function(st,en){var ed=this.editor,dom=ed.dom,s=ed.selection,sb,eb,n,bl=[];sb=dom.getParent(st||s.getStart(),isBlock);eb=dom.getParent(en||s.getEnd(),isBlock);if(sb)bl.push(sb);if(sb&&eb&&sb!=eb){n=sb;while((n=n.nextSibling)&&n!=eb){if(isBlock(n))bl.push(n);}}if(eb&&sb!=eb)bl.push(eb);return bl;}});})();tinymce.create('tinymce.UndoManager',{index:0,data:null,typing:0,UndoManager:function(ed){var t=this,Dispatcher=tinymce.util.Dispatcher;t.editor=ed;t.data=[];t.onAdd=new Dispatcher(this);t.onUndo=new Dispatcher(this);t.onRedo=new Dispatcher(this);},add:function(l){var t=this,i,ed=t.editor,b,s=ed.settings,la;l=l||{};l.content=l.content||ed.getContent({format:'raw',no_events:1});l.content=l.content.replace(/^\s*|\s*$/g,'');la=t.data[t.index>0&&(t.index==0||t.index==t.data.length)?t.index-1:t.index];if(!l.initial&&la&&l.content==la.content)return null;if(s.custom_undo_redo_levels){if(t.data.length>s.custom_undo_redo_levels){for(i=0;i<t.data.length-1;i++)t.data[i]=t.data[i+1];t.data.length--;t.index=t.data.length;}}if(s.custom_undo_redo_restore_selection&&!l.initial)l.bookmark=b=l.bookmark||ed.selection.getBookmark();if(t.index<t.data.length)t.index++;if(t.data.length===0&&!l.initial)return null;t.data.length=t.index+1;t.data[t.index++]=l;if(l.initial)t.index=0;if(t.data.length==2&&t.data[0].initial)t.data[0].bookmark=b;t.onAdd.dispatch(t,l);ed.isNotDirty=0;return l;},undo:function(){var t=this,ed=t.editor,l=l,i;if(t.typing){t.add();t.typing=0;}if(t.index>0){if(t.index==t.data.length&&t.index>1){i=t.index;t.typing=0;if(!t.add())t.index=i;--t.index;}l=t.data[--t.index];ed.setContent(l.content,{format:'raw'});ed.selection.moveToBookmark(l.bookmark);t.onUndo.dispatch(t,l);}return l;},redo:function(){var t=this,ed=t.editor,l=null;if(t.index<t.data.length-1){l=t.data[++t.index];ed.setContent(l.content,{format:'raw'});ed.selection.moveToBookmark(l.bookmark);t.onRedo.dispatch(t,l);}return l;},clear:function(){var t=this;t.data=[];t.index=0;t.typing=0;t.add({initial:true});},hasUndo:function(){return this.index!=0||this.typing;},hasRedo:function(){return this.index<this.data.length-1;}});(function(){var Event,isIE,isGecko,isOpera,each,extend;Event=tinymce.dom.Event;isIE=tinymce.isIE;isGecko=tinymce.isGecko;isOpera=tinymce.isOpera;each=tinymce.each;extend=tinymce.extend;tinymce.create('tinymce.ForceBlocks',{ForceBlocks:function(ed){var t=this,s=ed.settings,elm;t.editor=ed;t.dom=ed.dom;elm=(s.forced_root_block||'p').toLowerCase();s.element=elm.toUpperCase();ed.onPreInit.add(t.setup,t);t.reOpera=new RegExp('(\\u00a0|&#160;|&nbsp;)<\/'+elm+'>','gi');t.rePadd=new RegExp('<p( )([^>]+)><\\\/p>|<p( )([^>]+)\\\/>|<p( )([^>]+)>\\s+<\\\/p>|<p><\\\/p>|<p\\\/>|<p>\\s+<\\\/p>'.replace(/p/g,elm),'gi');t.reNbsp2BR1=new RegExp('<p( )([^>]+)>[\\s\\u00a0]+<\\\/p>|<p>[\\s\\u00a0]+<\\\/p>'.replace(/p/g,elm),'gi');t.reNbsp2BR2=new RegExp('<p( )([^>]+)>(&nbsp;|&#160;)<\\\/p>|<p>(&nbsp;|&#160;)<\\\/p>'.replace(/p/g,elm),'gi');t.reBR2Nbsp=new RegExp('<p( )([^>]+)>\\s*<br \\\/>\\s*<\\\/p>|<p>\\s*<br \\\/>\\s*<\\\/p>'.replace(/p/g,elm),'gi');t.reTrailBr=new RegExp('\\s*<br \\/>\\s*<\\\/p>'.replace(/p/g,elm),'gi');function padd(ed,o){if(isOpera)o.content=o.content.replace(t.reOpera,'</'+elm+'>');o.content=o.content.replace(t.rePadd,'<'+elm+'$1$2$3$4$5$6>\u00a0</'+elm+'>');if(!isIE&&!isOpera&&o.set){o.content=o.content.replace(t.reNbsp2BR1,'<'+elm+'$1$2><br /></'+elm+'>');o.content=o.content.replace(t.reNbsp2BR2,'<'+elm+'$1$2><br /></'+elm+'>');}else{o.content=o.content.replace(t.reBR2Nbsp,'<'+elm+'$1$2>\u00a0</'+elm+'>');o.content=o.content.replace(t.reTrailBr,'</'+elm+'>');}};ed.onBeforeSetContent.add(padd);ed.onPostProcess.add(padd);if(s.forced_root_block){ed.onInit.add(t.forceRoots,t);ed.onSetContent.add(t.forceRoots,t);ed.onBeforeGetContent.add(t.forceRoots,t);}},setup:function(){var t=this,ed=t.editor,s=ed.settings;if(s.forced_root_block){ed.onKeyUp.add(t.forceRoots,t);ed.onPreProcess.add(t.forceRoots,t);}if(s.force_br_newlines){if(isIE){ed.onKeyPress.add(function(ed,e){var n,s=ed.selection;if(e.keyCode==13&&s.getNode().nodeName!='LI'){s.setContent('<br id="__" /> ',{format:'raw'});n=ed.dom.get('__');n.removeAttribute('id');s.select(n);s.collapse();return Event.cancel(e);}});}return;}if(!isIE&&s.force_p_newlines){ed.onKeyPress.add(function(ed,e){if(e.keyCode==13&&!e.shiftKey){if(!t.insertPara(e))Event.cancel(e);}});if(isGecko){ed.onKeyDown.add(function(ed,e){if((e.keyCode==8||e.keyCode==46)&&!e.shiftKey)t.backspaceDelete(e,e.keyCode==8);});}}function ren(rn,na){var ne=ed.dom.create(na);each(rn.attributes,function(a){if(a.specified&&a.nodeValue)ne.setAttribute(a.nodeName.toLowerCase(),a.nodeValue);});each(rn.childNodes,function(n){ne.appendChild(n.cloneNode(true));});rn.parentNode.replaceChild(ne,rn);return ne;};if(isIE&&s.element!='P'){ed.onKeyPress.add(function(ed,e){t.lastElm=ed.selection.getNode().nodeName;});ed.onKeyUp.add(function(ed,e){var bl,sel=ed.selection,n=sel.getNode(),b=ed.getBody();if(b.childNodes.length===1&&n.nodeName=='P'){n=ren(n,s.element);sel.select(n);sel.collapse();ed.nodeChanged();}else if(e.keyCode==13&&!e.shiftKey&&t.lastElm!='P'){bl=ed.dom.getParent(n,'P');if(bl){ren(bl,s.element);ed.nodeChanged();}}});}},find:function(n,t,s){var ed=this.editor,w=ed.getDoc().createTreeWalker(n,4,null,false),c=-1;while(n=w.nextNode()){c++;if(t==0&&n==s)return c;if(t==1&&c==s)return n;}return-1;},forceRoots:function(ed,e){var t=this,ed=t.editor,b=ed.getBody(),d=ed.getDoc(),se=ed.selection,s=se.getSel(),r=se.getRng(),si=-2,ei,so,eo,tr,c=-0xFFFFFF;var nx,bl,bp,sp,le,nl=b.childNodes,i,n,eid;for(i=nl.length-1;i>=0;i--){nx=nl[i];if(nx.nodeType==3||(!t.dom.isBlock(nx)&&nx.nodeType!=8)){if(!bl){if(nx.nodeType!=3||/[^\s]/g.test(nx.nodeValue)){if(si==-2&&r){if(!isIE){if(r.startContainer.nodeType==1&&(n=r.startContainer.childNodes[r.startOffset])&&n.nodeType==1){eid=n.getAttribute("id");n.setAttribute("id","__mce");}else{if(ed.dom.getParent(r.startContainer,function(e){return e===b;})){so=r.startOffset;eo=r.endOffset;si=t.find(b,0,r.startContainer);ei=t.find(b,0,r.endContainer);}}}else{tr=d.body.createTextRange();tr.moveToElementText(b);tr.collapse(1);bp=tr.move('character',c)*-1;tr=r.duplicate();tr.collapse(1);sp=tr.move('character',c)*-1;tr=r.duplicate();tr.collapse(0);le=(tr.move('character',c)*-1)-sp;si=sp-bp;ei=le;}}bl=ed.dom.create(ed.settings.forced_root_block);bl.appendChild(nx.cloneNode(1));nx.parentNode.replaceChild(bl,nx);}}else{if(bl.hasChildNodes())bl.insertBefore(nx,bl.firstChild);else bl.appendChild(nx);}}else bl=null;}if(si!=-2){if(!isIE){bl=b.getElementsByTagName(ed.settings.element)[0];r=d.createRange();if(si!=-1)r.setStart(t.find(b,1,si),so);else r.setStart(bl,0);if(ei!=-1)r.setEnd(t.find(b,1,ei),eo);else r.setEnd(bl,0);if(s){s.removeAllRanges();s.addRange(r);}}else{try{r=s.createRange();r.moveToElementText(b);r.collapse(1);r.moveStart('character',si);r.moveEnd('character',ei);r.select();}catch(ex){}}}else if(!isIE&&(n=ed.dom.get('__mce'))){if(eid)n.setAttribute('id',eid);else n.removeAttribute('id');r=d.createRange();r.setStartBefore(n);r.setEndBefore(n);se.setRng(r);}},getParentBlock:function(n){var d=this.dom;return d.getParent(n,d.isBlock);},insertPara:function(e){var t=this,ed=t.editor,dom=ed.dom,d=ed.getDoc(),se=ed.settings,s=ed.selection.getSel(),r=s.getRangeAt(0),b=d.body;var rb,ra,dir,sn,so,en,eo,sb,eb,bn,bef,aft,sc,ec,n,vp=dom.getViewPort(ed.getWin()),y,ch,car;function isEmpty(n){n=n.innerHTML;n=n.replace(/<(img|hr|table)/gi,'-');n=n.replace(/<[^>]+>/g,'');return n.replace(/[ \t\r\n]+/g,'')=='';};rb=d.createRange();rb.setStart(s.anchorNode,s.anchorOffset);rb.collapse(true);ra=d.createRange();ra.setStart(s.focusNode,s.focusOffset);ra.collapse(true);dir=rb.compareBoundaryPoints(rb.START_TO_END,ra)<0;sn=dir?s.anchorNode:s.focusNode;so=dir?s.anchorOffset:s.focusOffset;en=dir?s.focusNode:s.anchorNode;eo=dir?s.focusOffset:s.anchorOffset;if(sn===en&&/^(TD|TH)$/.test(sn.nodeName)){dom.remove(sn.firstChild);ed.dom.add(sn,se.element,null,'<br />');aft=ed.dom.add(sn,se.element,null,'<br />');r=d.createRange();r.selectNodeContents(aft);r.collapse(1);ed.selection.setRng(r);return false;}if(sn==b&&en==b&&b.firstChild&&ed.dom.isBlock(b.firstChild)){sn=en=sn.firstChild;so=eo=0;rb=d.createRange();rb.setStart(sn,0);ra=d.createRange();ra.setStart(en,0);}sn=sn.nodeName=="HTML"?d.body:sn;sn=sn.nodeName=="BODY"?sn.firstChild:sn;en=en.nodeName=="HTML"?d.body:en;en=en.nodeName=="BODY"?en.firstChild:en;sb=t.getParentBlock(sn);eb=t.getParentBlock(en);bn=sb?sb.nodeName:se.element;if(t.dom.getParent(sb,function(n){return/OL|UL|PRE/.test(n.nodeName);}))return true;if(sb&&(sb.nodeName=='CAPTION'||/absolute|relative|static/gi.test(sb.style.position))){bn=se.element;sb=null;}if(eb&&(eb.nodeName=='CAPTION'||/absolute|relative|static/gi.test(eb.style.position))){bn=se.element;eb=null;}if(/(TD|TABLE|TH|CAPTION)/.test(bn)||(sb&&bn=="DIV"&&/left|right/gi.test(sb.style.cssFloat))){bn=se.element;sb=eb=null;}bef=(sb&&sb.nodeName==bn)?sb.cloneNode(0):ed.dom.create(bn);aft=(eb&&eb.nodeName==bn)?eb.cloneNode(0):ed.dom.create(bn);aft.removeAttribute('id');if(/^(H[1-6])$/.test(bn)&&sn.nodeValue&&so==sn.nodeValue.length)aft=ed.dom.create(se.element);n=sc=sn;do{if(n==b||n.nodeType==9||t.dom.isBlock(n)||/(TD|TABLE|TH|CAPTION)/.test(n.nodeName))break;sc=n;}while((n=n.previousSibling?n.previousSibling:n.parentNode));n=ec=en;do{if(n==b||n.nodeType==9||t.dom.isBlock(n)||/(TD|TABLE|TH|CAPTION)/.test(n.nodeName))break;ec=n;}while((n=n.nextSibling?n.nextSibling:n.parentNode));if(sc.nodeName==bn)rb.setStart(sc,0);else rb.setStartBefore(sc);rb.setEnd(sn,so);bef.appendChild(rb.cloneContents()||d.createTextNode(''));try{ra.setEndAfter(ec);}catch(ex){}ra.setStart(en,eo);aft.appendChild(ra.cloneContents()||d.createTextNode(''));r=d.createRange();if(!sc.previousSibling&&sc.parentNode.nodeName==bn){r.setStartBefore(sc.parentNode);}else{if(rb.startContainer.nodeName==bn&&rb.startOffset==0)r.setStartBefore(rb.startContainer);else r.setStart(rb.startContainer,rb.startOffset);}if(!ec.nextSibling&&ec.parentNode.nodeName==bn)r.setEndAfter(ec.parentNode);else r.setEnd(ra.endContainer,ra.endOffset);r.deleteContents();if(isOpera)ed.getWin().scrollTo(0,vp.y);if(bef.firstChild&&bef.firstChild.nodeName==bn)bef.innerHTML=bef.firstChild.innerHTML;if(aft.firstChild&&aft.firstChild.nodeName==bn)aft.innerHTML=aft.firstChild.innerHTML;if(isEmpty(bef))bef.innerHTML='<br />';function appendStyles(e,en){var nl=[],nn,n,i;e.innerHTML='';if(se.keep_styles){n=en;do{if(/^(SPAN|STRONG|B|EM|I|FONT|STRIKE|U)$/.test(n.nodeName)){nn=n.cloneNode(false);dom.setAttrib(nn,'id','');nl.push(nn);}}while(n=n.parentNode);}if(nl.length>0){for(i=nl.length-1,nn=e;i>=0;i--)nn=nn.appendChild(nl[i]);nl[0].innerHTML=isOpera?'&nbsp;':'<br />';return nl[0];}else e.innerHTML=isOpera?'&nbsp;':'<br />';};if(isEmpty(aft))car=appendStyles(aft,en);if(isOpera&&parseFloat(opera.version())<9.5){r.insertNode(bef);r.insertNode(aft);}else{r.insertNode(aft);r.insertNode(bef);}aft.normalize();bef.normalize();function first(n){return d.createTreeWalker(n,NodeFilter.SHOW_TEXT,null,false).nextNode()||n;};r=d.createRange();r.selectNodeContents(isGecko?first(car||aft):car||aft);r.collapse(1);s.removeAllRanges();s.addRange(r);y=ed.dom.getPos(aft).y;ch=aft.clientHeight;if(y<vp.y||y+ch>vp.y+vp.h){ed.getWin().scrollTo(0,y<vp.y?y:y-vp.h+25);}return false;},backspaceDelete:function(e,bs){var t=this,ed=t.editor,b=ed.getBody(),n,se=ed.selection,r=se.getRng(),sc=r.startContainer,n,w,tn;if(sc&&ed.dom.isBlock(sc)&&!/^(TD|TH)$/.test(sc.nodeName)&&bs){if(sc.childNodes.length==0||(sc.childNodes.length==1&&sc.firstChild.nodeName=='BR')){n=sc;while((n=n.previousSibling)&&!ed.dom.isBlock(n));if(n){if(sc!=b.firstChild){w=ed.dom.doc.createTreeWalker(n,NodeFilter.SHOW_TEXT,null,false);while(tn=w.nextNode())n=tn;r=ed.getDoc().createRange();r.setStart(n,n.nodeValue?n.nodeValue.length:0);r.setEnd(n,n.nodeValue?n.nodeValue.length:0);se.setRng(r);ed.dom.remove(sc);}return Event.cancel(e);}}}function handler(e){var pr;e=e.target;if(e&&e.parentNode&&e.nodeName=='BR'&&(n=t.getParentBlock(e))){pr=e.previousSibling;Event.remove(b,'DOMNodeInserted',handler);if(pr&&pr.nodeType==3&&/\s+$/.test(pr.nodeValue))return;if(e.previousSibling||e.nextSibling)ed.dom.remove(e);}};Event._add(b,'DOMNodeInserted',handler);window.setTimeout(function(){Event._remove(b,'DOMNodeInserted',handler);},1);}});})();(function(){var DOM=tinymce.DOM,Event=tinymce.dom.Event,each=tinymce.each,extend=tinymce.extend;tinymce.create('tinymce.ControlManager',{ControlManager:function(ed,s){var t=this,i;s=s||{};t.editor=ed;t.controls={};t.onAdd=new tinymce.util.Dispatcher(t);t.onPostRender=new tinymce.util.Dispatcher(t);t.prefix=s.prefix||ed.id+'_';t._cls={};t.onPostRender.add(function(){each(t.controls,function(c){c.postRender();});});},get:function(id){return this.controls[this.prefix+id]||this.controls[id];},setActive:function(id,s){var c=null;if(c=this.get(id))c.setActive(s);return c;},setDisabled:function(id,s){var c=null;if(c=this.get(id))c.setDisabled(s);return c;},add:function(c){var t=this;if(c){t.controls[c.id]=c;t.onAdd.dispatch(c,t);}return c;},createControl:function(n){var c,t=this,ed=t.editor;each(ed.plugins,function(p){if(p.createControl){c=p.createControl(n,t);if(c)return false;}});switch(n){case"|":case"separator":return t.createSeparator();}if(!c&&ed.buttons&&(c=ed.buttons[n]))return t.createButton(n,c);return t.add(c);},createDropMenu:function(id,s,cc){var t=this,ed=t.editor,c,bm,v,cls;s=extend({'class':'mceDropDown',constrain:ed.settings.constrain_menus},s);s['class']=s['class']+' '+ed.getParam('skin')+'Skin';if(v=ed.getParam('skin_variant'))s['class']+=' '+ed.getParam('skin')+'Skin'+v.substring(0,1).toUpperCase()+v.substring(1);id=t.prefix+id;cls=cc||t._cls.dropmenu||tinymce.ui.DropMenu;c=t.controls[id]=new cls(id,s);c.onAddItem.add(function(c,o){var s=o.settings;s.title=ed.getLang(s.title,s.title);if(!s.onclick){s.onclick=function(v){ed.execCommand(s.cmd,s.ui||false,s.value);};}});ed.onRemove.add(function(){c.destroy();});if(tinymce.isIE){c.onShowMenu.add(function(){bm=ed.selection.getBookmark(1);});c.onHideMenu.add(function(){if(bm)ed.selection.moveToBookmark(bm);});}return t.add(c);},createListBox:function(id,s,cc){var t=this,ed=t.editor,cmd,c,cls;if(t.get(id))return null;s.title=ed.translate(s.title);s.scope=s.scope||ed;if(!s.onselect){s.onselect=function(v){ed.execCommand(s.cmd,s.ui||false,v||s.value);};}s=extend({title:s.title,'class':'mce_'+id,scope:s.scope,control_manager:t},s);id=t.prefix+id;if(ed.settings.use_native_selects)c=new tinymce.ui.NativeListBox(id,s);else{cls=cc||t._cls.listbox||tinymce.ui.ListBox;c=new cls(id,s);}t.controls[id]=c;if(tinymce.isWebKit){c.onPostRender.add(function(c,n){Event.add(n,'mousedown',function(){ed.bookmark=ed.selection.getBookmark('simple');});Event.add(n,'focus',function(){ed.selection.moveToBookmark(ed.bookmark);ed.bookmark=null;});});}if(c.hideMenu)ed.onMouseDown.add(c.hideMenu,c);return t.add(c);},createButton:function(id,s,cc){var t=this,ed=t.editor,o,c,cls;if(t.get(id))return null;s.title=ed.translate(s.title);s.label=ed.translate(s.label);s.scope=s.scope||ed;if(!s.onclick&&!s.menu_button){s.onclick=function(){ed.execCommand(s.cmd,s.ui||false,s.value);};}s=extend({title:s.title,'class':'mce_'+id,unavailable_prefix:ed.getLang('unavailable',''),scope:s.scope,control_manager:t},s);id=t.prefix+id;if(s.menu_button){cls=cc||t._cls.menubutton||tinymce.ui.MenuButton;c=new cls(id,s);ed.onMouseDown.add(c.hideMenu,c);}else{cls=t._cls.button||tinymce.ui.Button;c=new cls(id,s);}return t.add(c);},createMenuButton:function(id,s,cc){s=s||{};s.menu_button=1;return this.createButton(id,s,cc);},createSplitButton:function(id,s,cc){var t=this,ed=t.editor,cmd,c,cls;if(t.get(id))return null;s.title=ed.translate(s.title);s.scope=s.scope||ed;if(!s.onclick){s.onclick=function(v){ed.execCommand(s.cmd,s.ui||false,v||s.value);};}if(!s.onselect){s.onselect=function(v){ed.execCommand(s.cmd,s.ui||false,v||s.value);};}s=extend({title:s.title,'class':'mce_'+id,scope:s.scope,control_manager:t},s);id=t.prefix+id;cls=cc||t._cls.splitbutton||tinymce.ui.SplitButton;c=t.add(new cls(id,s));ed.onMouseDown.add(c.hideMenu,c);return c;},createColorSplitButton:function(id,s,cc){var t=this,ed=t.editor,cmd,c,cls,bm;if(t.get(id))return null;s.title=ed.translate(s.title);s.scope=s.scope||ed;if(!s.onclick){s.onclick=function(v){ed.execCommand(s.cmd,s.ui||false,v||s.value);};}if(!s.onselect){s.onselect=function(v){ed.execCommand(s.cmd,s.ui||false,v||s.value);};}s=extend({title:s.title,'class':'mce_'+id,'menu_class':ed.getParam('skin')+'Skin',scope:s.scope,more_colors_title:ed.getLang('more_colors')},s);id=t.prefix+id;cls=cc||t._cls.colorsplitbutton||tinymce.ui.ColorSplitButton;c=new cls(id,s);ed.onMouseDown.add(c.hideMenu,c);ed.onRemove.add(function(){c.destroy();});if(tinymce.isIE){c.onShowMenu.add(function(){bm=ed.selection.getBookmark(1);});c.onHideMenu.add(function(){if(bm){ed.selection.moveToBookmark(bm);bm=0;}});}return t.add(c);},createToolbar:function(id,s,cc){var c,t=this,cls;id=t.prefix+id;cls=cc||t._cls.toolbar||tinymce.ui.Toolbar;c=new cls(id,s);if(t.get(id))return null;return t.add(c);},createSeparator:function(cc){var cls=cc||this._cls.separator||tinymce.ui.Separator;return new cls();},setControlType:function(n,c){return this._cls[n.toLowerCase()]=c;},destroy:function(){each(this.controls,function(c){c.destroy();});this.controls=null;}});})();(function(){var Dispatcher=tinymce.util.Dispatcher,each=tinymce.each,isIE=tinymce.isIE,isOpera=tinymce.isOpera;tinymce.create('tinymce.WindowManager',{WindowManager:function(ed){var t=this;t.editor=ed;t.onOpen=new Dispatcher(t);t.onClose=new Dispatcher(t);t.params={};t.features={};},open:function(s,p){var t=this,f='',x,y,mo=t.editor.settings.dialog_type=='modal',w,sw,sh,vp=tinymce.DOM.getViewPort(),u;s=s||{};p=p||{};sw=isOpera?vp.w:screen.width;sh=isOpera?vp.h:screen.height;s.name=s.name||'mc_'+new Date().getTime();s.width=parseInt(s.width||320);s.height=parseInt(s.height||240);s.resizable=true;s.left=s.left||parseInt(sw/ 2.0) - (s.width /2.0);s.top=s.top||parseInt(sh/ 2.0) - (s.height /2.0);p.inline=false;p.mce_width=s.width;p.mce_height=s.height;p.mce_auto_focus=s.auto_focus;if(mo){if(isIE){s.center=true;s.help=false;s.dialogWidth=s.width+'px';s.dialogHeight=s.height+'px';s.scroll=s.scrollbars||false;}}each(s,function(v,k){if(tinymce.is(v,'boolean'))v=v?'yes':'no';if(!/^(name|url)$/.test(k)){if(isIE&&mo)f+=(f?';':'')+k+':'+v;else f+=(f?',':'')+k+'='+v;}});t.features=s;t.params=p;t.onOpen.dispatch(t,s,p);u=s.url||s.file;if(tinymce.relaxedDomain)u+=(u.indexOf('?')==-1?'?':'&')+'mce_rdomain='+tinymce.relaxedDomain;u=tinymce._addVer(u);try{if(isIE&&mo){w=1;window.showModalDialog(u,window,f);}else w=window.open(u,s.name,f);}catch(ex){}if(!w)alert(t.editor.getLang('popup_blocked'));},close:function(w){w.close();this.onClose.dispatch(this);},createInstance:function(cl,a,b,c,d,e){var f=tinymce.resolve(cl);return new f(a,b,c,d,e);},confirm:function(t,cb,s,w){w=w||window;cb.call(s||this,w.confirm(this._decode(this.editor.getLang(t,t))));},alert:function(tx,cb,s,w){var t=this;w=w||window;w.alert(t._decode(t.editor.getLang(tx,tx)));if(cb)cb.call(s||t);},_decode:function(s){return tinymce.DOM.decode(s).replace(/\\n/g,'\n');}});}()); \ No newline at end of file
diff --git a/bug/bug/jquery-validation-1.8.1/jquery.validate.js b/bug/bug/jquery-validation-1.8.1/jquery.validate.js
new file mode 100644
index 0000000..72296a6
--- /dev/null
+++ b/bug/bug/jquery-validation-1.8.1/jquery.validate.js
@@ -0,0 +1,1166 @@
+/**
+ * jQuery Validation Plugin 1.8.1
+ *
+ * http://bassistance.de/jquery-plugins/jquery-plugin-validation/
+ * http://docs.jquery.com/Plugins/Validation
+ *
+ * Copyright (c) 2006 - 2011 Jörn Zaefferer
+ *
+ * Dual licensed under the MIT and GPL licenses:
+ * http://www.opensource.org/licenses/mit-license.php
+ * http://www.gnu.org/licenses/gpl.html
+ */
+
+(function($) {
+
+$.extend($.fn, {
+ // http://docs.jquery.com/Plugins/Validation/validate
+ validate: function( options ) {
+
+ // if nothing is selected, return nothing; can't chain anyway
+ if (!this.length) {
+ options && options.debug && window.console && console.warn( "nothing selected, can't validate, returning nothing" );
+ return;
+ }
+
+ // check if a validator for this form was already created
+ var validator = $.data(this[0], 'validator');
+ if ( validator ) {
+ return validator;
+ }
+
+ validator = new $.validator( options, this[0] );
+ $.data(this[0], 'validator', validator);
+
+ if ( validator.settings.onsubmit ) {
+
+ // allow suppresing validation by adding a cancel class to the submit button
+ this.find("input, button").filter(".cancel").click(function() {
+ validator.cancelSubmit = true;
+ });
+
+ // when a submitHandler is used, capture the submitting button
+ if (validator.settings.submitHandler) {
+ this.find("input, button").filter(":submit").click(function() {
+ validator.submitButton = this;
+ });
+ }
+
+ // validate the form on submit
+ this.submit( function( event ) {
+ if ( validator.settings.debug )
+ // prevent form submit to be able to see console output
+ event.preventDefault();
+
+ function handle() {
+ if ( validator.settings.submitHandler ) {
+ if (validator.submitButton) {
+ // insert a hidden input as a replacement for the missing submit button
+ var hidden = $("<input type='hidden'/>").attr("name", validator.submitButton.name).val(validator.submitButton.value).appendTo(validator.currentForm);
+ }
+ validator.settings.submitHandler.call( validator, validator.currentForm );
+ if (validator.submitButton) {
+ // and clean up afterwards; thanks to no-block-scope, hidden can be referenced
+ hidden.remove();
+ }
+ return false;
+ }
+ return true;
+ }
+
+ // prevent submit for invalid forms or custom submit handlers
+ if ( validator.cancelSubmit ) {
+ validator.cancelSubmit = false;
+ return handle();
+ }
+ if ( validator.form() ) {
+ if ( validator.pendingRequest ) {
+ validator.formSubmitted = true;
+ return false;
+ }
+ return handle();
+ } else {
+ validator.focusInvalid();
+ return false;
+ }
+ });
+ }
+
+ return validator;
+ },
+ // http://docs.jquery.com/Plugins/Validation/valid
+ valid: function() {
+ if ( $(this[0]).is('form')) {
+ return this.validate().form();
+ } else {
+ var valid = true;
+ var validator = $(this[0].form).validate();
+ this.each(function() {
+ valid &= validator.element(this);
+ });
+ return valid;
+ }
+ },
+ // attributes: space seperated list of attributes to retrieve and remove
+ removeAttrs: function(attributes) {
+ var result = {},
+ $element = this;
+ $.each(attributes.split(/\s/), function(index, value) {
+ result[value] = $element.attr(value);
+ $element.removeAttr(value);
+ });
+ return result;
+ },
+ // http://docs.jquery.com/Plugins/Validation/rules
+ rules: function(command, argument) {
+ var element = this[0];
+
+ if (command) {
+ var settings = $.data(element.form, 'validator').settings;
+ var staticRules = settings.rules;
+ var existingRules = $.validator.staticRules(element);
+ switch(command) {
+ case "add":
+ $.extend(existingRules, $.validator.normalizeRule(argument));
+ staticRules[element.name] = existingRules;
+ if (argument.messages)
+ settings.messages[element.name] = $.extend( settings.messages[element.name], argument.messages );
+ break;
+ case "remove":
+ if (!argument) {
+ delete staticRules[element.name];
+ return existingRules;
+ }
+ var filtered = {};
+ $.each(argument.split(/\s/), function(index, method) {
+ filtered[method] = existingRules[method];
+ delete existingRules[method];
+ });
+ return filtered;
+ }
+ }
+
+ var data = $.validator.normalizeRules(
+ $.extend(
+ {},
+ $.validator.metadataRules(element),
+ $.validator.classRules(element),
+ $.validator.attributeRules(element),
+ $.validator.staticRules(element)
+ ), element);
+
+ // make sure required is at front
+ if (data.required) {
+ var param = data.required;
+ delete data.required;
+ data = $.extend({required: param}, data);
+ }
+
+ return data;
+ }
+});
+
+// Custom selectors
+$.extend($.expr[":"], {
+ // http://docs.jquery.com/Plugins/Validation/blank
+ blank: function(a) {return !$.trim("" + a.value);},
+ // http://docs.jquery.com/Plugins/Validation/filled
+ filled: function(a) {return !!$.trim("" + a.value);},
+ // http://docs.jquery.com/Plugins/Validation/unchecked
+ unchecked: function(a) {return !a.checked;}
+});
+
+// constructor for validator
+$.validator = function( options, form ) {
+ this.settings = $.extend( true, {}, $.validator.defaults, options );
+ this.currentForm = form;
+ this.init();
+};
+
+$.validator.format = function(source, params) {
+ if ( arguments.length == 1 )
+ return function() {
+ var args = $.makeArray(arguments);
+ args.unshift(source);
+ return $.validator.format.apply( this, args );
+ };
+ if ( arguments.length > 2 && params.constructor != Array ) {
+ params = $.makeArray(arguments).slice(1);
+ }
+ if ( params.constructor != Array ) {
+ params = [ params ];
+ }
+ $.each(params, function(i, n) {
+ source = source.replace(new RegExp("\\{" + i + "\\}", "g"), n);
+ });
+ return source;
+};
+
+$.extend($.validator, {
+
+ defaults: {
+ messages: {},
+ groups: {},
+ rules: {},
+ errorClass: "error",
+ validClass: "valid",
+ errorElement: "label",
+ focusInvalid: true,
+ errorContainer: $( [] ),
+ errorLabelContainer: $( [] ),
+ onsubmit: true,
+ ignore: [],
+ ignoreTitle: false,
+ onfocusin: function(element) {
+ this.lastActive = element;
+
+ // hide error label and remove error class on focus if enabled
+ if ( this.settings.focusCleanup && !this.blockFocusCleanup ) {
+ this.settings.unhighlight && this.settings.unhighlight.call( this, element, this.settings.errorClass, this.settings.validClass );
+ this.addWrapper(this.errorsFor(element)).hide();
+ }
+ },
+ onfocusout: function(element) {
+ if ( !this.checkable(element) && (element.name in this.submitted || !this.optional(element)) ) {
+ this.element(element);
+ }
+ },
+ onkeyup: function(element) {
+ if ( element.name in this.submitted || element == this.lastElement ) {
+ this.element(element);
+ }
+ },
+ onclick: function(element) {
+ // click on selects, radiobuttons and checkboxes
+ if ( element.name in this.submitted )
+ this.element(element);
+ // or option elements, check parent select in that case
+ else if (element.parentNode.name in this.submitted)
+ this.element(element.parentNode);
+ },
+ highlight: function(element, errorClass, validClass) {
+ if (element.type === 'radio') {
+ this.findByName(element.name).addClass(errorClass).removeClass(validClass);
+ } else {
+ $(element).addClass(errorClass).removeClass(validClass);
+ }
+ },
+ unhighlight: function(element, errorClass, validClass) {
+ if (element.type === 'radio') {
+ this.findByName(element.name).removeClass(errorClass).addClass(validClass);
+ } else {
+ $(element).removeClass(errorClass).addClass(validClass);
+ }
+ }
+ },
+
+ // http://docs.jquery.com/Plugins/Validation/Validator/setDefaults
+ setDefaults: function(settings) {
+ $.extend( $.validator.defaults, settings );
+ },
+
+ messages: {
+ required: "This field is required.",
+ remote: "Please fix this field.",
+ email: "Please enter a valid email address.",
+ url: "Please enter a valid URL.",
+ date: "Please enter a valid date.",
+ dateISO: "Please enter a valid date (ISO).",
+ number: "Please enter a valid number.",
+ digits: "Please enter only digits.",
+ creditcard: "Please enter a valid credit card number.",
+ equalTo: "Please enter the same value again.",
+ accept: "Please enter a value with a valid extension.",
+ maxlength: $.validator.format("Please enter no more than {0} characters."),
+ minlength: $.validator.format("Please enter at least {0} characters."),
+ rangelength: $.validator.format("Please enter a value between {0} and {1} characters long."),
+ range: $.validator.format("Please enter a value between {0} and {1}."),
+ max: $.validator.format("Please enter a value less than or equal to {0}."),
+ min: $.validator.format("Please enter a value greater than or equal to {0}.")
+ },
+
+ autoCreateRanges: false,
+
+ prototype: {
+
+ init: function() {
+ this.labelContainer = $(this.settings.errorLabelContainer);
+ this.errorContext = this.labelContainer.length && this.labelContainer || $(this.currentForm);
+ this.containers = $(this.settings.errorContainer).add( this.settings.errorLabelContainer );
+ this.submitted = {};
+ this.valueCache = {};
+ this.pendingRequest = 0;
+ this.pending = {};
+ this.invalid = {};
+ this.reset();
+
+ var groups = (this.groups = {});
+ $.each(this.settings.groups, function(key, value) {
+ $.each(value.split(/\s/), function(index, name) {
+ groups[name] = key;
+ });
+ });
+ var rules = this.settings.rules;
+ $.each(rules, function(key, value) {
+ rules[key] = $.validator.normalizeRule(value);
+ });
+
+ function delegate(event) {
+ var validator = $.data(this[0].form, "validator"),
+ eventType = "on" + event.type.replace(/^validate/, "");
+ validator.settings[eventType] && validator.settings[eventType].call(validator, this[0] );
+ }
+ $(this.currentForm)
+ .validateDelegate(":text, :password, :file, select, textarea", "focusin focusout keyup", delegate)
+ .validateDelegate(":radio, :checkbox, select, option", "click", delegate);
+
+ if (this.settings.invalidHandler)
+ $(this.currentForm).bind("invalid-form.validate", this.settings.invalidHandler);
+ },
+
+ // http://docs.jquery.com/Plugins/Validation/Validator/form
+ form: function() {
+ this.checkForm();
+ $.extend(this.submitted, this.errorMap);
+ this.invalid = $.extend({}, this.errorMap);
+ if (!this.valid())
+ $(this.currentForm).triggerHandler("invalid-form", [this]);
+ this.showErrors();
+ return this.valid();
+ },
+
+ checkForm: function() {
+ this.prepareForm();
+ for ( var i = 0, elements = (this.currentElements = this.elements()); elements[i]; i++ ) {
+ this.check( elements[i] );
+ }
+ return this.valid();
+ },
+
+ // http://docs.jquery.com/Plugins/Validation/Validator/element
+ element: function( element ) {
+ element = this.clean( element );
+ this.lastElement = element;
+ this.prepareElement( element );
+ this.currentElements = $(element);
+ var result = this.check( element );
+ if ( result ) {
+ delete this.invalid[element.name];
+ } else {
+ this.invalid[element.name] = true;
+ }
+ if ( !this.numberOfInvalids() ) {
+ // Hide error containers on last error
+ this.toHide = this.toHide.add( this.containers );
+ }
+ this.showErrors();
+ return result;
+ },
+
+ // http://docs.jquery.com/Plugins/Validation/Validator/showErrors
+ showErrors: function(errors) {
+ if(errors) {
+ // add items to error list and map
+ $.extend( this.errorMap, errors );
+ this.errorList = [];
+ for ( var name in errors ) {
+ this.errorList.push({
+ message: errors[name],
+ element: this.findByName(name)[0]
+ });
+ }
+ // remove items from success list
+ this.successList = $.grep( this.successList, function(element) {
+ return !(element.name in errors);
+ });
+ }
+ this.settings.showErrors
+ ? this.settings.showErrors.call( this, this.errorMap, this.errorList )
+ : this.defaultShowErrors();
+ },
+
+ // http://docs.jquery.com/Plugins/Validation/Validator/resetForm
+ resetForm: function() {
+ if ( $.fn.resetForm )
+ $( this.currentForm ).resetForm();
+ this.submitted = {};
+ this.prepareForm();
+ this.hideErrors();
+ this.elements().removeClass( this.settings.errorClass );
+ },
+
+ numberOfInvalids: function() {
+ return this.objectLength(this.invalid);
+ },
+
+ objectLength: function( obj ) {
+ var count = 0;
+ for ( var i in obj )
+ count++;
+ return count;
+ },
+
+ hideErrors: function() {
+ this.addWrapper( this.toHide ).hide();
+ },
+
+ valid: function() {
+ return this.size() == 0;
+ },
+
+ size: function() {
+ return this.errorList.length;
+ },
+
+ focusInvalid: function() {
+ if( this.settings.focusInvalid ) {
+ try {
+ $(this.findLastActive() || this.errorList.length && this.errorList[0].element || [])
+ .filter(":visible")
+ .focus()
+ // manually trigger focusin event; without it, focusin handler isn't called, findLastActive won't have anything to find
+ .trigger("focusin");
+ } catch(e) {
+ // ignore IE throwing errors when focusing hidden elements
+ }
+ }
+ },
+
+ findLastActive: function() {
+ var lastActive = this.lastActive;
+ return lastActive && $.grep(this.errorList, function(n) {
+ return n.element.name == lastActive.name;
+ }).length == 1 && lastActive;
+ },
+
+ elements: function() {
+ var validator = this,
+ rulesCache = {};
+
+ // select all valid inputs inside the form (no submit or reset buttons)
+ return $(this.currentForm)
+ .find("input, select, textarea")
+ .not(":submit, :reset, :image, [disabled]")
+ .not( this.settings.ignore )
+ .filter(function() {
+ !this.name && validator.settings.debug && window.console && console.error( "%o has no name assigned", this);
+
+ // select only the first element for each name, and only those with rules specified
+ if ( this.name in rulesCache || !validator.objectLength($(this).rules()) )
+ return false;
+
+ rulesCache[this.name] = true;
+ return true;
+ });
+ },
+
+ clean: function( selector ) {
+ return $( selector )[0];
+ },
+
+ errors: function() {
+ return $( this.settings.errorElement + "." + this.settings.errorClass, this.errorContext );
+ },
+
+ reset: function() {
+ this.successList = [];
+ this.errorList = [];
+ this.errorMap = {};
+ this.toShow = $([]);
+ this.toHide = $([]);
+ this.currentElements = $([]);
+ },
+
+ prepareForm: function() {
+ this.reset();
+ this.toHide = this.errors().add( this.containers );
+ },
+
+ prepareElement: function( element ) {
+ this.reset();
+ this.toHide = this.errorsFor(element);
+ },
+
+ check: function( element ) {
+ element = this.clean( element );
+
+ // if radio/checkbox, validate first element in group instead
+ if (this.checkable(element)) {
+ element = this.findByName( element.name ).not(this.settings.ignore)[0];
+ }
+
+ var rules = $(element).rules();
+ var dependencyMismatch = false;
+ for (var method in rules ) {
+ var rule = { method: method, parameters: rules[method] };
+ try {
+ var result = $.validator.methods[method].call( this, element.value.replace(/\r/g, ""), element, rule.parameters );
+
+ // if a method indicates that the field is optional and therefore valid,
+ // don't mark it as valid when there are no other rules
+ if ( result == "dependency-mismatch" ) {
+ dependencyMismatch = true;
+ continue;
+ }
+ dependencyMismatch = false;
+
+ if ( result == "pending" ) {
+ this.toHide = this.toHide.not( this.errorsFor(element) );
+ return;
+ }
+
+ if( !result ) {
+ this.formatAndAdd( element, rule );
+ return false;
+ }
+ } catch(e) {
+ this.settings.debug && window.console && console.log("exception occured when checking element " + element.id
+ + ", check the '" + rule.method + "' method", e);
+ throw e;
+ }
+ }
+ if (dependencyMismatch)
+ return;
+ if ( this.objectLength(rules) )
+ this.successList.push(element);
+ return true;
+ },
+
+ // return the custom message for the given element and validation method
+ // specified in the element's "messages" metadata
+ customMetaMessage: function(element, method) {
+ if (!$.metadata)
+ return;
+
+ var meta = this.settings.meta
+ ? $(element).metadata()[this.settings.meta]
+ : $(element).metadata();
+
+ return meta && meta.messages && meta.messages[method];
+ },
+
+ // return the custom message for the given element name and validation method
+ customMessage: function( name, method ) {
+ var m = this.settings.messages[name];
+ return m && (m.constructor == String
+ ? m
+ : m[method]);
+ },
+
+ // return the first defined argument, allowing empty strings
+ findDefined: function() {
+ for(var i = 0; i < arguments.length; i++) {
+ if (arguments[i] !== undefined)
+ return arguments[i];
+ }
+ return undefined;
+ },
+
+ defaultMessage: function( element, method) {
+ return this.findDefined(
+ this.customMessage( element.name, method ),
+ this.customMetaMessage( element, method ),
+ // title is never undefined, so handle empty string as undefined
+ !this.settings.ignoreTitle && element.title || undefined,
+ $.validator.messages[method],
+ "<strong>Warning: No message defined for " + element.name + "</strong>"
+ );
+ },
+
+ formatAndAdd: function( element, rule ) {
+ var message = this.defaultMessage( element, rule.method ),
+ theregex = /\$?\{(\d+)\}/g;
+ if ( typeof message == "function" ) {
+ message = message.call(this, rule.parameters, element);
+ } else if (theregex.test(message)) {
+ message = jQuery.format(message.replace(theregex, '{$1}'), rule.parameters);
+ }
+ this.errorList.push({
+ message: message,
+ element: element
+ });
+
+ this.errorMap[element.name] = message;
+ this.submitted[element.name] = message;
+ },
+
+ addWrapper: function(toToggle) {
+ if ( this.settings.wrapper )
+ toToggle = toToggle.add( toToggle.parent( this.settings.wrapper ) );
+ return toToggle;
+ },
+
+ defaultShowErrors: function() {
+ for ( var i = 0; this.errorList[i]; i++ ) {
+ var error = this.errorList[i];
+ this.settings.highlight && this.settings.highlight.call( this, error.element, this.settings.errorClass, this.settings.validClass );
+ this.showLabel( error.element, error.message );
+ }
+ if( this.errorList.length ) {
+ this.toShow = this.toShow.add( this.containers );
+ }
+ if (this.settings.success) {
+ for ( var i = 0; this.successList[i]; i++ ) {
+ this.showLabel( this.successList[i] );
+ }
+ }
+ if (this.settings.unhighlight) {
+ for ( var i = 0, elements = this.validElements(); elements[i]; i++ ) {
+ this.settings.unhighlight.call( this, elements[i], this.settings.errorClass, this.settings.validClass );
+ }
+ }
+ this.toHide = this.toHide.not( this.toShow );
+ this.hideErrors();
+ this.addWrapper( this.toShow ).show();
+ },
+
+ validElements: function() {
+ return this.currentElements.not(this.invalidElements());
+ },
+
+ invalidElements: function() {
+ return $(this.errorList).map(function() {
+ return this.element;
+ });
+ },
+
+ showLabel: function(element, message) {
+ var label = this.errorsFor( element );
+ if ( label.length ) {
+ // refresh error/success class
+ label.removeClass().addClass( this.settings.errorClass );
+
+ // check if we have a generated label, replace the message then
+ label.attr("generated") && label.html(message);
+ } else {
+ // create label
+ label = $("<" + this.settings.errorElement + "/>")
+ .attr({"for": this.idOrName(element), generated: true})
+ .addClass(this.settings.errorClass)
+ .html(message || "");
+ if ( this.settings.wrapper ) {
+ // make sure the element is visible, even in IE
+ // actually showing the wrapped element is handled elsewhere
+ label = label.hide().show().wrap("<" + this.settings.wrapper + "/>").parent();
+ }
+ if ( !this.labelContainer.append(label).length )
+ this.settings.errorPlacement
+ ? this.settings.errorPlacement(label, $(element) )
+ : label.insertAfter(element);
+ }
+ if ( !message && this.settings.success ) {
+ label.text("");
+ typeof this.settings.success == "string"
+ ? label.addClass( this.settings.success )
+ : this.settings.success( label );
+ }
+ this.toShow = this.toShow.add(label);
+ },
+
+ errorsFor: function(element) {
+ var name = this.idOrName(element);
+ return this.errors().filter(function() {
+ return $(this).attr('for') == name;
+ });
+ },
+
+ idOrName: function(element) {
+ return this.groups[element.name] || (this.checkable(element) ? element.name : element.id || element.name);
+ },
+
+ checkable: function( element ) {
+ return /radio|checkbox/i.test(element.type);
+ },
+
+ findByName: function( name ) {
+ // select by name and filter by form for performance over form.find("[name=...]")
+ var form = this.currentForm;
+ return $(document.getElementsByName(name)).map(function(index, element) {
+ return element.form == form && element.name == name && element || null;
+ });
+ },
+
+ getLength: function(value, element) {
+ switch( element.nodeName.toLowerCase() ) {
+ case 'select':
+ return $("option:selected", element).length;
+ case 'input':
+ if( this.checkable( element) )
+ return this.findByName(element.name).filter(':checked').length;
+ }
+ return value.length;
+ },
+
+ depend: function(param, element) {
+ return this.dependTypes[typeof param]
+ ? this.dependTypes[typeof param](param, element)
+ : true;
+ },
+
+ dependTypes: {
+ "boolean": function(param, element) {
+ return param;
+ },
+ "string": function(param, element) {
+ return !!$(param, element.form).length;
+ },
+ "function": function(param, element) {
+ return param(element);
+ }
+ },
+
+ optional: function(element) {
+ return !$.validator.methods.required.call(this, $.trim(element.value), element) && "dependency-mismatch";
+ },
+
+ startRequest: function(element) {
+ if (!this.pending[element.name]) {
+ this.pendingRequest++;
+ this.pending[element.name] = true;
+ }
+ },
+
+ stopRequest: function(element, valid) {
+ this.pendingRequest--;
+ // sometimes synchronization fails, make sure pendingRequest is never < 0
+ if (this.pendingRequest < 0)
+ this.pendingRequest = 0;
+ delete this.pending[element.name];
+ if ( valid && this.pendingRequest == 0 && this.formSubmitted && this.form() ) {
+ $(this.currentForm).submit();
+ this.formSubmitted = false;
+ } else if (!valid && this.pendingRequest == 0 && this.formSubmitted) {
+ $(this.currentForm).triggerHandler("invalid-form", [this]);
+ this.formSubmitted = false;
+ }
+ },
+
+ previousValue: function(element) {
+ return $.data(element, "previousValue") || $.data(element, "previousValue", {
+ old: null,
+ valid: true,
+ message: this.defaultMessage( element, "remote" )
+ });
+ }
+
+ },
+
+ classRuleSettings: {
+ required: {required: true},
+ email: {email: true},
+ url: {url: true},
+ date: {date: true},
+ dateISO: {dateISO: true},
+ dateDE: {dateDE: true},
+ number: {number: true},
+ numberDE: {numberDE: true},
+ digits: {digits: true},
+ creditcard: {creditcard: true}
+ },
+
+ addClassRules: function(className, rules) {
+ className.constructor == String ?
+ this.classRuleSettings[className] = rules :
+ $.extend(this.classRuleSettings, className);
+ },
+
+ classRules: function(element) {
+ var rules = {};
+ var classes = $(element).attr('class');
+ classes && $.each(classes.split(' '), function() {
+ if (this in $.validator.classRuleSettings) {
+ $.extend(rules, $.validator.classRuleSettings[this]);
+ }
+ });
+ return rules;
+ },
+
+ attributeRules: function(element) {
+ var rules = {};
+ var $element = $(element);
+
+ for (var method in $.validator.methods) {
+ var value = $element.attr(method);
+ if (value) {
+ rules[method] = value;
+ }
+ }
+
+ // maxlength may be returned as -1, 2147483647 (IE) and 524288 (safari) for text inputs
+ if (rules.maxlength && /-1|2147483647|524288/.test(rules.maxlength)) {
+ delete rules.maxlength;
+ }
+
+ return rules;
+ },
+
+ metadataRules: function(element) {
+ if (!$.metadata) return {};
+
+ var meta = $.data(element.form, 'validator').settings.meta;
+ return meta ?
+ $(element).metadata()[meta] :
+ $(element).metadata();
+ },
+
+ staticRules: function(element) {
+ var rules = {};
+ var validator = $.data(element.form, 'validator');
+ if (validator.settings.rules) {
+ rules = $.validator.normalizeRule(validator.settings.rules[element.name]) || {};
+ }
+ return rules;
+ },
+
+ normalizeRules: function(rules, element) {
+ // handle dependency check
+ $.each(rules, function(prop, val) {
+ // ignore rule when param is explicitly false, eg. required:false
+ if (val === false) {
+ delete rules[prop];
+ return;
+ }
+ if (val.param || val.depends) {
+ var keepRule = true;
+ switch (typeof val.depends) {
+ case "string":
+ keepRule = !!$(val.depends, element.form).length;
+ break;
+ case "function":
+ keepRule = val.depends.call(element, element);
+ break;
+ }
+ if (keepRule) {
+ rules[prop] = val.param !== undefined ? val.param : true;
+ } else {
+ delete rules[prop];
+ }
+ }
+ });
+
+ // evaluate parameters
+ $.each(rules, function(rule, parameter) {
+ rules[rule] = $.isFunction(parameter) ? parameter(element) : parameter;
+ });
+
+ // clean number parameters
+ $.each(['minlength', 'maxlength', 'min', 'max'], function() {
+ if (rules[this]) {
+ rules[this] = Number(rules[this]);
+ }
+ });
+ $.each(['rangelength', 'range'], function() {
+ if (rules[this]) {
+ rules[this] = [Number(rules[this][0]), Number(rules[this][1])];
+ }
+ });
+
+ if ($.validator.autoCreateRanges) {
+ // auto-create ranges
+ if (rules.min && rules.max) {
+ rules.range = [rules.min, rules.max];
+ delete rules.min;
+ delete rules.max;
+ }
+ if (rules.minlength && rules.maxlength) {
+ rules.rangelength = [rules.minlength, rules.maxlength];
+ delete rules.minlength;
+ delete rules.maxlength;
+ }
+ }
+
+ // To support custom messages in metadata ignore rule methods titled "messages"
+ if (rules.messages) {
+ delete rules.messages;
+ }
+
+ return rules;
+ },
+
+ // Converts a simple string to a {string: true} rule, e.g., "required" to {required:true}
+ normalizeRule: function(data) {
+ if( typeof data == "string" ) {
+ var transformed = {};
+ $.each(data.split(/\s/), function() {
+ transformed[this] = true;
+ });
+ data = transformed;
+ }
+ return data;
+ },
+
+ // http://docs.jquery.com/Plugins/Validation/Validator/addMethod
+ addMethod: function(name, method, message) {
+ $.validator.methods[name] = method;
+ $.validator.messages[name] = message != undefined ? message : $.validator.messages[name];
+ if (method.length < 3) {
+ $.validator.addClassRules(name, $.validator.normalizeRule(name));
+ }
+ },
+
+ methods: {
+
+ // http://docs.jquery.com/Plugins/Validation/Methods/required
+ required: function(value, element, param) {
+ // check if dependency is met
+ if ( !this.depend(param, element) )
+ return "dependency-mismatch";
+ switch( element.nodeName.toLowerCase() ) {
+ case 'select':
+ // could be an array for select-multiple or a string, both are fine this way
+ var val = $(element).val();
+ return val && val.length > 0;
+ case 'input':
+ if ( this.checkable(element) )
+ return this.getLength(value, element) > 0;
+ default:
+ return $.trim(value).length > 0;
+ }
+ },
+
+ // http://docs.jquery.com/Plugins/Validation/Methods/remote
+ remote: function(value, element, param) {
+ if ( this.optional(element) )
+ return "dependency-mismatch";
+
+ var previous = this.previousValue(element);
+ if (!this.settings.messages[element.name] )
+ this.settings.messages[element.name] = {};
+ previous.originalMessage = this.settings.messages[element.name].remote;
+ this.settings.messages[element.name].remote = previous.message;
+
+ param = typeof param == "string" && {url:param} || param;
+
+ if ( this.pending[element.name] ) {
+ return "pending";
+ }
+ if ( previous.old === value ) {
+ return previous.valid;
+ }
+
+ previous.old = value;
+ var validator = this;
+ this.startRequest(element);
+ var data = {};
+ data[element.name] = value;
+ $.ajax($.extend(true, {
+ url: param,
+ mode: "abort",
+ port: "validate" + element.name,
+ dataType: "json",
+ data: data,
+ success: function(response) {
+ validator.settings.messages[element.name].remote = previous.originalMessage;
+ var valid = response === true;
+ if ( valid ) {
+ var submitted = validator.formSubmitted;
+ validator.prepareElement(element);
+ validator.formSubmitted = submitted;
+ validator.successList.push(element);
+ validator.showErrors();
+ } else {
+ var errors = {};
+ var message = response || validator.defaultMessage( element, "remote" );
+ errors[element.name] = previous.message = $.isFunction(message) ? message(value) : message;
+ validator.showErrors(errors);
+ }
+ previous.valid = valid;
+ validator.stopRequest(element, valid);
+ }
+ }, param));
+ return "pending";
+ },
+
+ // http://docs.jquery.com/Plugins/Validation/Methods/minlength
+ minlength: function(value, element, param) {
+ return this.optional(element) || this.getLength($.trim(value), element) >= param;
+ },
+
+ // http://docs.jquery.com/Plugins/Validation/Methods/maxlength
+ maxlength: function(value, element, param) {
+ return this.optional(element) || this.getLength($.trim(value), element) <= param;
+ },
+
+ // http://docs.jquery.com/Plugins/Validation/Methods/rangelength
+ rangelength: function(value, element, param) {
+ var length = this.getLength($.trim(value), element);
+ return this.optional(element) || ( length >= param[0] && length <= param[1] );
+ },
+
+ // http://docs.jquery.com/Plugins/Validation/Methods/min
+ min: function( value, element, param ) {
+ return this.optional(element) || value >= param;
+ },
+
+ // http://docs.jquery.com/Plugins/Validation/Methods/max
+ max: function( value, element, param ) {
+ return this.optional(element) || value <= param;
+ },
+
+ // http://docs.jquery.com/Plugins/Validation/Methods/range
+ range: function( value, element, param ) {
+ return this.optional(element) || ( value >= param[0] && value <= param[1] );
+ },
+
+ // http://docs.jquery.com/Plugins/Validation/Methods/email
+ email: function(value, element) {
+ // contributed by Scott Gonzalez: http://projects.scottsplayground.com/email_address_validation/
+ return this.optional(element) || /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i.test(value);
+ },
+
+ // http://docs.jquery.com/Plugins/Validation/Methods/url
+ url: function(value, element) {
+ // contributed by Scott Gonzalez: http://projects.scottsplayground.com/iri/
+ return this.optional(element) || /^(https?|ftp):\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(\#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/i.test(value);
+ },
+
+ // http://docs.jquery.com/Plugins/Validation/Methods/date
+ date: function(value, element) {
+ return this.optional(element) || !/Invalid|NaN/.test(new Date(value));
+ },
+
+ // http://docs.jquery.com/Plugins/Validation/Methods/dateISO
+ dateISO: function(value, element) {
+ return this.optional(element) || /^\d{4}[\/-]\d{1,2}[\/-]\d{1,2}$/.test(value);
+ },
+
+ // http://docs.jquery.com/Plugins/Validation/Methods/number
+ number: function(value, element) {
+ return this.optional(element) || /^-?(?:\d+|\d{1,3}(?:,\d{3})+)(?:\.\d+)?$/.test(value);
+ },
+
+ // http://docs.jquery.com/Plugins/Validation/Methods/digits
+ digits: function(value, element) {
+ return this.optional(element) || /^\d+$/.test(value);
+ },
+
+ // http://docs.jquery.com/Plugins/Validation/Methods/creditcard
+ // based on http://en.wikipedia.org/wiki/Luhn
+ creditcard: function(value, element) {
+ if ( this.optional(element) )
+ return "dependency-mismatch";
+ // accept only digits and dashes
+ if (/[^0-9-]+/.test(value))
+ return false;
+ var nCheck = 0,
+ nDigit = 0,
+ bEven = false;
+
+ value = value.replace(/\D/g, "");
+
+ for (var n = value.length - 1; n >= 0; n--) {
+ var cDigit = value.charAt(n);
+ var nDigit = parseInt(cDigit, 10);
+ if (bEven) {
+ if ((nDigit *= 2) > 9)
+ nDigit -= 9;
+ }
+ nCheck += nDigit;
+ bEven = !bEven;
+ }
+
+ return (nCheck % 10) == 0;
+ },
+
+ // http://docs.jquery.com/Plugins/Validation/Methods/accept
+ accept: function(value, element, param) {
+ param = typeof param == "string" ? param.replace(/,/g, '|') : "png|jpe?g|gif";
+ return this.optional(element) || value.match(new RegExp(".(" + param + ")$", "i"));
+ },
+
+ // http://docs.jquery.com/Plugins/Validation/Methods/equalTo
+ equalTo: function(value, element, param) {
+ // bind to the blur event of the target in order to revalidate whenever the target field is updated
+ // TODO find a way to bind the event just once, avoiding the unbind-rebind overhead
+ var target = $(param).unbind(".validate-equalTo").bind("blur.validate-equalTo", function() {
+ $(element).valid();
+ });
+ return value == target.val();
+ }
+
+ }
+
+});
+
+// deprecated, use $.validator.format instead
+$.format = $.validator.format;
+
+})(jQuery);
+
+// ajax mode: abort
+// usage: $.ajax({ mode: "abort"[, port: "uniqueport"]});
+// if mode:"abort" is used, the previous request on that port (port can be undefined) is aborted via XMLHttpRequest.abort()
+;(function($) {
+ var pendingRequests = {};
+ // Use a prefilter if available (1.5+)
+ if ( $.ajaxPrefilter ) {
+ $.ajaxPrefilter(function(settings, _, xhr) {
+ var port = settings.port;
+ if (settings.mode == "abort") {
+ if ( pendingRequests[port] ) {
+ pendingRequests[port].abort();
+ }
+ pendingRequests[port] = xhr;
+ }
+ });
+ } else {
+ // Proxy ajax
+ var ajax = $.ajax;
+ $.ajax = function(settings) {
+ var mode = ( "mode" in settings ? settings : $.ajaxSettings ).mode,
+ port = ( "port" in settings ? settings : $.ajaxSettings ).port;
+ if (mode == "abort") {
+ if ( pendingRequests[port] ) {
+ pendingRequests[port].abort();
+ }
+ return (pendingRequests[port] = ajax.apply(this, arguments));
+ }
+ return ajax.apply(this, arguments);
+ };
+ }
+})(jQuery);
+
+// provides cross-browser focusin and focusout events
+// IE has native support, in other browsers, use event caputuring (neither bubbles)
+
+// provides delegate(type: String, delegate: Selector, handler: Callback) plugin for easier event delegation
+// handler is only called when $(event.target).is(delegate), in the scope of the jquery-object for event.target
+;(function($) {
+ // only implement if not provided by jQuery core (since 1.4)
+ // TODO verify if jQuery 1.4's implementation is compatible with older jQuery special-event APIs
+ if (!jQuery.event.special.focusin && !jQuery.event.special.focusout && document.addEventListener) {
+ $.each({
+ focus: 'focusin',
+ blur: 'focusout'
+ }, function( original, fix ){
+ $.event.special[fix] = {
+ setup:function() {
+ this.addEventListener( original, handler, true );
+ },
+ teardown:function() {
+ this.removeEventListener( original, handler, true );
+ },
+ handler: function(e) {
+ arguments[0] = $.event.fix(e);
+ arguments[0].type = fix;
+ return $.event.handle.apply(this, arguments);
+ }
+ };
+ function handler(e) {
+ e = $.event.fix(e);
+ e.type = fix;
+ return $.event.handle.call(this, e);
+ }
+ });
+ };
+ $.extend($.fn, {
+ validateDelegate: function(delegate, type, handler) {
+ return this.bind(type, function(event) {
+ var target = $(event.target);
+ if (target.is(delegate)) {
+ return handler.apply(target, arguments);
+ }
+ });
+ }
+ });
+})(jQuery);
diff --git a/bug/bug/jquery-validation-1.8.1/jquery.validate.min.js b/bug/bug/jquery-validation-1.8.1/jquery.validate.min.js
new file mode 100644
index 0000000..882c699
--- /dev/null
+++ b/bug/bug/jquery-validation-1.8.1/jquery.validate.min.js
@@ -0,0 +1,51 @@
+/**
+ * jQuery Validation Plugin 1.8.1
+ *
+ * http://bassistance.de/jquery-plugins/jquery-plugin-validation/
+ * http://docs.jquery.com/Plugins/Validation
+ *
+ * Copyright (c) 2006 - 2011 Jörn Zaefferer
+ *
+ * Dual licensed under the MIT and GPL licenses:
+ * http://www.opensource.org/licenses/mit-license.php
+ * http://www.gnu.org/licenses/gpl.html
+ */
+(function(c){c.extend(c.fn,{validate:function(a){if(this.length){var b=c.data(this[0],"validator");if(b)return b;b=new c.validator(a,this[0]);c.data(this[0],"validator",b);if(b.settings.onsubmit){this.find("input, button").filter(".cancel").click(function(){b.cancelSubmit=true});b.settings.submitHandler&&this.find("input, button").filter(":submit").click(function(){b.submitButton=this});this.submit(function(d){function e(){if(b.settings.submitHandler){if(b.submitButton)var f=c("<input type='hidden'/>").attr("name",
+b.submitButton.name).val(b.submitButton.value).appendTo(b.currentForm);b.settings.submitHandler.call(b,b.currentForm);b.submitButton&&f.remove();return false}return true}b.settings.debug&&d.preventDefault();if(b.cancelSubmit){b.cancelSubmit=false;return e()}if(b.form()){if(b.pendingRequest){b.formSubmitted=true;return false}return e()}else{b.focusInvalid();return false}})}return b}else a&&a.debug&&window.console&&console.warn("nothing selected, can't validate, returning nothing")},valid:function(){if(c(this[0]).is("form"))return this.validate().form();
+else{var a=true,b=c(this[0].form).validate();this.each(function(){a&=b.element(this)});return a}},removeAttrs:function(a){var b={},d=this;c.each(a.split(/\s/),function(e,f){b[f]=d.attr(f);d.removeAttr(f)});return b},rules:function(a,b){var d=this[0];if(a){var e=c.data(d.form,"validator").settings,f=e.rules,g=c.validator.staticRules(d);switch(a){case "add":c.extend(g,c.validator.normalizeRule(b));f[d.name]=g;if(b.messages)e.messages[d.name]=c.extend(e.messages[d.name],b.messages);break;case "remove":if(!b){delete f[d.name];
+return g}var h={};c.each(b.split(/\s/),function(j,i){h[i]=g[i];delete g[i]});return h}}d=c.validator.normalizeRules(c.extend({},c.validator.metadataRules(d),c.validator.classRules(d),c.validator.attributeRules(d),c.validator.staticRules(d)),d);if(d.required){e=d.required;delete d.required;d=c.extend({required:e},d)}return d}});c.extend(c.expr[":"],{blank:function(a){return!c.trim(""+a.value)},filled:function(a){return!!c.trim(""+a.value)},unchecked:function(a){return!a.checked}});c.validator=function(a,
+b){this.settings=c.extend(true,{},c.validator.defaults,a);this.currentForm=b;this.init()};c.validator.format=function(a,b){if(arguments.length==1)return function(){var d=c.makeArray(arguments);d.unshift(a);return c.validator.format.apply(this,d)};if(arguments.length>2&&b.constructor!=Array)b=c.makeArray(arguments).slice(1);if(b.constructor!=Array)b=[b];c.each(b,function(d,e){a=a.replace(RegExp("\\{"+d+"\\}","g"),e)});return a};c.extend(c.validator,{defaults:{messages:{},groups:{},rules:{},errorClass:"error",
+validClass:"valid",errorElement:"label",focusInvalid:true,errorContainer:c([]),errorLabelContainer:c([]),onsubmit:true,ignore:[],ignoreTitle:false,onfocusin:function(a){this.lastActive=a;if(this.settings.focusCleanup&&!this.blockFocusCleanup){this.settings.unhighlight&&this.settings.unhighlight.call(this,a,this.settings.errorClass,this.settings.validClass);this.addWrapper(this.errorsFor(a)).hide()}},onfocusout:function(a){if(!this.checkable(a)&&(a.name in this.submitted||!this.optional(a)))this.element(a)},
+onkeyup:function(a){if(a.name in this.submitted||a==this.lastElement)this.element(a)},onclick:function(a){if(a.name in this.submitted)this.element(a);else a.parentNode.name in this.submitted&&this.element(a.parentNode)},highlight:function(a,b,d){a.type==="radio"?this.findByName(a.name).addClass(b).removeClass(d):c(a).addClass(b).removeClass(d)},unhighlight:function(a,b,d){a.type==="radio"?this.findByName(a.name).removeClass(b).addClass(d):c(a).removeClass(b).addClass(d)}},setDefaults:function(a){c.extend(c.validator.defaults,
+a)},messages:{required:"This field is required.",remote:"Please fix this field.",email:"Please enter a valid email address.",url:"Please enter a valid URL.",date:"Please enter a valid date.",dateISO:"Please enter a valid date (ISO).",number:"Please enter a valid number.",digits:"Please enter only digits.",creditcard:"Please enter a valid credit card number.",equalTo:"Please enter the same value again.",accept:"Please enter a value with a valid extension.",maxlength:c.validator.format("Please enter no more than {0} characters."),
+minlength:c.validator.format("Please enter at least {0} characters."),rangelength:c.validator.format("Please enter a value between {0} and {1} characters long."),range:c.validator.format("Please enter a value between {0} and {1}."),max:c.validator.format("Please enter a value less than or equal to {0}."),min:c.validator.format("Please enter a value greater than or equal to {0}.")},autoCreateRanges:false,prototype:{init:function(){function a(e){var f=c.data(this[0].form,"validator");e="on"+e.type.replace(/^validate/,
+"");f.settings[e]&&f.settings[e].call(f,this[0])}this.labelContainer=c(this.settings.errorLabelContainer);this.errorContext=this.labelContainer.length&&this.labelContainer||c(this.currentForm);this.containers=c(this.settings.errorContainer).add(this.settings.errorLabelContainer);this.submitted={};this.valueCache={};this.pendingRequest=0;this.pending={};this.invalid={};this.reset();var b=this.groups={};c.each(this.settings.groups,function(e,f){c.each(f.split(/\s/),function(g,h){b[h]=e})});var d=this.settings.rules;
+c.each(d,function(e,f){d[e]=c.validator.normalizeRule(f)});c(this.currentForm).validateDelegate(":text, :password, :file, select, textarea","focusin focusout keyup",a).validateDelegate(":radio, :checkbox, select, option","click",a);this.settings.invalidHandler&&c(this.currentForm).bind("invalid-form.validate",this.settings.invalidHandler)},form:function(){this.checkForm();c.extend(this.submitted,this.errorMap);this.invalid=c.extend({},this.errorMap);this.valid()||c(this.currentForm).triggerHandler("invalid-form",
+[this]);this.showErrors();return this.valid()},checkForm:function(){this.prepareForm();for(var a=0,b=this.currentElements=this.elements();b[a];a++)this.check(b[a]);return this.valid()},element:function(a){this.lastElement=a=this.clean(a);this.prepareElement(a);this.currentElements=c(a);var b=this.check(a);if(b)delete this.invalid[a.name];else this.invalid[a.name]=true;if(!this.numberOfInvalids())this.toHide=this.toHide.add(this.containers);this.showErrors();return b},showErrors:function(a){if(a){c.extend(this.errorMap,
+a);this.errorList=[];for(var b in a)this.errorList.push({message:a[b],element:this.findByName(b)[0]});this.successList=c.grep(this.successList,function(d){return!(d.name in a)})}this.settings.showErrors?this.settings.showErrors.call(this,this.errorMap,this.errorList):this.defaultShowErrors()},resetForm:function(){c.fn.resetForm&&c(this.currentForm).resetForm();this.submitted={};this.prepareForm();this.hideErrors();this.elements().removeClass(this.settings.errorClass)},numberOfInvalids:function(){return this.objectLength(this.invalid)},
+objectLength:function(a){var b=0,d;for(d in a)b++;return b},hideErrors:function(){this.addWrapper(this.toHide).hide()},valid:function(){return this.size()==0},size:function(){return this.errorList.length},focusInvalid:function(){if(this.settings.focusInvalid)try{c(this.findLastActive()||this.errorList.length&&this.errorList[0].element||[]).filter(":visible").focus().trigger("focusin")}catch(a){}},findLastActive:function(){var a=this.lastActive;return a&&c.grep(this.errorList,function(b){return b.element.name==
+a.name}).length==1&&a},elements:function(){var a=this,b={};return c(this.currentForm).find("input, select, textarea").not(":submit, :reset, :image, [disabled]").not(this.settings.ignore).filter(function(){!this.name&&a.settings.debug&&window.console&&console.error("%o has no name assigned",this);if(this.name in b||!a.objectLength(c(this).rules()))return false;return b[this.name]=true})},clean:function(a){return c(a)[0]},errors:function(){return c(this.settings.errorElement+"."+this.settings.errorClass,
+this.errorContext)},reset:function(){this.successList=[];this.errorList=[];this.errorMap={};this.toShow=c([]);this.toHide=c([]);this.currentElements=c([])},prepareForm:function(){this.reset();this.toHide=this.errors().add(this.containers)},prepareElement:function(a){this.reset();this.toHide=this.errorsFor(a)},check:function(a){a=this.clean(a);if(this.checkable(a))a=this.findByName(a.name).not(this.settings.ignore)[0];var b=c(a).rules(),d=false,e;for(e in b){var f={method:e,parameters:b[e]};try{var g=
+c.validator.methods[e].call(this,a.value.replace(/\r/g,""),a,f.parameters);if(g=="dependency-mismatch")d=true;else{d=false;if(g=="pending"){this.toHide=this.toHide.not(this.errorsFor(a));return}if(!g){this.formatAndAdd(a,f);return false}}}catch(h){this.settings.debug&&window.console&&console.log("exception occured when checking element "+a.id+", check the '"+f.method+"' method",h);throw h;}}if(!d){this.objectLength(b)&&this.successList.push(a);return true}},customMetaMessage:function(a,b){if(c.metadata){var d=
+this.settings.meta?c(a).metadata()[this.settings.meta]:c(a).metadata();return d&&d.messages&&d.messages[b]}},customMessage:function(a,b){var d=this.settings.messages[a];return d&&(d.constructor==String?d:d[b])},findDefined:function(){for(var a=0;a<arguments.length;a++)if(arguments[a]!==undefined)return arguments[a]},defaultMessage:function(a,b){return this.findDefined(this.customMessage(a.name,b),this.customMetaMessage(a,b),!this.settings.ignoreTitle&&a.title||undefined,c.validator.messages[b],"<strong>Warning: No message defined for "+
+a.name+"</strong>")},formatAndAdd:function(a,b){var d=this.defaultMessage(a,b.method),e=/\$?\{(\d+)\}/g;if(typeof d=="function")d=d.call(this,b.parameters,a);else if(e.test(d))d=jQuery.format(d.replace(e,"{$1}"),b.parameters);this.errorList.push({message:d,element:a});this.errorMap[a.name]=d;this.submitted[a.name]=d},addWrapper:function(a){if(this.settings.wrapper)a=a.add(a.parent(this.settings.wrapper));return a},defaultShowErrors:function(){for(var a=0;this.errorList[a];a++){var b=this.errorList[a];
+this.settings.highlight&&this.settings.highlight.call(this,b.element,this.settings.errorClass,this.settings.validClass);this.showLabel(b.element,b.message)}if(this.errorList.length)this.toShow=this.toShow.add(this.containers);if(this.settings.success)for(a=0;this.successList[a];a++)this.showLabel(this.successList[a]);if(this.settings.unhighlight){a=0;for(b=this.validElements();b[a];a++)this.settings.unhighlight.call(this,b[a],this.settings.errorClass,this.settings.validClass)}this.toHide=this.toHide.not(this.toShow);
+this.hideErrors();this.addWrapper(this.toShow).show()},validElements:function(){return this.currentElements.not(this.invalidElements())},invalidElements:function(){return c(this.errorList).map(function(){return this.element})},showLabel:function(a,b){var d=this.errorsFor(a);if(d.length){d.removeClass().addClass(this.settings.errorClass);d.attr("generated")&&d.html(b)}else{d=c("<"+this.settings.errorElement+"/>").attr({"for":this.idOrName(a),generated:true}).addClass(this.settings.errorClass).html(b||
+"");if(this.settings.wrapper)d=d.hide().show().wrap("<"+this.settings.wrapper+"/>").parent();this.labelContainer.append(d).length||(this.settings.errorPlacement?this.settings.errorPlacement(d,c(a)):d.insertAfter(a))}if(!b&&this.settings.success){d.text("");typeof this.settings.success=="string"?d.addClass(this.settings.success):this.settings.success(d)}this.toShow=this.toShow.add(d)},errorsFor:function(a){var b=this.idOrName(a);return this.errors().filter(function(){return c(this).attr("for")==b})},
+idOrName:function(a){return this.groups[a.name]||(this.checkable(a)?a.name:a.id||a.name)},checkable:function(a){return/radio|checkbox/i.test(a.type)},findByName:function(a){var b=this.currentForm;return c(document.getElementsByName(a)).map(function(d,e){return e.form==b&&e.name==a&&e||null})},getLength:function(a,b){switch(b.nodeName.toLowerCase()){case "select":return c("option:selected",b).length;case "input":if(this.checkable(b))return this.findByName(b.name).filter(":checked").length}return a.length},
+depend:function(a,b){return this.dependTypes[typeof a]?this.dependTypes[typeof a](a,b):true},dependTypes:{"boolean":function(a){return a},string:function(a,b){return!!c(a,b.form).length},"function":function(a,b){return a(b)}},optional:function(a){return!c.validator.methods.required.call(this,c.trim(a.value),a)&&"dependency-mismatch"},startRequest:function(a){if(!this.pending[a.name]){this.pendingRequest++;this.pending[a.name]=true}},stopRequest:function(a,b){this.pendingRequest--;if(this.pendingRequest<
+0)this.pendingRequest=0;delete this.pending[a.name];if(b&&this.pendingRequest==0&&this.formSubmitted&&this.form()){c(this.currentForm).submit();this.formSubmitted=false}else if(!b&&this.pendingRequest==0&&this.formSubmitted){c(this.currentForm).triggerHandler("invalid-form",[this]);this.formSubmitted=false}},previousValue:function(a){return c.data(a,"previousValue")||c.data(a,"previousValue",{old:null,valid:true,message:this.defaultMessage(a,"remote")})}},classRuleSettings:{required:{required:true},
+email:{email:true},url:{url:true},date:{date:true},dateISO:{dateISO:true},dateDE:{dateDE:true},number:{number:true},numberDE:{numberDE:true},digits:{digits:true},creditcard:{creditcard:true}},addClassRules:function(a,b){a.constructor==String?this.classRuleSettings[a]=b:c.extend(this.classRuleSettings,a)},classRules:function(a){var b={};(a=c(a).attr("class"))&&c.each(a.split(" "),function(){this in c.validator.classRuleSettings&&c.extend(b,c.validator.classRuleSettings[this])});return b},attributeRules:function(a){var b=
+{};a=c(a);for(var d in c.validator.methods){var e=a.attr(d);if(e)b[d]=e}b.maxlength&&/-1|2147483647|524288/.test(b.maxlength)&&delete b.maxlength;return b},metadataRules:function(a){if(!c.metadata)return{};var b=c.data(a.form,"validator").settings.meta;return b?c(a).metadata()[b]:c(a).metadata()},staticRules:function(a){var b={},d=c.data(a.form,"validator");if(d.settings.rules)b=c.validator.normalizeRule(d.settings.rules[a.name])||{};return b},normalizeRules:function(a,b){c.each(a,function(d,e){if(e===
+false)delete a[d];else if(e.param||e.depends){var f=true;switch(typeof e.depends){case "string":f=!!c(e.depends,b.form).length;break;case "function":f=e.depends.call(b,b)}if(f)a[d]=e.param!==undefined?e.param:true;else delete a[d]}});c.each(a,function(d,e){a[d]=c.isFunction(e)?e(b):e});c.each(["minlength","maxlength","min","max"],function(){if(a[this])a[this]=Number(a[this])});c.each(["rangelength","range"],function(){if(a[this])a[this]=[Number(a[this][0]),Number(a[this][1])]});if(c.validator.autoCreateRanges){if(a.min&&
+a.max){a.range=[a.min,a.max];delete a.min;delete a.max}if(a.minlength&&a.maxlength){a.rangelength=[a.minlength,a.maxlength];delete a.minlength;delete a.maxlength}}a.messages&&delete a.messages;return a},normalizeRule:function(a){if(typeof a=="string"){var b={};c.each(a.split(/\s/),function(){b[this]=true});a=b}return a},addMethod:function(a,b,d){c.validator.methods[a]=b;c.validator.messages[a]=d!=undefined?d:c.validator.messages[a];b.length<3&&c.validator.addClassRules(a,c.validator.normalizeRule(a))},
+methods:{required:function(a,b,d){if(!this.depend(d,b))return"dependency-mismatch";switch(b.nodeName.toLowerCase()){case "select":return(a=c(b).val())&&a.length>0;case "input":if(this.checkable(b))return this.getLength(a,b)>0;default:return c.trim(a).length>0}},remote:function(a,b,d){if(this.optional(b))return"dependency-mismatch";var e=this.previousValue(b);this.settings.messages[b.name]||(this.settings.messages[b.name]={});e.originalMessage=this.settings.messages[b.name].remote;this.settings.messages[b.name].remote=
+e.message;d=typeof d=="string"&&{url:d}||d;if(this.pending[b.name])return"pending";if(e.old===a)return e.valid;e.old=a;var f=this;this.startRequest(b);var g={};g[b.name]=a;c.ajax(c.extend(true,{url:d,mode:"abort",port:"validate"+b.name,dataType:"json",data:g,success:function(h){f.settings.messages[b.name].remote=e.originalMessage;var j=h===true;if(j){var i=f.formSubmitted;f.prepareElement(b);f.formSubmitted=i;f.successList.push(b);f.showErrors()}else{i={};h=h||f.defaultMessage(b,"remote");i[b.name]=
+e.message=c.isFunction(h)?h(a):h;f.showErrors(i)}e.valid=j;f.stopRequest(b,j)}},d));return"pending"},minlength:function(a,b,d){return this.optional(b)||this.getLength(c.trim(a),b)>=d},maxlength:function(a,b,d){return this.optional(b)||this.getLength(c.trim(a),b)<=d},rangelength:function(a,b,d){a=this.getLength(c.trim(a),b);return this.optional(b)||a>=d[0]&&a<=d[1]},min:function(a,b,d){return this.optional(b)||a>=d},max:function(a,b,d){return this.optional(b)||a<=d},range:function(a,b,d){return this.optional(b)||
+a>=d[0]&&a<=d[1]},email:function(a,b){return this.optional(b)||/^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i.test(a)},
+url:function(a,b){return this.optional(b)||/^(https?|ftp):\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(\#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/i.test(a)},
+date:function(a,b){return this.optional(b)||!/Invalid|NaN/.test(new Date(a))},dateISO:function(a,b){return this.optional(b)||/^\d{4}[\/-]\d{1,2}[\/-]\d{1,2}$/.test(a)},number:function(a,b){return this.optional(b)||/^-?(?:\d+|\d{1,3}(?:,\d{3})+)(?:\.\d+)?$/.test(a)},digits:function(a,b){return this.optional(b)||/^\d+$/.test(a)},creditcard:function(a,b){if(this.optional(b))return"dependency-mismatch";if(/[^0-9-]+/.test(a))return false;var d=0,e=0,f=false;a=a.replace(/\D/g,"");for(var g=a.length-1;g>=
+0;g--){e=a.charAt(g);e=parseInt(e,10);if(f)if((e*=2)>9)e-=9;d+=e;f=!f}return d%10==0},accept:function(a,b,d){d=typeof d=="string"?d.replace(/,/g,"|"):"png|jpe?g|gif";return this.optional(b)||a.match(RegExp(".("+d+")$","i"))},equalTo:function(a,b,d){d=c(d).unbind(".validate-equalTo").bind("blur.validate-equalTo",function(){c(b).valid()});return a==d.val()}}});c.format=c.validator.format})(jQuery);
+(function(c){var a={};if(c.ajaxPrefilter)c.ajaxPrefilter(function(d,e,f){e=d.port;if(d.mode=="abort"){a[e]&&a[e].abort();a[e]=f}});else{var b=c.ajax;c.ajax=function(d){var e=("port"in d?d:c.ajaxSettings).port;if(("mode"in d?d:c.ajaxSettings).mode=="abort"){a[e]&&a[e].abort();return a[e]=b.apply(this,arguments)}return b.apply(this,arguments)}}})(jQuery);
+(function(c){!jQuery.event.special.focusin&&!jQuery.event.special.focusout&&document.addEventListener&&c.each({focus:"focusin",blur:"focusout"},function(a,b){function d(e){e=c.event.fix(e);e.type=b;return c.event.handle.call(this,e)}c.event.special[b]={setup:function(){this.addEventListener(a,d,true)},teardown:function(){this.removeEventListener(a,d,true)},handler:function(e){arguments[0]=c.event.fix(e);arguments[0].type=b;return c.event.handle.apply(this,arguments)}}});c.extend(c.fn,{validateDelegate:function(a,
+b,d){return this.bind(b,function(e){var f=c(e.target);if(f.is(a))return d.apply(f,arguments)})}})})(jQuery);
diff --git a/bug/bug/jquery-validation-1.8.1/lib/jquery-1.3.2.js b/bug/bug/jquery-validation-1.8.1/lib/jquery-1.3.2.js
new file mode 100644
index 0000000..714166a
--- /dev/null
+++ b/bug/bug/jquery-validation-1.8.1/lib/jquery-1.3.2.js
@@ -0,0 +1,4376 @@
+/*!
+ * jQuery JavaScript Library v1.3.2
+ * http://jquery.com/
+ *
+ * Copyright (c) 2009 John Resig
+ * Dual licensed under the MIT and GPL licenses.
+ * http://docs.jquery.com/License
+ *
+ * Date: 2009-02-19 17:34:21 -0500 (Thu, 19 Feb 2009)
+ * Revision: 6246
+ */
+(function(){
+
+var
+ // Will speed up references to window, and allows munging its name.
+ window = this,
+ // Will speed up references to undefined, and allows munging its name.
+ undefined,
+ // Map over jQuery in case of overwrite
+ _jQuery = window.jQuery,
+ // Map over the $ in case of overwrite
+ _$ = window.$,
+
+ jQuery = window.jQuery = window.$ = function( selector, context ) {
+ // The jQuery object is actually just the init constructor 'enhanced'
+ return new jQuery.fn.init( selector, context );
+ },
+
+ // A simple way to check for HTML strings or ID strings
+ // (both of which we optimize for)
+ quickExpr = /^[^<]*(<(.|\s)+>)[^>]*$|^#([\w-]+)$/,
+ // Is it a simple selector
+ isSimple = /^.[^:#\[\.,]*$/;
+
+jQuery.fn = jQuery.prototype = {
+ init: function( selector, context ) {
+ // Make sure that a selection was provided
+ selector = selector || document;
+
+ // Handle $(DOMElement)
+ if ( selector.nodeType ) {
+ this[0] = selector;
+ this.length = 1;
+ this.context = selector;
+ return this;
+ }
+ // Handle HTML strings
+ if ( typeof selector === "string" ) {
+ // Are we dealing with HTML string or an ID?
+ var match = quickExpr.exec( selector );
+
+ // Verify a match, and that no context was specified for #id
+ if ( match && (match[1] || !context) ) {
+
+ // HANDLE: $(html) -> $(array)
+ if ( match[1] )
+ selector = jQuery.clean( [ match[1] ], context );
+
+ // HANDLE: $("#id")
+ else {
+ var elem = document.getElementById( match[3] );
+
+ // Handle the case where IE and Opera return items
+ // by name instead of ID
+ if ( elem && elem.id != match[3] )
+ return jQuery().find( selector );
+
+ // Otherwise, we inject the element directly into the jQuery object
+ var ret = jQuery( elem || [] );
+ ret.context = document;
+ ret.selector = selector;
+ return ret;
+ }
+
+ // HANDLE: $(expr, [context])
+ // (which is just equivalent to: $(content).find(expr)
+ } else
+ return jQuery( context ).find( selector );
+
+ // HANDLE: $(function)
+ // Shortcut for document ready
+ } else if ( jQuery.isFunction( selector ) )
+ return jQuery( document ).ready( selector );
+
+ // Make sure that old selector state is passed along
+ if ( selector.selector && selector.context ) {
+ this.selector = selector.selector;
+ this.context = selector.context;
+ }
+
+ return this.setArray(jQuery.isArray( selector ) ?
+ selector :
+ jQuery.makeArray(selector));
+ },
+
+ // Start with an empty selector
+ selector: "",
+
+ // The current version of jQuery being used
+ jquery: "1.3.2",
+
+ // The number of elements contained in the matched element set
+ size: function() {
+ return this.length;
+ },
+
+ // Get the Nth element in the matched element set OR
+ // Get the whole matched element set as a clean array
+ get: function( num ) {
+ return num === undefined ?
+
+ // Return a 'clean' array
+ Array.prototype.slice.call( this ) :
+
+ // Return just the object
+ this[ num ];
+ },
+
+ // Take an array of elements and push it onto the stack
+ // (returning the new matched element set)
+ pushStack: function( elems, name, selector ) {
+ // Build a new jQuery matched element set
+ var ret = jQuery( elems );
+
+ // Add the old object onto the stack (as a reference)
+ ret.prevObject = this;
+
+ ret.context = this.context;
+
+ if ( name === "find" )
+ ret.selector = this.selector + (this.selector ? " " : "") + selector;
+ else if ( name )
+ ret.selector = this.selector + "." + name + "(" + selector + ")";
+
+ // Return the newly-formed element set
+ return ret;
+ },
+
+ // Force the current matched set of elements to become
+ // the specified array of elements (destroying the stack in the process)
+ // You should use pushStack() in order to do this, but maintain the stack
+ setArray: function( elems ) {
+ // Resetting the length to 0, then using the native Array push
+ // is a super-fast way to populate an object with array-like properties
+ this.length = 0;
+ Array.prototype.push.apply( this, elems );
+
+ return this;
+ },
+
+ // Execute a callback for every element in the matched set.
+ // (You can seed the arguments with an array of args, but this is
+ // only used internally.)
+ each: function( callback, args ) {
+ return jQuery.each( this, callback, args );
+ },
+
+ // Determine the position of an element within
+ // the matched set of elements
+ index: function( elem ) {
+ // Locate the position of the desired element
+ return jQuery.inArray(
+ // If it receives a jQuery object, the first element is used
+ elem && elem.jquery ? elem[0] : elem
+ , this );
+ },
+
+ attr: function( name, value, type ) {
+ var options = name;
+
+ // Look for the case where we're accessing a style value
+ if ( typeof name === "string" )
+ if ( value === undefined )
+ return this[0] && jQuery[ type || "attr" ]( this[0], name );
+
+ else {
+ options = {};
+ options[ name ] = value;
+ }
+
+ // Check to see if we're setting style values
+ return this.each(function(i){
+ // Set all the styles
+ for ( name in options )
+ jQuery.attr(
+ type ?
+ this.style :
+ this,
+ name, jQuery.prop( this, options[ name ], type, i, name )
+ );
+ });
+ },
+
+ css: function( key, value ) {
+ // ignore negative width and height values
+ if ( (key == 'width' || key == 'height') && parseFloat(value) < 0 )
+ value = undefined;
+ return this.attr( key, value, "curCSS" );
+ },
+
+ text: function( text ) {
+ if ( typeof text !== "object" && text != null )
+ return this.empty().append( (this[0] && this[0].ownerDocument || document).createTextNode( text ) );
+
+ var ret = "";
+
+ jQuery.each( text || this, function(){
+ jQuery.each( this.childNodes, function(){
+ if ( this.nodeType != 8 )
+ ret += this.nodeType != 1 ?
+ this.nodeValue :
+ jQuery.fn.text( [ this ] );
+ });
+ });
+
+ return ret;
+ },
+
+ wrapAll: function( html ) {
+ if ( this[0] ) {
+ // The elements to wrap the target around
+ var wrap = jQuery( html, this[0].ownerDocument ).clone();
+
+ if ( this[0].parentNode )
+ wrap.insertBefore( this[0] );
+
+ wrap.map(function(){
+ var elem = this;
+
+ while ( elem.firstChild )
+ elem = elem.firstChild;
+
+ return elem;
+ }).append(this);
+ }
+
+ return this;
+ },
+
+ wrapInner: function( html ) {
+ return this.each(function(){
+ jQuery( this ).contents().wrapAll( html );
+ });
+ },
+
+ wrap: function( html ) {
+ return this.each(function(){
+ jQuery( this ).wrapAll( html );
+ });
+ },
+
+ append: function() {
+ return this.domManip(arguments, true, function(elem){
+ if (this.nodeType == 1)
+ this.appendChild( elem );
+ });
+ },
+
+ prepend: function() {
+ return this.domManip(arguments, true, function(elem){
+ if (this.nodeType == 1)
+ this.insertBefore( elem, this.firstChild );
+ });
+ },
+
+ before: function() {
+ return this.domManip(arguments, false, function(elem){
+ this.parentNode.insertBefore( elem, this );
+ });
+ },
+
+ after: function() {
+ return this.domManip(arguments, false, function(elem){
+ this.parentNode.insertBefore( elem, this.nextSibling );
+ });
+ },
+
+ end: function() {
+ return this.prevObject || jQuery( [] );
+ },
+
+ // For internal use only.
+ // Behaves like an Array's method, not like a jQuery method.
+ push: [].push,
+ sort: [].sort,
+ splice: [].splice,
+
+ find: function( selector ) {
+ if ( this.length === 1 ) {
+ var ret = this.pushStack( [], "find", selector );
+ ret.length = 0;
+ jQuery.find( selector, this[0], ret );
+ return ret;
+ } else {
+ return this.pushStack( jQuery.unique(jQuery.map(this, function(elem){
+ return jQuery.find( selector, elem );
+ })), "find", selector );
+ }
+ },
+
+ clone: function( events ) {
+ // Do the clone
+ var ret = this.map(function(){
+ if ( !jQuery.support.noCloneEvent && !jQuery.isXMLDoc(this) ) {
+ // IE copies events bound via attachEvent when
+ // using cloneNode. Calling detachEvent on the
+ // clone will also remove the events from the orignal
+ // In order to get around this, we use innerHTML.
+ // Unfortunately, this means some modifications to
+ // attributes in IE that are actually only stored
+ // as properties will not be copied (such as the
+ // the name attribute on an input).
+ var html = this.outerHTML;
+ if ( !html ) {
+ var div = this.ownerDocument.createElement("div");
+ div.appendChild( this.cloneNode(true) );
+ html = div.innerHTML;
+ }
+
+ return jQuery.clean([html.replace(/ jQuery\d+="(?:\d+|null)"/g, "").replace(/^\s*/, "")])[0];
+ } else
+ return this.cloneNode(true);
+ });
+
+ // Copy the events from the original to the clone
+ if ( events === true ) {
+ var orig = this.find("*").andSelf(), i = 0;
+
+ ret.find("*").andSelf().each(function(){
+ if ( this.nodeName !== orig[i].nodeName )
+ return;
+
+ var events = jQuery.data( orig[i], "events" );
+
+ for ( var type in events ) {
+ for ( var handler in events[ type ] ) {
+ jQuery.event.add( this, type, events[ type ][ handler ], events[ type ][ handler ].data );
+ }
+ }
+
+ i++;
+ });
+ }
+
+ // Return the cloned set
+ return ret;
+ },
+
+ filter: function( selector ) {
+ return this.pushStack(
+ jQuery.isFunction( selector ) &&
+ jQuery.grep(this, function(elem, i){
+ return selector.call( elem, i );
+ }) ||
+
+ jQuery.multiFilter( selector, jQuery.grep(this, function(elem){
+ return elem.nodeType === 1;
+ }) ), "filter", selector );
+ },
+
+ closest: function( selector ) {
+ var pos = jQuery.expr.match.POS.test( selector ) ? jQuery(selector) : null,
+ closer = 0;
+
+ return this.map(function(){
+ var cur = this;
+ while ( cur && cur.ownerDocument ) {
+ if ( pos ? pos.index(cur) > -1 : jQuery(cur).is(selector) ) {
+ jQuery.data(cur, "closest", closer);
+ return cur;
+ }
+ cur = cur.parentNode;
+ closer++;
+ }
+ });
+ },
+
+ not: function( selector ) {
+ if ( typeof selector === "string" )
+ // test special case where just one selector is passed in
+ if ( isSimple.test( selector ) )
+ return this.pushStack( jQuery.multiFilter( selector, this, true ), "not", selector );
+ else
+ selector = jQuery.multiFilter( selector, this );
+
+ var isArrayLike = selector.length && selector[selector.length - 1] !== undefined && !selector.nodeType;
+ return this.filter(function() {
+ return isArrayLike ? jQuery.inArray( this, selector ) < 0 : this != selector;
+ });
+ },
+
+ add: function( selector ) {
+ return this.pushStack( jQuery.unique( jQuery.merge(
+ this.get(),
+ typeof selector === "string" ?
+ jQuery( selector ) :
+ jQuery.makeArray( selector )
+ )));
+ },
+
+ is: function( selector ) {
+ return !!selector && jQuery.multiFilter( selector, this ).length > 0;
+ },
+
+ hasClass: function( selector ) {
+ return !!selector && this.is( "." + selector );
+ },
+
+ val: function( value ) {
+ if ( value === undefined ) {
+ var elem = this[0];
+
+ if ( elem ) {
+ if( jQuery.nodeName( elem, 'option' ) )
+ return (elem.attributes.value || {}).specified ? elem.value : elem.text;
+
+ // We need to handle select boxes special
+ if ( jQuery.nodeName( elem, "select" ) ) {
+ var index = elem.selectedIndex,
+ values = [],
+ options = elem.options,
+ one = elem.type == "select-one";
+
+ // Nothing was selected
+ if ( index < 0 )
+ return null;
+
+ // Loop through all the selected options
+ for ( var i = one ? index : 0, max = one ? index + 1 : options.length; i < max; i++ ) {
+ var option = options[ i ];
+
+ if ( option.selected ) {
+ // Get the specifc value for the option
+ value = jQuery(option).val();
+
+ // We don't need an array for one selects
+ if ( one )
+ return value;
+
+ // Multi-Selects return an array
+ values.push( value );
+ }
+ }
+
+ return values;
+ }
+
+ // Everything else, we just grab the value
+ return (elem.value || "").replace(/\r/g, "");
+
+ }
+
+ return undefined;
+ }
+
+ if ( typeof value === "number" )
+ value += '';
+
+ return this.each(function(){
+ if ( this.nodeType != 1 )
+ return;
+
+ if ( jQuery.isArray(value) && /radio|checkbox/.test( this.type ) )
+ this.checked = (jQuery.inArray(this.value, value) >= 0 ||
+ jQuery.inArray(this.name, value) >= 0);
+
+ else if ( jQuery.nodeName( this, "select" ) ) {
+ var values = jQuery.makeArray(value);
+
+ jQuery( "option", this ).each(function(){
+ this.selected = (jQuery.inArray( this.value, values ) >= 0 ||
+ jQuery.inArray( this.text, values ) >= 0);
+ });
+
+ if ( !values.length )
+ this.selectedIndex = -1;
+
+ } else
+ this.value = value;
+ });
+ },
+
+ html: function( value ) {
+ return value === undefined ?
+ (this[0] ?
+ this[0].innerHTML.replace(/ jQuery\d+="(?:\d+|null)"/g, "") :
+ null) :
+ this.empty().append( value );
+ },
+
+ replaceWith: function( value ) {
+ return this.after( value ).remove();
+ },
+
+ eq: function( i ) {
+ return this.slice( i, +i + 1 );
+ },
+
+ slice: function() {
+ return this.pushStack( Array.prototype.slice.apply( this, arguments ),
+ "slice", Array.prototype.slice.call(arguments).join(",") );
+ },
+
+ map: function( callback ) {
+ return this.pushStack( jQuery.map(this, function(elem, i){
+ return callback.call( elem, i, elem );
+ }));
+ },
+
+ andSelf: function() {
+ return this.add( this.prevObject );
+ },
+
+ domManip: function( args, table, callback ) {
+ if ( this[0] ) {
+ var fragment = (this[0].ownerDocument || this[0]).createDocumentFragment(),
+ scripts = jQuery.clean( args, (this[0].ownerDocument || this[0]), fragment ),
+ first = fragment.firstChild;
+
+ if ( first )
+ for ( var i = 0, l = this.length; i < l; i++ )
+ callback.call( root(this[i], first), this.length > 1 || i > 0 ?
+ fragment.cloneNode(true) : fragment );
+
+ if ( scripts )
+ jQuery.each( scripts, evalScript );
+ }
+
+ return this;
+
+ function root( elem, cur ) {
+ return table && jQuery.nodeName(elem, "table") && jQuery.nodeName(cur, "tr") ?
+ (elem.getElementsByTagName("tbody")[0] ||
+ elem.appendChild(elem.ownerDocument.createElement("tbody"))) :
+ elem;
+ }
+ }
+};
+
+// Give the init function the jQuery prototype for later instantiation
+jQuery.fn.init.prototype = jQuery.fn;
+
+function evalScript( i, elem ) {
+ if ( elem.src )
+ jQuery.ajax({
+ url: elem.src,
+ async: false,
+ dataType: "script"
+ });
+
+ else
+ jQuery.globalEval( elem.text || elem.textContent || elem.innerHTML || "" );
+
+ if ( elem.parentNode )
+ elem.parentNode.removeChild( elem );
+}
+
+function now(){
+ return +new Date;
+}
+
+jQuery.extend = jQuery.fn.extend = function() {
+ // copy reference to target object
+ var target = arguments[0] || {}, i = 1, length = arguments.length, deep = false, options;
+
+ // Handle a deep copy situation
+ if ( typeof target === "boolean" ) {
+ deep = target;
+ target = arguments[1] || {};
+ // skip the boolean and the target
+ i = 2;
+ }
+
+ // Handle case when target is a string or something (possible in deep copy)
+ if ( typeof target !== "object" && !jQuery.isFunction(target) )
+ target = {};
+
+ // extend jQuery itself if only one argument is passed
+ if ( length == i ) {
+ target = this;
+ --i;
+ }
+
+ for ( ; i < length; i++ )
+ // Only deal with non-null/undefined values
+ if ( (options = arguments[ i ]) != null )
+ // Extend the base object
+ for ( var name in options ) {
+ var src = target[ name ], copy = options[ name ];
+
+ // Prevent never-ending loop
+ if ( target === copy )
+ continue;
+
+ // Recurse if we're merging object values
+ if ( deep && copy && typeof copy === "object" && !copy.nodeType )
+ target[ name ] = jQuery.extend( deep,
+ // Never move original objects, clone them
+ src || ( copy.length != null ? [ ] : { } )
+ , copy );
+
+ // Don't bring in undefined values
+ else if ( copy !== undefined )
+ target[ name ] = copy;
+
+ }
+
+ // Return the modified object
+ return target;
+};
+
+// exclude the following css properties to add px
+var exclude = /z-?index|font-?weight|opacity|zoom|line-?height/i,
+ // cache defaultView
+ defaultView = document.defaultView || {},
+ toString = Object.prototype.toString;
+
+jQuery.extend({
+ noConflict: function( deep ) {
+ window.$ = _$;
+
+ if ( deep )
+ window.jQuery = _jQuery;
+
+ return jQuery;
+ },
+
+ // See test/unit/core.js for details concerning isFunction.
+ // Since version 1.3, DOM methods and functions like alert
+ // aren't supported. They return false on IE (#2968).
+ isFunction: function( obj ) {
+ return toString.call(obj) === "[object Function]";
+ },
+
+ isArray: function( obj ) {
+ return toString.call(obj) === "[object Array]";
+ },
+
+ // check if an element is in a (or is an) XML document
+ isXMLDoc: function( elem ) {
+ return elem.nodeType === 9 && elem.documentElement.nodeName !== "HTML" ||
+ !!elem.ownerDocument && jQuery.isXMLDoc( elem.ownerDocument );
+ },
+
+ // Evalulates a script in a global context
+ globalEval: function( data ) {
+ if ( data && /\S/.test(data) ) {
+ // Inspired by code by Andrea Giammarchi
+ // http://webreflection.blogspot.com/2007/08/global-scope-evaluation-and-dom.html
+ var head = document.getElementsByTagName("head")[0] || document.documentElement,
+ script = document.createElement("script");
+
+ script.type = "text/javascript";
+ if ( jQuery.support.scriptEval )
+ script.appendChild( document.createTextNode( data ) );
+ else
+ script.text = data;
+
+ // Use insertBefore instead of appendChild to circumvent an IE6 bug.
+ // This arises when a base node is used (#2709).
+ head.insertBefore( script, head.firstChild );
+ head.removeChild( script );
+ }
+ },
+
+ nodeName: function( elem, name ) {
+ return elem.nodeName && elem.nodeName.toUpperCase() == name.toUpperCase();
+ },
+
+ // args is for internal usage only
+ each: function( object, callback, args ) {
+ var name, i = 0, length = object.length;
+
+ if ( args ) {
+ if ( length === undefined ) {
+ for ( name in object )
+ if ( callback.apply( object[ name ], args ) === false )
+ break;
+ } else
+ for ( ; i < length; )
+ if ( callback.apply( object[ i++ ], args ) === false )
+ break;
+
+ // A special, fast, case for the most common use of each
+ } else {
+ if ( length === undefined ) {
+ for ( name in object )
+ if ( callback.call( object[ name ], name, object[ name ] ) === false )
+ break;
+ } else
+ for ( var value = object[0];
+ i < length && callback.call( value, i, value ) !== false; value = object[++i] ){}
+ }
+
+ return object;
+ },
+
+ prop: function( elem, value, type, i, name ) {
+ // Handle executable functions
+ if ( jQuery.isFunction( value ) )
+ value = value.call( elem, i );
+
+ // Handle passing in a number to a CSS property
+ return typeof value === "number" && type == "curCSS" && !exclude.test( name ) ?
+ value + "px" :
+ value;
+ },
+
+ className: {
+ // internal only, use addClass("class")
+ add: function( elem, classNames ) {
+ jQuery.each((classNames || "").split(/\s+/), function(i, className){
+ if ( elem.nodeType == 1 && !jQuery.className.has( elem.className, className ) )
+ elem.className += (elem.className ? " " : "") + className;
+ });
+ },
+
+ // internal only, use removeClass("class")
+ remove: function( elem, classNames ) {
+ if (elem.nodeType == 1)
+ elem.className = classNames !== undefined ?
+ jQuery.grep(elem.className.split(/\s+/), function(className){
+ return !jQuery.className.has( classNames, className );
+ }).join(" ") :
+ "";
+ },
+
+ // internal only, use hasClass("class")
+ has: function( elem, className ) {
+ return elem && jQuery.inArray( className, (elem.className || elem).toString().split(/\s+/) ) > -1;
+ }
+ },
+
+ // A method for quickly swapping in/out CSS properties to get correct calculations
+ swap: function( elem, options, callback ) {
+ var old = {};
+ // Remember the old values, and insert the new ones
+ for ( var name in options ) {
+ old[ name ] = elem.style[ name ];
+ elem.style[ name ] = options[ name ];
+ }
+
+ callback.call( elem );
+
+ // Revert the old values
+ for ( var name in options )
+ elem.style[ name ] = old[ name ];
+ },
+
+ css: function( elem, name, force, extra ) {
+ if ( name == "width" || name == "height" ) {
+ var val, props = { position: "absolute", visibility: "hidden", display:"block" }, which = name == "width" ? [ "Left", "Right" ] : [ "Top", "Bottom" ];
+
+ function getWH() {
+ val = name == "width" ? elem.offsetWidth : elem.offsetHeight;
+
+ if ( extra === "border" )
+ return;
+
+ jQuery.each( which, function() {
+ if ( !extra )
+ val -= parseFloat(jQuery.curCSS( elem, "padding" + this, true)) || 0;
+ if ( extra === "margin" )
+ val += parseFloat(jQuery.curCSS( elem, "margin" + this, true)) || 0;
+ else
+ val -= parseFloat(jQuery.curCSS( elem, "border" + this + "Width", true)) || 0;
+ });
+ }
+
+ if ( elem.offsetWidth !== 0 )
+ getWH();
+ else
+ jQuery.swap( elem, props, getWH );
+
+ return Math.max(0, Math.round(val));
+ }
+
+ return jQuery.curCSS( elem, name, force );
+ },
+
+ curCSS: function( elem, name, force ) {
+ var ret, style = elem.style;
+
+ // We need to handle opacity special in IE
+ if ( name == "opacity" && !jQuery.support.opacity ) {
+ ret = jQuery.attr( style, "opacity" );
+
+ return ret == "" ?
+ "1" :
+ ret;
+ }
+
+ // Make sure we're using the right name for getting the float value
+ if ( name.match( /float/i ) )
+ name = styleFloat;
+
+ if ( !force && style && style[ name ] )
+ ret = style[ name ];
+
+ else if ( defaultView.getComputedStyle ) {
+
+ // Only "float" is needed here
+ if ( name.match( /float/i ) )
+ name = "float";
+
+ name = name.replace( /([A-Z])/g, "-$1" ).toLowerCase();
+
+ var computedStyle = defaultView.getComputedStyle( elem, null );
+
+ if ( computedStyle )
+ ret = computedStyle.getPropertyValue( name );
+
+ // We should always get a number back from opacity
+ if ( name == "opacity" && ret == "" )
+ ret = "1";
+
+ } else if ( elem.currentStyle ) {
+ var camelCase = name.replace(/\-(\w)/g, function(all, letter){
+ return letter.toUpperCase();
+ });
+
+ ret = elem.currentStyle[ name ] || elem.currentStyle[ camelCase ];
+
+ // From the awesome hack by Dean Edwards
+ // http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291
+
+ // If we're not dealing with a regular pixel number
+ // but a number that has a weird ending, we need to convert it to pixels
+ if ( !/^\d+(px)?$/i.test( ret ) && /^\d/.test( ret ) ) {
+ // Remember the original values
+ var left = style.left, rsLeft = elem.runtimeStyle.left;
+
+ // Put in the new values to get a computed value out
+ elem.runtimeStyle.left = elem.currentStyle.left;
+ style.left = ret || 0;
+ ret = style.pixelLeft + "px";
+
+ // Revert the changed values
+ style.left = left;
+ elem.runtimeStyle.left = rsLeft;
+ }
+ }
+
+ return ret;
+ },
+
+ clean: function( elems, context, fragment ) {
+ context = context || document;
+
+ // !context.createElement fails in IE with an error but returns typeof 'object'
+ if ( typeof context.createElement === "undefined" )
+ context = context.ownerDocument || context[0] && context[0].ownerDocument || document;
+
+ // If a single string is passed in and it's a single tag
+ // just do a createElement and skip the rest
+ if ( !fragment && elems.length === 1 && typeof elems[0] === "string" ) {
+ var match = /^<(\w+)\s*\/?>$/.exec(elems[0]);
+ if ( match )
+ return [ context.createElement( match[1] ) ];
+ }
+
+ var ret = [], scripts = [], div = context.createElement("div");
+
+ jQuery.each(elems, function(i, elem){
+ if ( typeof elem === "number" )
+ elem += '';
+
+ if ( !elem )
+ return;
+
+ // Convert html string into DOM nodes
+ if ( typeof elem === "string" ) {
+ // Fix "XHTML"-style tags in all browsers
+ elem = elem.replace(/(<(\w+)[^>]*?)\/>/g, function(all, front, tag){
+ return tag.match(/^(abbr|br|col|img|input|link|meta|param|hr|area|embed)$/i) ?
+ all :
+ front + "></" + tag + ">";
+ });
+
+ // Trim whitespace, otherwise indexOf won't work as expected
+ var tags = elem.replace(/^\s+/, "").substring(0, 10).toLowerCase();
+
+ var wrap =
+ // option or optgroup
+ !tags.indexOf("<opt") &&
+ [ 1, "<select multiple='multiple'>", "</select>" ] ||
+
+ !tags.indexOf("<leg") &&
+ [ 1, "<fieldset>", "</fieldset>" ] ||
+
+ tags.match(/^<(thead|tbody|tfoot|colg|cap)/) &&
+ [ 1, "<table>", "</table>" ] ||
+
+ !tags.indexOf("<tr") &&
+ [ 2, "<table><tbody>", "</tbody></table>" ] ||
+
+ // <thead> matched above
+ (!tags.indexOf("<td") || !tags.indexOf("<th")) &&
+ [ 3, "<table><tbody><tr>", "</tr></tbody></table>" ] ||
+
+ !tags.indexOf("<col") &&
+ [ 2, "<table><tbody></tbody><colgroup>", "</colgroup></table>" ] ||
+
+ // IE can't serialize <link> and <script> tags normally
+ !jQuery.support.htmlSerialize &&
+ [ 1, "div<div>", "</div>" ] ||
+
+ [ 0, "", "" ];
+
+ // Go to html and back, then peel off extra wrappers
+ div.innerHTML = wrap[1] + elem + wrap[2];
+
+ // Move to the right depth
+ while ( wrap[0]-- )
+ div = div.lastChild;
+
+ // Remove IE's autoinserted <tbody> from table fragments
+ if ( !jQuery.support.tbody ) {
+
+ // String was a <table>, *may* have spurious <tbody>
+ var hasBody = /<tbody/i.test(elem),
+ tbody = !tags.indexOf("<table") && !hasBody ?
+ div.firstChild && div.firstChild.childNodes :
+
+ // String was a bare <thead> or <tfoot>
+ wrap[1] == "<table>" && !hasBody ?
+ div.childNodes :
+ [];
+
+ for ( var j = tbody.length - 1; j >= 0 ; --j )
+ if ( jQuery.nodeName( tbody[ j ], "tbody" ) && !tbody[ j ].childNodes.length )
+ tbody[ j ].parentNode.removeChild( tbody[ j ] );
+
+ }
+
+ // IE completely kills leading whitespace when innerHTML is used
+ if ( !jQuery.support.leadingWhitespace && /^\s/.test( elem ) )
+ div.insertBefore( context.createTextNode( elem.match(/^\s*/)[0] ), div.firstChild );
+
+ elem = jQuery.makeArray( div.childNodes );
+ }
+
+ if ( elem.nodeType )
+ ret.push( elem );
+ else
+ ret = jQuery.merge( ret, elem );
+
+ });
+
+ if ( fragment ) {
+ for ( var i = 0; ret[i]; i++ ) {
+ if ( jQuery.nodeName( ret[i], "script" ) && (!ret[i].type || ret[i].type.toLowerCase() === "text/javascript") ) {
+ scripts.push( ret[i].parentNode ? ret[i].parentNode.removeChild( ret[i] ) : ret[i] );
+ } else {
+ if ( ret[i].nodeType === 1 )
+ ret.splice.apply( ret, [i + 1, 0].concat(jQuery.makeArray(ret[i].getElementsByTagName("script"))) );
+ fragment.appendChild( ret[i] );
+ }
+ }
+
+ return scripts;
+ }
+
+ return ret;
+ },
+
+ attr: function( elem, name, value ) {
+ // don't set attributes on text and comment nodes
+ if (!elem || elem.nodeType == 3 || elem.nodeType == 8)
+ return undefined;
+
+ var notxml = !jQuery.isXMLDoc( elem ),
+ // Whether we are setting (or getting)
+ set = value !== undefined;
+
+ // Try to normalize/fix the name
+ name = notxml && jQuery.props[ name ] || name;
+
+ // Only do all the following if this is a node (faster for style)
+ // IE elem.getAttribute passes even for style
+ if ( elem.tagName ) {
+
+ // These attributes require special treatment
+ var special = /href|src|style/.test( name );
+
+ // Safari mis-reports the default selected property of a hidden option
+ // Accessing the parent's selectedIndex property fixes it
+ if ( name == "selected" && elem.parentNode )
+ elem.parentNode.selectedIndex;
+
+ // If applicable, access the attribute via the DOM 0 way
+ if ( name in elem && notxml && !special ) {
+ if ( set ){
+ // We can't allow the type property to be changed (since it causes problems in IE)
+ if ( name == "type" && jQuery.nodeName( elem, "input" ) && elem.parentNode )
+ throw "type property can't be changed";
+
+ elem[ name ] = value;
+ }
+
+ // browsers index elements by id/name on forms, give priority to attributes.
+ if( jQuery.nodeName( elem, "form" ) && elem.getAttributeNode(name) )
+ return elem.getAttributeNode( name ).nodeValue;
+
+ // elem.tabIndex doesn't always return the correct value when it hasn't been explicitly set
+ // http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/
+ if ( name == "tabIndex" ) {
+ var attributeNode = elem.getAttributeNode( "tabIndex" );
+ return attributeNode && attributeNode.specified
+ ? attributeNode.value
+ : elem.nodeName.match(/(button|input|object|select|textarea)/i)
+ ? 0
+ : elem.nodeName.match(/^(a|area)$/i) && elem.href
+ ? 0
+ : undefined;
+ }
+
+ return elem[ name ];
+ }
+
+ if ( !jQuery.support.style && notxml && name == "style" )
+ return jQuery.attr( elem.style, "cssText", value );
+
+ if ( set )
+ // convert the value to a string (all browsers do this but IE) see #1070
+ elem.setAttribute( name, "" + value );
+
+ var attr = !jQuery.support.hrefNormalized && notxml && special
+ // Some attributes require a special call on IE
+ ? elem.getAttribute( name, 2 )
+ : elem.getAttribute( name );
+
+ // Non-existent attributes return null, we normalize to undefined
+ return attr === null ? undefined : attr;
+ }
+
+ // elem is actually elem.style ... set the style
+
+ // IE uses filters for opacity
+ if ( !jQuery.support.opacity && name == "opacity" ) {
+ if ( set ) {
+ // IE has trouble with opacity if it does not have layout
+ // Force it by setting the zoom level
+ elem.zoom = 1;
+
+ // Set the alpha filter to set the opacity
+ elem.filter = (elem.filter || "").replace( /alpha\([^)]*\)/, "" ) +
+ (parseInt( value ) + '' == "NaN" ? "" : "alpha(opacity=" + value * 100 + ")");
+ }
+
+ return elem.filter && elem.filter.indexOf("opacity=") >= 0 ?
+ (parseFloat( elem.filter.match(/opacity=([^)]*)/)[1] ) / 100) + '':
+ "";
+ }
+
+ name = name.replace(/-([a-z])/ig, function(all, letter){
+ return letter.toUpperCase();
+ });
+
+ if ( set )
+ elem[ name ] = value;
+
+ return elem[ name ];
+ },
+
+ trim: function( text ) {
+ return (text || "").replace( /^\s+|\s+$/g, "" );
+ },
+
+ makeArray: function( array ) {
+ var ret = [];
+
+ if( array != null ){
+ var i = array.length;
+ // The window, strings (and functions) also have 'length'
+ if( i == null || typeof array === "string" || jQuery.isFunction(array) || array.setInterval )
+ ret[0] = array;
+ else
+ while( i )
+ ret[--i] = array[i];
+ }
+
+ return ret;
+ },
+
+ inArray: function( elem, array ) {
+ for ( var i = 0, length = array.length; i < length; i++ )
+ // Use === because on IE, window == document
+ if ( array[ i ] === elem )
+ return i;
+
+ return -1;
+ },
+
+ merge: function( first, second ) {
+ // We have to loop this way because IE & Opera overwrite the length
+ // expando of getElementsByTagName
+ var i = 0, elem, pos = first.length;
+ // Also, we need to make sure that the correct elements are being returned
+ // (IE returns comment nodes in a '*' query)
+ if ( !jQuery.support.getAll ) {
+ while ( (elem = second[ i++ ]) != null )
+ if ( elem.nodeType != 8 )
+ first[ pos++ ] = elem;
+
+ } else
+ while ( (elem = second[ i++ ]) != null )
+ first[ pos++ ] = elem;
+
+ return first;
+ },
+
+ unique: function( array ) {
+ var ret = [], done = {};
+
+ try {
+
+ for ( var i = 0, length = array.length; i < length; i++ ) {
+ var id = jQuery.data( array[ i ] );
+
+ if ( !done[ id ] ) {
+ done[ id ] = true;
+ ret.push( array[ i ] );
+ }
+ }
+
+ } catch( e ) {
+ ret = array;
+ }
+
+ return ret;
+ },
+
+ grep: function( elems, callback, inv ) {
+ var ret = [];
+
+ // Go through the array, only saving the items
+ // that pass the validator function
+ for ( var i = 0, length = elems.length; i < length; i++ )
+ if ( !inv != !callback( elems[ i ], i ) )
+ ret.push( elems[ i ] );
+
+ return ret;
+ },
+
+ map: function( elems, callback ) {
+ var ret = [];
+
+ // Go through the array, translating each of the items to their
+ // new value (or values).
+ for ( var i = 0, length = elems.length; i < length; i++ ) {
+ var value = callback( elems[ i ], i );
+
+ if ( value != null )
+ ret[ ret.length ] = value;
+ }
+
+ return ret.concat.apply( [], ret );
+ }
+});
+
+// Use of jQuery.browser is deprecated.
+// It's included for backwards compatibility and plugins,
+// although they should work to migrate away.
+
+var userAgent = navigator.userAgent.toLowerCase();
+
+// Figure out what browser is being used
+jQuery.browser = {
+ version: (userAgent.match( /.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/ ) || [0,'0'])[1],
+ safari: /webkit/.test( userAgent ),
+ opera: /opera/.test( userAgent ),
+ msie: /msie/.test( userAgent ) && !/opera/.test( userAgent ),
+ mozilla: /mozilla/.test( userAgent ) && !/(compatible|webkit)/.test( userAgent )
+};
+
+jQuery.each({
+ parent: function(elem){return elem.parentNode;},
+ parents: function(elem){return jQuery.dir(elem,"parentNode");},
+ next: function(elem){return jQuery.nth(elem,2,"nextSibling");},
+ prev: function(elem){return jQuery.nth(elem,2,"previousSibling");},
+ nextAll: function(elem){return jQuery.dir(elem,"nextSibling");},
+ prevAll: function(elem){return jQuery.dir(elem,"previousSibling");},
+ siblings: function(elem){return jQuery.sibling(elem.parentNode.firstChild,elem);},
+ children: function(elem){return jQuery.sibling(elem.firstChild);},
+ contents: function(elem){return jQuery.nodeName(elem,"iframe")?elem.contentDocument||elem.contentWindow.document:jQuery.makeArray(elem.childNodes);}
+}, function(name, fn){
+ jQuery.fn[ name ] = function( selector ) {
+ var ret = jQuery.map( this, fn );
+
+ if ( selector && typeof selector == "string" )
+ ret = jQuery.multiFilter( selector, ret );
+
+ return this.pushStack( jQuery.unique( ret ), name, selector );
+ };
+});
+
+jQuery.each({
+ appendTo: "append",
+ prependTo: "prepend",
+ insertBefore: "before",
+ insertAfter: "after",
+ replaceAll: "replaceWith"
+}, function(name, original){
+ jQuery.fn[ name ] = function( selector ) {
+ var ret = [], insert = jQuery( selector );
+
+ for ( var i = 0, l = insert.length; i < l; i++ ) {
+ var elems = (i > 0 ? this.clone(true) : this).get();
+ jQuery.fn[ original ].apply( jQuery(insert[i]), elems );
+ ret = ret.concat( elems );
+ }
+
+ return this.pushStack( ret, name, selector );
+ };
+});
+
+jQuery.each({
+ removeAttr: function( name ) {
+ jQuery.attr( this, name, "" );
+ if (this.nodeType == 1)
+ this.removeAttribute( name );
+ },
+
+ addClass: function( classNames ) {
+ jQuery.className.add( this, classNames );
+ },
+
+ removeClass: function( classNames ) {
+ jQuery.className.remove( this, classNames );
+ },
+
+ toggleClass: function( classNames, state ) {
+ if( typeof state !== "boolean" )
+ state = !jQuery.className.has( this, classNames );
+ jQuery.className[ state ? "add" : "remove" ]( this, classNames );
+ },
+
+ remove: function( selector ) {
+ if ( !selector || jQuery.filter( selector, [ this ] ).length ) {
+ // Prevent memory leaks
+ jQuery( "*", this ).add([this]).each(function(){
+ jQuery.event.remove(this);
+ jQuery.removeData(this);
+ });
+ if (this.parentNode)
+ this.parentNode.removeChild( this );
+ }
+ },
+
+ empty: function() {
+ // Remove element nodes and prevent memory leaks
+ jQuery(this).children().remove();
+
+ // Remove any remaining nodes
+ while ( this.firstChild )
+ this.removeChild( this.firstChild );
+ }
+}, function(name, fn){
+ jQuery.fn[ name ] = function(){
+ return this.each( fn, arguments );
+ };
+});
+
+// Helper function used by the dimensions and offset modules
+function num(elem, prop) {
+ return elem[0] && parseInt( jQuery.curCSS(elem[0], prop, true), 10 ) || 0;
+}
+var expando = "jQuery" + now(), uuid = 0, windowData = {};
+
+jQuery.extend({
+ cache: {},
+
+ data: function( elem, name, data ) {
+ elem = elem == window ?
+ windowData :
+ elem;
+
+ var id = elem[ expando ];
+
+ // Compute a unique ID for the element
+ if ( !id )
+ id = elem[ expando ] = ++uuid;
+
+ // Only generate the data cache if we're
+ // trying to access or manipulate it
+ if ( name && !jQuery.cache[ id ] )
+ jQuery.cache[ id ] = {};
+
+ // Prevent overriding the named cache with undefined values
+ if ( data !== undefined )
+ jQuery.cache[ id ][ name ] = data;
+
+ // Return the named cache data, or the ID for the element
+ return name ?
+ jQuery.cache[ id ][ name ] :
+ id;
+ },
+
+ removeData: function( elem, name ) {
+ elem = elem == window ?
+ windowData :
+ elem;
+
+ var id = elem[ expando ];
+
+ // If we want to remove a specific section of the element's data
+ if ( name ) {
+ if ( jQuery.cache[ id ] ) {
+ // Remove the section of cache data
+ delete jQuery.cache[ id ][ name ];
+
+ // If we've removed all the data, remove the element's cache
+ name = "";
+
+ for ( name in jQuery.cache[ id ] )
+ break;
+
+ if ( !name )
+ jQuery.removeData( elem );
+ }
+
+ // Otherwise, we want to remove all of the element's data
+ } else {
+ // Clean up the element expando
+ try {
+ delete elem[ expando ];
+ } catch(e){
+ // IE has trouble directly removing the expando
+ // but it's ok with using removeAttribute
+ if ( elem.removeAttribute )
+ elem.removeAttribute( expando );
+ }
+
+ // Completely remove the data cache
+ delete jQuery.cache[ id ];
+ }
+ },
+ queue: function( elem, type, data ) {
+ if ( elem ){
+
+ type = (type || "fx") + "queue";
+
+ var q = jQuery.data( elem, type );
+
+ if ( !q || jQuery.isArray(data) )
+ q = jQuery.data( elem, type, jQuery.makeArray(data) );
+ else if( data )
+ q.push( data );
+
+ }
+ return q;
+ },
+
+ dequeue: function( elem, type ){
+ var queue = jQuery.queue( elem, type ),
+ fn = queue.shift();
+
+ if( !type || type === "fx" )
+ fn = queue[0];
+
+ if( fn !== undefined )
+ fn.call(elem);
+ }
+});
+
+jQuery.fn.extend({
+ data: function( key, value ){
+ var parts = key.split(".");
+ parts[1] = parts[1] ? "." + parts[1] : "";
+
+ if ( value === undefined ) {
+ var data = this.triggerHandler("getData" + parts[1] + "!", [parts[0]]);
+
+ if ( data === undefined && this.length )
+ data = jQuery.data( this[0], key );
+
+ return data === undefined && parts[1] ?
+ this.data( parts[0] ) :
+ data;
+ } else
+ return this.trigger("setData" + parts[1] + "!", [parts[0], value]).each(function(){
+ jQuery.data( this, key, value );
+ });
+ },
+
+ removeData: function( key ){
+ return this.each(function(){
+ jQuery.removeData( this, key );
+ });
+ },
+ queue: function(type, data){
+ if ( typeof type !== "string" ) {
+ data = type;
+ type = "fx";
+ }
+
+ if ( data === undefined )
+ return jQuery.queue( this[0], type );
+
+ return this.each(function(){
+ var queue = jQuery.queue( this, type, data );
+
+ if( type == "fx" && queue.length == 1 )
+ queue[0].call(this);
+ });
+ },
+ dequeue: function(type){
+ return this.each(function(){
+ jQuery.dequeue( this, type );
+ });
+ }
+});/*!
+ * Sizzle CSS Selector Engine - v0.9.3
+ * Copyright 2009, The Dojo Foundation
+ * Released under the MIT, BSD, and GPL Licenses.
+ * More information: http://sizzlejs.com/
+ */
+(function(){
+
+var chunker = /((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?/g,
+ done = 0,
+ toString = Object.prototype.toString;
+
+var Sizzle = function(selector, context, results, seed) {
+ results = results || [];
+ context = context || document;
+
+ if ( context.nodeType !== 1 && context.nodeType !== 9 )
+ return [];
+
+ if ( !selector || typeof selector !== "string" ) {
+ return results;
+ }
+
+ var parts = [], m, set, checkSet, check, mode, extra, prune = true;
+
+ // Reset the position of the chunker regexp (start from head)
+ chunker.lastIndex = 0;
+
+ while ( (m = chunker.exec(selector)) !== null ) {
+ parts.push( m[1] );
+
+ if ( m[2] ) {
+ extra = RegExp.rightContext;
+ break;
+ }
+ }
+
+ if ( parts.length > 1 && origPOS.exec( selector ) ) {
+ if ( parts.length === 2 && Expr.relative[ parts[0] ] ) {
+ set = posProcess( parts[0] + parts[1], context );
+ } else {
+ set = Expr.relative[ parts[0] ] ?
+ [ context ] :
+ Sizzle( parts.shift(), context );
+
+ while ( parts.length ) {
+ selector = parts.shift();
+
+ if ( Expr.relative[ selector ] )
+ selector += parts.shift();
+
+ set = posProcess( selector, set );
+ }
+ }
+ } else {
+ var ret = seed ?
+ { expr: parts.pop(), set: makeArray(seed) } :
+ Sizzle.find( parts.pop(), parts.length === 1 && context.parentNode ? context.parentNode : context, isXML(context) );
+ set = Sizzle.filter( ret.expr, ret.set );
+
+ if ( parts.length > 0 ) {
+ checkSet = makeArray(set);
+ } else {
+ prune = false;
+ }
+
+ while ( parts.length ) {
+ var cur = parts.pop(), pop = cur;
+
+ if ( !Expr.relative[ cur ] ) {
+ cur = "";
+ } else {
+ pop = parts.pop();
+ }
+
+ if ( pop == null ) {
+ pop = context;
+ }
+
+ Expr.relative[ cur ]( checkSet, pop, isXML(context) );
+ }
+ }
+
+ if ( !checkSet ) {
+ checkSet = set;
+ }
+
+ if ( !checkSet ) {
+ throw "Syntax error, unrecognized expression: " + (cur || selector);
+ }
+
+ if ( toString.call(checkSet) === "[object Array]" ) {
+ if ( !prune ) {
+ results.push.apply( results, checkSet );
+ } else if ( context.nodeType === 1 ) {
+ for ( var i = 0; checkSet[i] != null; i++ ) {
+ if ( checkSet[i] && (checkSet[i] === true || checkSet[i].nodeType === 1 && contains(context, checkSet[i])) ) {
+ results.push( set[i] );
+ }
+ }
+ } else {
+ for ( var i = 0; checkSet[i] != null; i++ ) {
+ if ( checkSet[i] && checkSet[i].nodeType === 1 ) {
+ results.push( set[i] );
+ }
+ }
+ }
+ } else {
+ makeArray( checkSet, results );
+ }
+
+ if ( extra ) {
+ Sizzle( extra, context, results, seed );
+
+ if ( sortOrder ) {
+ hasDuplicate = false;
+ results.sort(sortOrder);
+
+ if ( hasDuplicate ) {
+ for ( var i = 1; i < results.length; i++ ) {
+ if ( results[i] === results[i-1] ) {
+ results.splice(i--, 1);
+ }
+ }
+ }
+ }
+ }
+
+ return results;
+};
+
+Sizzle.matches = function(expr, set){
+ return Sizzle(expr, null, null, set);
+};
+
+Sizzle.find = function(expr, context, isXML){
+ var set, match;
+
+ if ( !expr ) {
+ return [];
+ }
+
+ for ( var i = 0, l = Expr.order.length; i < l; i++ ) {
+ var type = Expr.order[i], match;
+
+ if ( (match = Expr.match[ type ].exec( expr )) ) {
+ var left = RegExp.leftContext;
+
+ if ( left.substr( left.length - 1 ) !== "\\" ) {
+ match[1] = (match[1] || "").replace(/\\/g, "");
+ set = Expr.find[ type ]( match, context, isXML );
+ if ( set != null ) {
+ expr = expr.replace( Expr.match[ type ], "" );
+ break;
+ }
+ }
+ }
+ }
+
+ if ( !set ) {
+ set = context.getElementsByTagName("*");
+ }
+
+ return {set: set, expr: expr};
+};
+
+Sizzle.filter = function(expr, set, inplace, not){
+ var old = expr, result = [], curLoop = set, match, anyFound,
+ isXMLFilter = set && set[0] && isXML(set[0]);
+
+ while ( expr && set.length ) {
+ for ( var type in Expr.filter ) {
+ if ( (match = Expr.match[ type ].exec( expr )) != null ) {
+ var filter = Expr.filter[ type ], found, item;
+ anyFound = false;
+
+ if ( curLoop == result ) {
+ result = [];
+ }
+
+ if ( Expr.preFilter[ type ] ) {
+ match = Expr.preFilter[ type ]( match, curLoop, inplace, result, not, isXMLFilter );
+
+ if ( !match ) {
+ anyFound = found = true;
+ } else if ( match === true ) {
+ continue;
+ }
+ }
+
+ if ( match ) {
+ for ( var i = 0; (item = curLoop[i]) != null; i++ ) {
+ if ( item ) {
+ found = filter( item, match, i, curLoop );
+ var pass = not ^ !!found;
+
+ if ( inplace && found != null ) {
+ if ( pass ) {
+ anyFound = true;
+ } else {
+ curLoop[i] = false;
+ }
+ } else if ( pass ) {
+ result.push( item );
+ anyFound = true;
+ }
+ }
+ }
+ }
+
+ if ( found !== undefined ) {
+ if ( !inplace ) {
+ curLoop = result;
+ }
+
+ expr = expr.replace( Expr.match[ type ], "" );
+
+ if ( !anyFound ) {
+ return [];
+ }
+
+ break;
+ }
+ }
+ }
+
+ // Improper expression
+ if ( expr == old ) {
+ if ( anyFound == null ) {
+ throw "Syntax error, unrecognized expression: " + expr;
+ } else {
+ break;
+ }
+ }
+
+ old = expr;
+ }
+
+ return curLoop;
+};
+
+var Expr = Sizzle.selectors = {
+ order: [ "ID", "NAME", "TAG" ],
+ match: {
+ ID: /#((?:[\w\u00c0-\uFFFF_-]|\\.)+)/,
+ CLASS: /\.((?:[\w\u00c0-\uFFFF_-]|\\.)+)/,
+ NAME: /\[name=['"]*((?:[\w\u00c0-\uFFFF_-]|\\.)+)['"]*\]/,
+ ATTR: /\[\s*((?:[\w\u00c0-\uFFFF_-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/,
+ TAG: /^((?:[\w\u00c0-\uFFFF\*_-]|\\.)+)/,
+ CHILD: /:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/,
+ POS: /:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)/,
+ PSEUDO: /:((?:[\w\u00c0-\uFFFF_-]|\\.)+)(?:\((['"]*)((?:\([^\)]+\)|[^\2\(\)]*)+)\2\))?/
+ },
+ attrMap: {
+ "class": "className",
+ "for": "htmlFor"
+ },
+ attrHandle: {
+ href: function(elem){
+ return elem.getAttribute("href");
+ }
+ },
+ relative: {
+ "+": function(checkSet, part, isXML){
+ var isPartStr = typeof part === "string",
+ isTag = isPartStr && !/\W/.test(part),
+ isPartStrNotTag = isPartStr && !isTag;
+
+ if ( isTag && !isXML ) {
+ part = part.toUpperCase();
+ }
+
+ for ( var i = 0, l = checkSet.length, elem; i < l; i++ ) {
+ if ( (elem = checkSet[i]) ) {
+ while ( (elem = elem.previousSibling) && elem.nodeType !== 1 ) {}
+
+ checkSet[i] = isPartStrNotTag || elem && elem.nodeName === part ?
+ elem || false :
+ elem === part;
+ }
+ }
+
+ if ( isPartStrNotTag ) {
+ Sizzle.filter( part, checkSet, true );
+ }
+ },
+ ">": function(checkSet, part, isXML){
+ var isPartStr = typeof part === "string";
+
+ if ( isPartStr && !/\W/.test(part) ) {
+ part = isXML ? part : part.toUpperCase();
+
+ for ( var i = 0, l = checkSet.length; i < l; i++ ) {
+ var elem = checkSet[i];
+ if ( elem ) {
+ var parent = elem.parentNode;
+ checkSet[i] = parent.nodeName === part ? parent : false;
+ }
+ }
+ } else {
+ for ( var i = 0, l = checkSet.length; i < l; i++ ) {
+ var elem = checkSet[i];
+ if ( elem ) {
+ checkSet[i] = isPartStr ?
+ elem.parentNode :
+ elem.parentNode === part;
+ }
+ }
+
+ if ( isPartStr ) {
+ Sizzle.filter( part, checkSet, true );
+ }
+ }
+ },
+ "": function(checkSet, part, isXML){
+ var doneName = done++, checkFn = dirCheck;
+
+ if ( !part.match(/\W/) ) {
+ var nodeCheck = part = isXML ? part : part.toUpperCase();
+ checkFn = dirNodeCheck;
+ }
+
+ checkFn("parentNode", part, doneName, checkSet, nodeCheck, isXML);
+ },
+ "~": function(checkSet, part, isXML){
+ var doneName = done++, checkFn = dirCheck;
+
+ if ( typeof part === "string" && !part.match(/\W/) ) {
+ var nodeCheck = part = isXML ? part : part.toUpperCase();
+ checkFn = dirNodeCheck;
+ }
+
+ checkFn("previousSibling", part, doneName, checkSet, nodeCheck, isXML);
+ }
+ },
+ find: {
+ ID: function(match, context, isXML){
+ if ( typeof context.getElementById !== "undefined" && !isXML ) {
+ var m = context.getElementById(match[1]);
+ return m ? [m] : [];
+ }
+ },
+ NAME: function(match, context, isXML){
+ if ( typeof context.getElementsByName !== "undefined" ) {
+ var ret = [], results = context.getElementsByName(match[1]);
+
+ for ( var i = 0, l = results.length; i < l; i++ ) {
+ if ( results[i].getAttribute("name") === match[1] ) {
+ ret.push( results[i] );
+ }
+ }
+
+ return ret.length === 0 ? null : ret;
+ }
+ },
+ TAG: function(match, context){
+ return context.getElementsByTagName(match[1]);
+ }
+ },
+ preFilter: {
+ CLASS: function(match, curLoop, inplace, result, not, isXML){
+ match = " " + match[1].replace(/\\/g, "") + " ";
+
+ if ( isXML ) {
+ return match;
+ }
+
+ for ( var i = 0, elem; (elem = curLoop[i]) != null; i++ ) {
+ if ( elem ) {
+ if ( not ^ (elem.className && (" " + elem.className + " ").indexOf(match) >= 0) ) {
+ if ( !inplace )
+ result.push( elem );
+ } else if ( inplace ) {
+ curLoop[i] = false;
+ }
+ }
+ }
+
+ return false;
+ },
+ ID: function(match){
+ return match[1].replace(/\\/g, "");
+ },
+ TAG: function(match, curLoop){
+ for ( var i = 0; curLoop[i] === false; i++ ){}
+ return curLoop[i] && isXML(curLoop[i]) ? match[1] : match[1].toUpperCase();
+ },
+ CHILD: function(match){
+ if ( match[1] == "nth" ) {
+ // parse equations like 'even', 'odd', '5', '2n', '3n+2', '4n-1', '-n+6'
+ var test = /(-?)(\d*)n((?:\+|-)?\d*)/.exec(
+ match[2] == "even" && "2n" || match[2] == "odd" && "2n+1" ||
+ !/\D/.test( match[2] ) && "0n+" + match[2] || match[2]);
+
+ // calculate the numbers (first)n+(last) including if they are negative
+ match[2] = (test[1] + (test[2] || 1)) - 0;
+ match[3] = test[3] - 0;
+ }
+
+ // TODO: Move to normal caching system
+ match[0] = done++;
+
+ return match;
+ },
+ ATTR: function(match, curLoop, inplace, result, not, isXML){
+ var name = match[1].replace(/\\/g, "");
+
+ if ( !isXML && Expr.attrMap[name] ) {
+ match[1] = Expr.attrMap[name];
+ }
+
+ if ( match[2] === "~=" ) {
+ match[4] = " " + match[4] + " ";
+ }
+
+ return match;
+ },
+ PSEUDO: function(match, curLoop, inplace, result, not){
+ if ( match[1] === "not" ) {
+ // If we're dealing with a complex expression, or a simple one
+ if ( match[3].match(chunker).length > 1 || /^\w/.test(match[3]) ) {
+ match[3] = Sizzle(match[3], null, null, curLoop);
+ } else {
+ var ret = Sizzle.filter(match[3], curLoop, inplace, true ^ not);
+ if ( !inplace ) {
+ result.push.apply( result, ret );
+ }
+ return false;
+ }
+ } else if ( Expr.match.POS.test( match[0] ) || Expr.match.CHILD.test( match[0] ) ) {
+ return true;
+ }
+
+ return match;
+ },
+ POS: function(match){
+ match.unshift( true );
+ return match;
+ }
+ },
+ filters: {
+ enabled: function(elem){
+ return elem.disabled === false && elem.type !== "hidden";
+ },
+ disabled: function(elem){
+ return elem.disabled === true;
+ },
+ checked: function(elem){
+ return elem.checked === true;
+ },
+ selected: function(elem){
+ // Accessing this property makes selected-by-default
+ // options in Safari work properly
+ elem.parentNode.selectedIndex;
+ return elem.selected === true;
+ },
+ parent: function(elem){
+ return !!elem.firstChild;
+ },
+ empty: function(elem){
+ return !elem.firstChild;
+ },
+ has: function(elem, i, match){
+ return !!Sizzle( match[3], elem ).length;
+ },
+ header: function(elem){
+ return /h\d/i.test( elem.nodeName );
+ },
+ text: function(elem){
+ return "text" === elem.type;
+ },
+ radio: function(elem){
+ return "radio" === elem.type;
+ },
+ checkbox: function(elem){
+ return "checkbox" === elem.type;
+ },
+ file: function(elem){
+ return "file" === elem.type;
+ },
+ password: function(elem){
+ return "password" === elem.type;
+ },
+ submit: function(elem){
+ return "submit" === elem.type;
+ },
+ image: function(elem){
+ return "image" === elem.type;
+ },
+ reset: function(elem){
+ return "reset" === elem.type;
+ },
+ button: function(elem){
+ return "button" === elem.type || elem.nodeName.toUpperCase() === "BUTTON";
+ },
+ input: function(elem){
+ return /input|select|textarea|button/i.test(elem.nodeName);
+ }
+ },
+ setFilters: {
+ first: function(elem, i){
+ return i === 0;
+ },
+ last: function(elem, i, match, array){
+ return i === array.length - 1;
+ },
+ even: function(elem, i){
+ return i % 2 === 0;
+ },
+ odd: function(elem, i){
+ return i % 2 === 1;
+ },
+ lt: function(elem, i, match){
+ return i < match[3] - 0;
+ },
+ gt: function(elem, i, match){
+ return i > match[3] - 0;
+ },
+ nth: function(elem, i, match){
+ return match[3] - 0 == i;
+ },
+ eq: function(elem, i, match){
+ return match[3] - 0 == i;
+ }
+ },
+ filter: {
+ PSEUDO: function(elem, match, i, array){
+ var name = match[1], filter = Expr.filters[ name ];
+
+ if ( filter ) {
+ return filter( elem, i, match, array );
+ } else if ( name === "contains" ) {
+ return (elem.textContent || elem.innerText || "").indexOf(match[3]) >= 0;
+ } else if ( name === "not" ) {
+ var not = match[3];
+
+ for ( var i = 0, l = not.length; i < l; i++ ) {
+ if ( not[i] === elem ) {
+ return false;
+ }
+ }
+
+ return true;
+ }
+ },
+ CHILD: function(elem, match){
+ var type = match[1], node = elem;
+ switch (type) {
+ case 'only':
+ case 'first':
+ while (node = node.previousSibling) {
+ if ( node.nodeType === 1 ) return false;
+ }
+ if ( type == 'first') return true;
+ node = elem;
+ case 'last':
+ while (node = node.nextSibling) {
+ if ( node.nodeType === 1 ) return false;
+ }
+ return true;
+ case 'nth':
+ var first = match[2], last = match[3];
+
+ if ( first == 1 && last == 0 ) {
+ return true;
+ }
+
+ var doneName = match[0],
+ parent = elem.parentNode;
+
+ if ( parent && (parent.sizcache !== doneName || !elem.nodeIndex) ) {
+ var count = 0;
+ for ( node = parent.firstChild; node; node = node.nextSibling ) {
+ if ( node.nodeType === 1 ) {
+ node.nodeIndex = ++count;
+ }
+ }
+ parent.sizcache = doneName;
+ }
+
+ var diff = elem.nodeIndex - last;
+ if ( first == 0 ) {
+ return diff == 0;
+ } else {
+ return ( diff % first == 0 && diff / first >= 0 );
+ }
+ }
+ },
+ ID: function(elem, match){
+ return elem.nodeType === 1 && elem.getAttribute("id") === match;
+ },
+ TAG: function(elem, match){
+ return (match === "*" && elem.nodeType === 1) || elem.nodeName === match;
+ },
+ CLASS: function(elem, match){
+ return (" " + (elem.className || elem.getAttribute("class")) + " ")
+ .indexOf( match ) > -1;
+ },
+ ATTR: function(elem, match){
+ var name = match[1],
+ result = Expr.attrHandle[ name ] ?
+ Expr.attrHandle[ name ]( elem ) :
+ elem[ name ] != null ?
+ elem[ name ] :
+ elem.getAttribute( name ),
+ value = result + "",
+ type = match[2],
+ check = match[4];
+
+ return result == null ?
+ type === "!=" :
+ type === "=" ?
+ value === check :
+ type === "*=" ?
+ value.indexOf(check) >= 0 :
+ type === "~=" ?
+ (" " + value + " ").indexOf(check) >= 0 :
+ !check ?
+ value && result !== false :
+ type === "!=" ?
+ value != check :
+ type === "^=" ?
+ value.indexOf(check) === 0 :
+ type === "$=" ?
+ value.substr(value.length - check.length) === check :
+ type === "|=" ?
+ value === check || value.substr(0, check.length + 1) === check + "-" :
+ false;
+ },
+ POS: function(elem, match, i, array){
+ var name = match[2], filter = Expr.setFilters[ name ];
+
+ if ( filter ) {
+ return filter( elem, i, match, array );
+ }
+ }
+ }
+};
+
+var origPOS = Expr.match.POS;
+
+for ( var type in Expr.match ) {
+ Expr.match[ type ] = RegExp( Expr.match[ type ].source + /(?![^\[]*\])(?![^\(]*\))/.source );
+}
+
+var makeArray = function(array, results) {
+ array = Array.prototype.slice.call( array );
+
+ if ( results ) {
+ results.push.apply( results, array );
+ return results;
+ }
+
+ return array;
+};
+
+// Perform a simple check to determine if the browser is capable of
+// converting a NodeList to an array using builtin methods.
+try {
+ Array.prototype.slice.call( document.documentElement.childNodes );
+
+// Provide a fallback method if it does not work
+} catch(e){
+ makeArray = function(array, results) {
+ var ret = results || [];
+
+ if ( toString.call(array) === "[object Array]" ) {
+ Array.prototype.push.apply( ret, array );
+ } else {
+ if ( typeof array.length === "number" ) {
+ for ( var i = 0, l = array.length; i < l; i++ ) {
+ ret.push( array[i] );
+ }
+ } else {
+ for ( var i = 0; array[i]; i++ ) {
+ ret.push( array[i] );
+ }
+ }
+ }
+
+ return ret;
+ };
+}
+
+var sortOrder;
+
+if ( document.documentElement.compareDocumentPosition ) {
+ sortOrder = function( a, b ) {
+ var ret = a.compareDocumentPosition(b) & 4 ? -1 : a === b ? 0 : 1;
+ if ( ret === 0 ) {
+ hasDuplicate = true;
+ }
+ return ret;
+ };
+} else if ( "sourceIndex" in document.documentElement ) {
+ sortOrder = function( a, b ) {
+ var ret = a.sourceIndex - b.sourceIndex;
+ if ( ret === 0 ) {
+ hasDuplicate = true;
+ }
+ return ret;
+ };
+} else if ( document.createRange ) {
+ sortOrder = function( a, b ) {
+ var aRange = a.ownerDocument.createRange(), bRange = b.ownerDocument.createRange();
+ aRange.selectNode(a);
+ aRange.collapse(true);
+ bRange.selectNode(b);
+ bRange.collapse(true);
+ var ret = aRange.compareBoundaryPoints(Range.START_TO_END, bRange);
+ if ( ret === 0 ) {
+ hasDuplicate = true;
+ }
+ return ret;
+ };
+}
+
+// Check to see if the browser returns elements by name when
+// querying by getElementById (and provide a workaround)
+(function(){
+ // We're going to inject a fake input element with a specified name
+ var form = document.createElement("form"),
+ id = "script" + (new Date).getTime();
+ form.innerHTML = "<input name='" + id + "'/>";
+
+ // Inject it into the root element, check its status, and remove it quickly
+ var root = document.documentElement;
+ root.insertBefore( form, root.firstChild );
+
+ // The workaround has to do additional checks after a getElementById
+ // Which slows things down for other browsers (hence the branching)
+ if ( !!document.getElementById( id ) ) {
+ Expr.find.ID = function(match, context, isXML){
+ if ( typeof context.getElementById !== "undefined" && !isXML ) {
+ var m = context.getElementById(match[1]);
+ return m ? m.id === match[1] || typeof m.getAttributeNode !== "undefined" && m.getAttributeNode("id").nodeValue === match[1] ? [m] : undefined : [];
+ }
+ };
+
+ Expr.filter.ID = function(elem, match){
+ var node = typeof elem.getAttributeNode !== "undefined" && elem.getAttributeNode("id");
+ return elem.nodeType === 1 && node && node.nodeValue === match;
+ };
+ }
+
+ root.removeChild( form );
+})();
+
+(function(){
+ // Check to see if the browser returns only elements
+ // when doing getElementsByTagName("*")
+
+ // Create a fake element
+ var div = document.createElement("div");
+ div.appendChild( document.createComment("") );
+
+ // Make sure no comments are found
+ if ( div.getElementsByTagName("*").length > 0 ) {
+ Expr.find.TAG = function(match, context){
+ var results = context.getElementsByTagName(match[1]);
+
+ // Filter out possible comments
+ if ( match[1] === "*" ) {
+ var tmp = [];
+
+ for ( var i = 0; results[i]; i++ ) {
+ if ( results[i].nodeType === 1 ) {
+ tmp.push( results[i] );
+ }
+ }
+
+ results = tmp;
+ }
+
+ return results;
+ };
+ }
+
+ // Check to see if an attribute returns normalized href attributes
+ div.innerHTML = "<a href='#'></a>";
+ if ( div.firstChild && typeof div.firstChild.getAttribute !== "undefined" &&
+ div.firstChild.getAttribute("href") !== "#" ) {
+ Expr.attrHandle.href = function(elem){
+ return elem.getAttribute("href", 2);
+ };
+ }
+})();
+
+if ( document.querySelectorAll ) (function(){
+ var oldSizzle = Sizzle, div = document.createElement("div");
+ div.innerHTML = "<p class='TEST'></p>";
+
+ // Safari can't handle uppercase or unicode characters when
+ // in quirks mode.
+ if ( div.querySelectorAll && div.querySelectorAll(".TEST").length === 0 ) {
+ return;
+ }
+
+ Sizzle = function(query, context, extra, seed){
+ context = context || document;
+
+ // Only use querySelectorAll on non-XML documents
+ // (ID selectors don't work in non-HTML documents)
+ if ( !seed && context.nodeType === 9 && !isXML(context) ) {
+ try {
+ return makeArray( context.querySelectorAll(query), extra );
+ } catch(e){}
+ }
+
+ return oldSizzle(query, context, extra, seed);
+ };
+
+ Sizzle.find = oldSizzle.find;
+ Sizzle.filter = oldSizzle.filter;
+ Sizzle.selectors = oldSizzle.selectors;
+ Sizzle.matches = oldSizzle.matches;
+})();
+
+if ( document.getElementsByClassName && document.documentElement.getElementsByClassName ) (function(){
+ var div = document.createElement("div");
+ div.innerHTML = "<div class='test e'></div><div class='test'></div>";
+
+ // Opera can't find a second classname (in 9.6)
+ if ( div.getElementsByClassName("e").length === 0 )
+ return;
+
+ // Safari caches class attributes, doesn't catch changes (in 3.2)
+ div.lastChild.className = "e";
+
+ if ( div.getElementsByClassName("e").length === 1 )
+ return;
+
+ Expr.order.splice(1, 0, "CLASS");
+ Expr.find.CLASS = function(match, context, isXML) {
+ if ( typeof context.getElementsByClassName !== "undefined" && !isXML ) {
+ return context.getElementsByClassName(match[1]);
+ }
+ };
+})();
+
+function dirNodeCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {
+ var sibDir = dir == "previousSibling" && !isXML;
+ for ( var i = 0, l = checkSet.length; i < l; i++ ) {
+ var elem = checkSet[i];
+ if ( elem ) {
+ if ( sibDir && elem.nodeType === 1 ){
+ elem.sizcache = doneName;
+ elem.sizset = i;
+ }
+ elem = elem[dir];
+ var match = false;
+
+ while ( elem ) {
+ if ( elem.sizcache === doneName ) {
+ match = checkSet[elem.sizset];
+ break;
+ }
+
+ if ( elem.nodeType === 1 && !isXML ){
+ elem.sizcache = doneName;
+ elem.sizset = i;
+ }
+
+ if ( elem.nodeName === cur ) {
+ match = elem;
+ break;
+ }
+
+ elem = elem[dir];
+ }
+
+ checkSet[i] = match;
+ }
+ }
+}
+
+function dirCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {
+ var sibDir = dir == "previousSibling" && !isXML;
+ for ( var i = 0, l = checkSet.length; i < l; i++ ) {
+ var elem = checkSet[i];
+ if ( elem ) {
+ if ( sibDir && elem.nodeType === 1 ) {
+ elem.sizcache = doneName;
+ elem.sizset = i;
+ }
+ elem = elem[dir];
+ var match = false;
+
+ while ( elem ) {
+ if ( elem.sizcache === doneName ) {
+ match = checkSet[elem.sizset];
+ break;
+ }
+
+ if ( elem.nodeType === 1 ) {
+ if ( !isXML ) {
+ elem.sizcache = doneName;
+ elem.sizset = i;
+ }
+ if ( typeof cur !== "string" ) {
+ if ( elem === cur ) {
+ match = true;
+ break;
+ }
+
+ } else if ( Sizzle.filter( cur, [elem] ).length > 0 ) {
+ match = elem;
+ break;
+ }
+ }
+
+ elem = elem[dir];
+ }
+
+ checkSet[i] = match;
+ }
+ }
+}
+
+var contains = document.compareDocumentPosition ? function(a, b){
+ return a.compareDocumentPosition(b) & 16;
+} : function(a, b){
+ return a !== b && (a.contains ? a.contains(b) : true);
+};
+
+var isXML = function(elem){
+ return elem.nodeType === 9 && elem.documentElement.nodeName !== "HTML" ||
+ !!elem.ownerDocument && isXML( elem.ownerDocument );
+};
+
+var posProcess = function(selector, context){
+ var tmpSet = [], later = "", match,
+ root = context.nodeType ? [context] : context;
+
+ // Position selectors must be done after the filter
+ // And so must :not(positional) so we move all PSEUDOs to the end
+ while ( (match = Expr.match.PSEUDO.exec( selector )) ) {
+ later += match[0];
+ selector = selector.replace( Expr.match.PSEUDO, "" );
+ }
+
+ selector = Expr.relative[selector] ? selector + "*" : selector;
+
+ for ( var i = 0, l = root.length; i < l; i++ ) {
+ Sizzle( selector, root[i], tmpSet );
+ }
+
+ return Sizzle.filter( later, tmpSet );
+};
+
+// EXPOSE
+jQuery.find = Sizzle;
+jQuery.filter = Sizzle.filter;
+jQuery.expr = Sizzle.selectors;
+jQuery.expr[":"] = jQuery.expr.filters;
+
+Sizzle.selectors.filters.hidden = function(elem){
+ return elem.offsetWidth === 0 || elem.offsetHeight === 0;
+};
+
+Sizzle.selectors.filters.visible = function(elem){
+ return elem.offsetWidth > 0 || elem.offsetHeight > 0;
+};
+
+Sizzle.selectors.filters.animated = function(elem){
+ return jQuery.grep(jQuery.timers, function(fn){
+ return elem === fn.elem;
+ }).length;
+};
+
+jQuery.multiFilter = function( expr, elems, not ) {
+ if ( not ) {
+ expr = ":not(" + expr + ")";
+ }
+
+ return Sizzle.matches(expr, elems);
+};
+
+jQuery.dir = function( elem, dir ){
+ var matched = [], cur = elem[dir];
+ while ( cur && cur != document ) {
+ if ( cur.nodeType == 1 )
+ matched.push( cur );
+ cur = cur[dir];
+ }
+ return matched;
+};
+
+jQuery.nth = function(cur, result, dir, elem){
+ result = result || 1;
+ var num = 0;
+
+ for ( ; cur; cur = cur[dir] )
+ if ( cur.nodeType == 1 && ++num == result )
+ break;
+
+ return cur;
+};
+
+jQuery.sibling = function(n, elem){
+ var r = [];
+
+ for ( ; n; n = n.nextSibling ) {
+ if ( n.nodeType == 1 && n != elem )
+ r.push( n );
+ }
+
+ return r;
+};
+
+return;
+
+window.Sizzle = Sizzle;
+
+})();
+/*
+ * A number of helper functions used for managing events.
+ * Many of the ideas behind this code originated from
+ * Dean Edwards' addEvent library.
+ */
+jQuery.event = {
+
+ // Bind an event to an element
+ // Original by Dean Edwards
+ add: function(elem, types, handler, data) {
+ if ( elem.nodeType == 3 || elem.nodeType == 8 )
+ return;
+
+ // For whatever reason, IE has trouble passing the window object
+ // around, causing it to be cloned in the process
+ if ( elem.setInterval && elem != window )
+ elem = window;
+
+ // Make sure that the function being executed has a unique ID
+ if ( !handler.guid )
+ handler.guid = this.guid++;
+
+ // if data is passed, bind to handler
+ if ( data !== undefined ) {
+ // Create temporary function pointer to original handler
+ var fn = handler;
+
+ // Create unique handler function, wrapped around original handler
+ handler = this.proxy( fn );
+
+ // Store data in unique handler
+ handler.data = data;
+ }
+
+ // Init the element's event structure
+ var events = jQuery.data(elem, "events") || jQuery.data(elem, "events", {}),
+ handle = jQuery.data(elem, "handle") || jQuery.data(elem, "handle", function(){
+ // Handle the second event of a trigger and when
+ // an event is called after a page has unloaded
+ return typeof jQuery !== "undefined" && !jQuery.event.triggered ?
+ jQuery.event.handle.apply(arguments.callee.elem, arguments) :
+ undefined;
+ });
+ // Add elem as a property of the handle function
+ // This is to prevent a memory leak with non-native
+ // event in IE.
+ handle.elem = elem;
+
+ // Handle multiple events separated by a space
+ // jQuery(...).bind("mouseover mouseout", fn);
+ jQuery.each(types.split(/\s+/), function(index, type) {
+ // Namespaced event handlers
+ var namespaces = type.split(".");
+ type = namespaces.shift();
+ handler.type = namespaces.slice().sort().join(".");
+
+ // Get the current list of functions bound to this event
+ var handlers = events[type];
+
+ if ( jQuery.event.specialAll[type] )
+ jQuery.event.specialAll[type].setup.call(elem, data, namespaces);
+
+ // Init the event handler queue
+ if (!handlers) {
+ handlers = events[type] = {};
+
+ // Check for a special event handler
+ // Only use addEventListener/attachEvent if the special
+ // events handler returns false
+ if ( !jQuery.event.special[type] || jQuery.event.special[type].setup.call(elem, data, namespaces) === false ) {
+ // Bind the global event handler to the element
+ if (elem.addEventListener)
+ elem.addEventListener(type, handle, false);
+ else if (elem.attachEvent)
+ elem.attachEvent("on" + type, handle);
+ }
+ }
+
+ // Add the function to the element's handler list
+ handlers[handler.guid] = handler;
+
+ // Keep track of which events have been used, for global triggering
+ jQuery.event.global[type] = true;
+ });
+
+ // Nullify elem to prevent memory leaks in IE
+ elem = null;
+ },
+
+ guid: 1,
+ global: {},
+
+ // Detach an event or set of events from an element
+ remove: function(elem, types, handler) {
+ // don't do events on text and comment nodes
+ if ( elem.nodeType == 3 || elem.nodeType == 8 )
+ return;
+
+ var events = jQuery.data(elem, "events"), ret, index;
+
+ if ( events ) {
+ // Unbind all events for the element
+ if ( types === undefined || (typeof types === "string" && types.charAt(0) == ".") )
+ for ( var type in events )
+ this.remove( elem, type + (types || "") );
+ else {
+ // types is actually an event object here
+ if ( types.type ) {
+ handler = types.handler;
+ types = types.type;
+ }
+
+ // Handle multiple events seperated by a space
+ // jQuery(...).unbind("mouseover mouseout", fn);
+ jQuery.each(types.split(/\s+/), function(index, type){
+ // Namespaced event handlers
+ var namespaces = type.split(".");
+ type = namespaces.shift();
+ var namespace = RegExp("(^|\\.)" + namespaces.slice().sort().join(".*\\.") + "(\\.|$)");
+
+ if ( events[type] ) {
+ // remove the given handler for the given type
+ if ( handler )
+ delete events[type][handler.guid];
+
+ // remove all handlers for the given type
+ else
+ for ( var handle in events[type] )
+ // Handle the removal of namespaced events
+ if ( namespace.test(events[type][handle].type) )
+ delete events[type][handle];
+
+ if ( jQuery.event.specialAll[type] )
+ jQuery.event.specialAll[type].teardown.call(elem, namespaces);
+
+ // remove generic event handler if no more handlers exist
+ for ( ret in events[type] ) break;
+ if ( !ret ) {
+ if ( !jQuery.event.special[type] || jQuery.event.special[type].teardown.call(elem, namespaces) === false ) {
+ if (elem.removeEventListener)
+ elem.removeEventListener(type, jQuery.data(elem, "handle"), false);
+ else if (elem.detachEvent)
+ elem.detachEvent("on" + type, jQuery.data(elem, "handle"));
+ }
+ ret = null;
+ delete events[type];
+ }
+ }
+ });
+ }
+
+ // Remove the expando if it's no longer used
+ for ( ret in events ) break;
+ if ( !ret ) {
+ var handle = jQuery.data( elem, "handle" );
+ if ( handle ) handle.elem = null;
+ jQuery.removeData( elem, "events" );
+ jQuery.removeData( elem, "handle" );
+ }
+ }
+ },
+
+ // bubbling is internal
+ trigger: function( event, data, elem, bubbling ) {
+ // Event object or event type
+ var type = event.type || event;
+
+ if( !bubbling ){
+ event = typeof event === "object" ?
+ // jQuery.Event object
+ event[expando] ? event :
+ // Object literal
+ jQuery.extend( jQuery.Event(type), event ) :
+ // Just the event type (string)
+ jQuery.Event(type);
+
+ if ( type.indexOf("!") >= 0 ) {
+ event.type = type = type.slice(0, -1);
+ event.exclusive = true;
+ }
+
+ // Handle a global trigger
+ if ( !elem ) {
+ // Don't bubble custom events when global (to avoid too much overhead)
+ event.stopPropagation();
+ // Only trigger if we've ever bound an event for it
+ if ( this.global[type] )
+ jQuery.each( jQuery.cache, function(){
+ if ( this.events && this.events[type] )
+ jQuery.event.trigger( event, data, this.handle.elem );
+ });
+ }
+
+ // Handle triggering a single element
+
+ // don't do events on text and comment nodes
+ if ( !elem || elem.nodeType == 3 || elem.nodeType == 8 )
+ return undefined;
+
+ // Clean up in case it is reused
+ event.result = undefined;
+ event.target = elem;
+
+ // Clone the incoming data, if any
+ data = jQuery.makeArray(data);
+ data.unshift( event );
+ }
+
+ event.currentTarget = elem;
+
+ // Trigger the event, it is assumed that "handle" is a function
+ var handle = jQuery.data(elem, "handle");
+ if ( handle )
+ handle.apply( elem, data );
+
+ // Handle triggering native .onfoo handlers (and on links since we don't call .click() for links)
+ if ( (!elem[type] || (jQuery.nodeName(elem, 'a') && type == "click")) && elem["on"+type] && elem["on"+type].apply( elem, data ) === false )
+ event.result = false;
+
+ // Trigger the native events (except for clicks on links)
+ if ( !bubbling && elem[type] && !event.isDefaultPrevented() && !(jQuery.nodeName(elem, 'a') && type == "click") ) {
+ this.triggered = true;
+ try {
+ elem[ type ]();
+ // prevent IE from throwing an error for some hidden elements
+ } catch (e) {}
+ }
+
+ this.triggered = false;
+
+ if ( !event.isPropagationStopped() ) {
+ var parent = elem.parentNode || elem.ownerDocument;
+ if ( parent )
+ jQuery.event.trigger(event, data, parent, true);
+ }
+ },
+
+ handle: function(event) {
+ // returned undefined or false
+ var all, handlers;
+
+ event = arguments[0] = jQuery.event.fix( event || window.event );
+ event.currentTarget = this;
+
+ // Namespaced event handlers
+ var namespaces = event.type.split(".");
+ event.type = namespaces.shift();
+
+ // Cache this now, all = true means, any handler
+ all = !namespaces.length && !event.exclusive;
+
+ var namespace = RegExp("(^|\\.)" + namespaces.slice().sort().join(".*\\.") + "(\\.|$)");
+
+ handlers = ( jQuery.data(this, "events") || {} )[event.type];
+
+ for ( var j in handlers ) {
+ var handler = handlers[j];
+
+ // Filter the functions by class
+ if ( all || namespace.test(handler.type) ) {
+ // Pass in a reference to the handler function itself
+ // So that we can later remove it
+ event.handler = handler;
+ event.data = handler.data;
+
+ var ret = handler.apply(this, arguments);
+
+ if( ret !== undefined ){
+ event.result = ret;
+ if ( ret === false ) {
+ event.preventDefault();
+ event.stopPropagation();
+ }
+ }
+
+ if( event.isImmediatePropagationStopped() )
+ break;
+
+ }
+ }
+ },
+
+ props: "altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode metaKey newValue originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),
+
+ fix: function(event) {
+ if ( event[expando] )
+ return event;
+
+ // store a copy of the original event object
+ // and "clone" to set read-only properties
+ var originalEvent = event;
+ event = jQuery.Event( originalEvent );
+
+ for ( var i = this.props.length, prop; i; ){
+ prop = this.props[ --i ];
+ event[ prop ] = originalEvent[ prop ];
+ }
+
+ // Fix target property, if necessary
+ if ( !event.target )
+ event.target = event.srcElement || document; // Fixes #1925 where srcElement might not be defined either
+
+ // check if target is a textnode (safari)
+ if ( event.target.nodeType == 3 )
+ event.target = event.target.parentNode;
+
+ // Add relatedTarget, if necessary
+ if ( !event.relatedTarget && event.fromElement )
+ event.relatedTarget = event.fromElement == event.target ? event.toElement : event.fromElement;
+
+ // Calculate pageX/Y if missing and clientX/Y available
+ if ( event.pageX == null && event.clientX != null ) {
+ var doc = document.documentElement, body = document.body;
+ event.pageX = event.clientX + (doc && doc.scrollLeft || body && body.scrollLeft || 0) - (doc.clientLeft || 0);
+ event.pageY = event.clientY + (doc && doc.scrollTop || body && body.scrollTop || 0) - (doc.clientTop || 0);
+ }
+
+ // Add which for key events
+ if ( !event.which && ((event.charCode || event.charCode === 0) ? event.charCode : event.keyCode) )
+ event.which = event.charCode || event.keyCode;
+
+ // Add metaKey to non-Mac browsers (use ctrl for PC's and Meta for Macs)
+ if ( !event.metaKey && event.ctrlKey )
+ event.metaKey = event.ctrlKey;
+
+ // Add which for click: 1 == left; 2 == middle; 3 == right
+ // Note: button is not normalized, so don't use it
+ if ( !event.which && event.button )
+ event.which = (event.button & 1 ? 1 : ( event.button & 2 ? 3 : ( event.button & 4 ? 2 : 0 ) ));
+
+ return event;
+ },
+
+ proxy: function( fn, proxy ){
+ proxy = proxy || function(){ return fn.apply(this, arguments); };
+ // Set the guid of unique handler to the same of original handler, so it can be removed
+ proxy.guid = fn.guid = fn.guid || proxy.guid || this.guid++;
+ // So proxy can be declared as an argument
+ return proxy;
+ },
+
+ special: {
+ ready: {
+ // Make sure the ready event is setup
+ setup: bindReady,
+ teardown: function() {}
+ }
+ },
+
+ specialAll: {
+ live: {
+ setup: function( selector, namespaces ){
+ jQuery.event.add( this, namespaces[0], liveHandler );
+ },
+ teardown: function( namespaces ){
+ if ( namespaces.length ) {
+ var remove = 0, name = RegExp("(^|\\.)" + namespaces[0] + "(\\.|$)");
+
+ jQuery.each( (jQuery.data(this, "events").live || {}), function(){
+ if ( name.test(this.type) )
+ remove++;
+ });
+
+ if ( remove < 1 )
+ jQuery.event.remove( this, namespaces[0], liveHandler );
+ }
+ }
+ }
+ }
+};
+
+jQuery.Event = function( src ){
+ // Allow instantiation without the 'new' keyword
+ if( !this.preventDefault )
+ return new jQuery.Event(src);
+
+ // Event object
+ if( src && src.type ){
+ this.originalEvent = src;
+ this.type = src.type;
+ // Event type
+ }else
+ this.type = src;
+
+ // timeStamp is buggy for some events on Firefox(#3843)
+ // So we won't rely on the native value
+ this.timeStamp = now();
+
+ // Mark it as fixed
+ this[expando] = true;
+};
+
+function returnFalse(){
+ return false;
+}
+function returnTrue(){
+ return true;
+}
+
+// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding
+// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html
+jQuery.Event.prototype = {
+ preventDefault: function() {
+ this.isDefaultPrevented = returnTrue;
+
+ var e = this.originalEvent;
+ if( !e )
+ return;
+ // if preventDefault exists run it on the original event
+ if (e.preventDefault)
+ e.preventDefault();
+ // otherwise set the returnValue property of the original event to false (IE)
+ e.returnValue = false;
+ },
+ stopPropagation: function() {
+ this.isPropagationStopped = returnTrue;
+
+ var e = this.originalEvent;
+ if( !e )
+ return;
+ // if stopPropagation exists run it on the original event
+ if (e.stopPropagation)
+ e.stopPropagation();
+ // otherwise set the cancelBubble property of the original event to true (IE)
+ e.cancelBubble = true;
+ },
+ stopImmediatePropagation:function(){
+ this.isImmediatePropagationStopped = returnTrue;
+ this.stopPropagation();
+ },
+ isDefaultPrevented: returnFalse,
+ isPropagationStopped: returnFalse,
+ isImmediatePropagationStopped: returnFalse
+};
+// Checks if an event happened on an element within another element
+// Used in jQuery.event.special.mouseenter and mouseleave handlers
+var withinElement = function(event) {
+ // Check if mouse(over|out) are still within the same parent element
+ var parent = event.relatedTarget;
+ // Traverse up the tree
+ while ( parent && parent != this )
+ try { parent = parent.parentNode; }
+ catch(e) { parent = this; }
+
+ if( parent != this ){
+ // set the correct event type
+ event.type = event.data;
+ // handle event if we actually just moused on to a non sub-element
+ jQuery.event.handle.apply( this, arguments );
+ }
+};
+
+jQuery.each({
+ mouseover: 'mouseenter',
+ mouseout: 'mouseleave'
+}, function( orig, fix ){
+ jQuery.event.special[ fix ] = {
+ setup: function(){
+ jQuery.event.add( this, orig, withinElement, fix );
+ },
+ teardown: function(){
+ jQuery.event.remove( this, orig, withinElement );
+ }
+ };
+});
+
+jQuery.fn.extend({
+ bind: function( type, data, fn ) {
+ return type == "unload" ? this.one(type, data, fn) : this.each(function(){
+ jQuery.event.add( this, type, fn || data, fn && data );
+ });
+ },
+
+ one: function( type, data, fn ) {
+ var one = jQuery.event.proxy( fn || data, function(event) {
+ jQuery(this).unbind(event, one);
+ return (fn || data).apply( this, arguments );
+ });
+ return this.each(function(){
+ jQuery.event.add( this, type, one, fn && data);
+ });
+ },
+
+ unbind: function( type, fn ) {
+ return this.each(function(){
+ jQuery.event.remove( this, type, fn );
+ });
+ },
+
+ trigger: function( type, data ) {
+ return this.each(function(){
+ jQuery.event.trigger( type, data, this );
+ });
+ },
+
+ triggerHandler: function( type, data ) {
+ if( this[0] ){
+ var event = jQuery.Event(type);
+ event.preventDefault();
+ event.stopPropagation();
+ jQuery.event.trigger( event, data, this[0] );
+ return event.result;
+ }
+ },
+
+ toggle: function( fn ) {
+ // Save reference to arguments for access in closure
+ var args = arguments, i = 1;
+
+ // link all the functions, so any of them can unbind this click handler
+ while( i < args.length )
+ jQuery.event.proxy( fn, args[i++] );
+
+ return this.click( jQuery.event.proxy( fn, function(event) {
+ // Figure out which function to execute
+ this.lastToggle = ( this.lastToggle || 0 ) % i;
+
+ // Make sure that clicks stop
+ event.preventDefault();
+
+ // and execute the function
+ return args[ this.lastToggle++ ].apply( this, arguments ) || false;
+ }));
+ },
+
+ hover: function(fnOver, fnOut) {
+ return this.mouseenter(fnOver).mouseleave(fnOut);
+ },
+
+ ready: function(fn) {
+ // Attach the listeners
+ bindReady();
+
+ // If the DOM is already ready
+ if ( jQuery.isReady )
+ // Execute the function immediately
+ fn.call( document, jQuery );
+
+ // Otherwise, remember the function for later
+ else
+ // Add the function to the wait list
+ jQuery.readyList.push( fn );
+
+ return this;
+ },
+
+ live: function( type, fn ){
+ var proxy = jQuery.event.proxy( fn );
+ proxy.guid += this.selector + type;
+
+ jQuery(document).bind( liveConvert(type, this.selector), this.selector, proxy );
+
+ return this;
+ },
+
+ die: function( type, fn ){
+ jQuery(document).unbind( liveConvert(type, this.selector), fn ? { guid: fn.guid + this.selector + type } : null );
+ return this;
+ }
+});
+
+function liveHandler( event ){
+ var check = RegExp("(^|\\.)" + event.type + "(\\.|$)"),
+ stop = true,
+ elems = [];
+
+ jQuery.each(jQuery.data(this, "events").live || [], function(i, fn){
+ if ( check.test(fn.type) ) {
+ var elem = jQuery(event.target).closest(fn.data)[0];
+ if ( elem )
+ elems.push({ elem: elem, fn: fn });
+ }
+ });
+
+ elems.sort(function(a,b) {
+ return jQuery.data(a.elem, "closest") - jQuery.data(b.elem, "closest");
+ });
+
+ jQuery.each(elems, function(){
+ if ( this.fn.call(this.elem, event, this.fn.data) === false )
+ return (stop = false);
+ });
+
+ return stop;
+}
+
+function liveConvert(type, selector){
+ return ["live", type, selector.replace(/\./g, "`").replace(/ /g, "|")].join(".");
+}
+
+jQuery.extend({
+ isReady: false,
+ readyList: [],
+ // Handle when the DOM is ready
+ ready: function() {
+ // Make sure that the DOM is not already loaded
+ if ( !jQuery.isReady ) {
+ // Remember that the DOM is ready
+ jQuery.isReady = true;
+
+ // If there are functions bound, to execute
+ if ( jQuery.readyList ) {
+ // Execute all of them
+ jQuery.each( jQuery.readyList, function(){
+ this.call( document, jQuery );
+ });
+
+ // Reset the list of functions
+ jQuery.readyList = null;
+ }
+
+ // Trigger any bound ready events
+ jQuery(document).triggerHandler("ready");
+ }
+ }
+});
+
+var readyBound = false;
+
+function bindReady(){
+ if ( readyBound ) return;
+ readyBound = true;
+
+ // Mozilla, Opera and webkit nightlies currently support this event
+ if ( document.addEventListener ) {
+ // Use the handy event callback
+ document.addEventListener( "DOMContentLoaded", function(){
+ document.removeEventListener( "DOMContentLoaded", arguments.callee, false );
+ jQuery.ready();
+ }, false );
+
+ // If IE event model is used
+ } else if ( document.attachEvent ) {
+ // ensure firing before onload,
+ // maybe late but safe also for iframes
+ document.attachEvent("onreadystatechange", function(){
+ if ( document.readyState === "complete" ) {
+ document.detachEvent( "onreadystatechange", arguments.callee );
+ jQuery.ready();
+ }
+ });
+
+ // If IE and not an iframe
+ // continually check to see if the document is ready
+ if ( document.documentElement.doScroll && window == window.top ) (function(){
+ if ( jQuery.isReady ) return;
+
+ try {
+ // If IE is used, use the trick by Diego Perini
+ // http://javascript.nwbox.com/IEContentLoaded/
+ document.documentElement.doScroll("left");
+ } catch( error ) {
+ setTimeout( arguments.callee, 0 );
+ return;
+ }
+
+ // and execute any waiting functions
+ jQuery.ready();
+ })();
+ }
+
+ // A fallback to window.onload, that will always work
+ jQuery.event.add( window, "load", jQuery.ready );
+}
+
+jQuery.each( ("blur,focus,load,resize,scroll,unload,click,dblclick," +
+ "mousedown,mouseup,mousemove,mouseover,mouseout,mouseenter,mouseleave," +
+ "change,select,submit,keydown,keypress,keyup,error").split(","), function(i, name){
+
+ // Handle event binding
+ jQuery.fn[name] = function(fn){
+ return fn ? this.bind(name, fn) : this.trigger(name);
+ };
+});
+
+// Prevent memory leaks in IE
+// And prevent errors on refresh with events like mouseover in other browsers
+// Window isn't included so as not to unbind existing unload events
+jQuery( window ).bind( 'unload', function(){
+ for ( var id in jQuery.cache )
+ // Skip the window
+ if ( id != 1 && jQuery.cache[ id ].handle )
+ jQuery.event.remove( jQuery.cache[ id ].handle.elem );
+});
+(function(){
+
+ jQuery.support = {};
+
+ var root = document.documentElement,
+ script = document.createElement("script"),
+ div = document.createElement("div"),
+ id = "script" + (new Date).getTime();
+
+ div.style.display = "none";
+ div.innerHTML = ' <link/><table></table><a href="/a" style="color:red;float:left;opacity:.5;">a</a><select><option>text</option></select><object><param/></object>';
+
+ var all = div.getElementsByTagName("*"),
+ a = div.getElementsByTagName("a")[0];
+
+ // Can't get basic test support
+ if ( !all || !all.length || !a ) {
+ return;
+ }
+
+ jQuery.support = {
+ // IE strips leading whitespace when .innerHTML is used
+ leadingWhitespace: div.firstChild.nodeType == 3,
+
+ // Make sure that tbody elements aren't automatically inserted
+ // IE will insert them into empty tables
+ tbody: !div.getElementsByTagName("tbody").length,
+
+ // Make sure that you can get all elements in an <object> element
+ // IE 7 always returns no results
+ objectAll: !!div.getElementsByTagName("object")[0]
+ .getElementsByTagName("*").length,
+
+ // Make sure that link elements get serialized correctly by innerHTML
+ // This requires a wrapper element in IE
+ htmlSerialize: !!div.getElementsByTagName("link").length,
+
+ // Get the style information from getAttribute
+ // (IE uses .cssText insted)
+ style: /red/.test( a.getAttribute("style") ),
+
+ // Make sure that URLs aren't manipulated
+ // (IE normalizes it by default)
+ hrefNormalized: a.getAttribute("href") === "/a",
+
+ // Make sure that element opacity exists
+ // (IE uses filter instead)
+ opacity: a.style.opacity === "0.5",
+
+ // Verify style float existence
+ // (IE uses styleFloat instead of cssFloat)
+ cssFloat: !!a.style.cssFloat,
+
+ // Will be defined later
+ scriptEval: false,
+ noCloneEvent: true,
+ boxModel: null
+ };
+
+ script.type = "text/javascript";
+ try {
+ script.appendChild( document.createTextNode( "window." + id + "=1;" ) );
+ } catch(e){}
+
+ root.insertBefore( script, root.firstChild );
+
+ // Make sure that the execution of code works by injecting a script
+ // tag with appendChild/createTextNode
+ // (IE doesn't support this, fails, and uses .text instead)
+ if ( window[ id ] ) {
+ jQuery.support.scriptEval = true;
+ delete window[ id ];
+ }
+
+ root.removeChild( script );
+
+ if ( div.attachEvent && div.fireEvent ) {
+ div.attachEvent("onclick", function(){
+ // Cloning a node shouldn't copy over any
+ // bound event handlers (IE does this)
+ jQuery.support.noCloneEvent = false;
+ div.detachEvent("onclick", arguments.callee);
+ });
+ div.cloneNode(true).fireEvent("onclick");
+ }
+
+ // Figure out if the W3C box model works as expected
+ // document.body must exist before we can do this
+ jQuery(function(){
+ var div = document.createElement("div");
+ div.style.width = div.style.paddingLeft = "1px";
+
+ document.body.appendChild( div );
+ jQuery.boxModel = jQuery.support.boxModel = div.offsetWidth === 2;
+ document.body.removeChild( div ).style.display = 'none';
+ });
+})();
+
+var styleFloat = jQuery.support.cssFloat ? "cssFloat" : "styleFloat";
+
+jQuery.props = {
+ "for": "htmlFor",
+ "class": "className",
+ "float": styleFloat,
+ cssFloat: styleFloat,
+ styleFloat: styleFloat,
+ readonly: "readOnly",
+ maxlength: "maxLength",
+ cellspacing: "cellSpacing",
+ rowspan: "rowSpan",
+ tabindex: "tabIndex"
+};
+jQuery.fn.extend({
+ // Keep a copy of the old load
+ _load: jQuery.fn.load,
+
+ load: function( url, params, callback ) {
+ if ( typeof url !== "string" )
+ return this._load( url );
+
+ var off = url.indexOf(" ");
+ if ( off >= 0 ) {
+ var selector = url.slice(off, url.length);
+ url = url.slice(0, off);
+ }
+
+ // Default to a GET request
+ var type = "GET";
+
+ // If the second parameter was provided
+ if ( params )
+ // If it's a function
+ if ( jQuery.isFunction( params ) ) {
+ // We assume that it's the callback
+ callback = params;
+ params = null;
+
+ // Otherwise, build a param string
+ } else if( typeof params === "object" ) {
+ params = jQuery.param( params );
+ type = "POST";
+ }
+
+ var self = this;
+
+ // Request the remote document
+ jQuery.ajax({
+ url: url,
+ type: type,
+ dataType: "html",
+ data: params,
+ complete: function(res, status){
+ // If successful, inject the HTML into all the matched elements
+ if ( status == "success" || status == "notmodified" )
+ // See if a selector was specified
+ self.html( selector ?
+ // Create a dummy div to hold the results
+ jQuery("<div/>")
+ // inject the contents of the document in, removing the scripts
+ // to avoid any 'Permission Denied' errors in IE
+ .append(res.responseText.replace(/<script(.|\s)*?\/script>/g, ""))
+
+ // Locate the specified elements
+ .find(selector) :
+
+ // If not, just inject the full result
+ res.responseText );
+
+ if( callback )
+ self.each( callback, [res.responseText, status, res] );
+ }
+ });
+ return this;
+ },
+
+ serialize: function() {
+ return jQuery.param(this.serializeArray());
+ },
+ serializeArray: function() {
+ return this.map(function(){
+ return this.elements ? jQuery.makeArray(this.elements) : this;
+ })
+ .filter(function(){
+ return this.name && !this.disabled &&
+ (this.checked || /select|textarea/i.test(this.nodeName) ||
+ /text|hidden|password|search/i.test(this.type));
+ })
+ .map(function(i, elem){
+ var val = jQuery(this).val();
+ return val == null ? null :
+ jQuery.isArray(val) ?
+ jQuery.map( val, function(val, i){
+ return {name: elem.name, value: val};
+ }) :
+ {name: elem.name, value: val};
+ }).get();
+ }
+});
+
+// Attach a bunch of functions for handling common AJAX events
+jQuery.each( "ajaxStart,ajaxStop,ajaxComplete,ajaxError,ajaxSuccess,ajaxSend".split(","), function(i,o){
+ jQuery.fn[o] = function(f){
+ return this.bind(o, f);
+ };
+});
+
+var jsc = now();
+
+jQuery.extend({
+
+ get: function( url, data, callback, type ) {
+ // shift arguments if data argument was ommited
+ if ( jQuery.isFunction( data ) ) {
+ callback = data;
+ data = null;
+ }
+
+ return jQuery.ajax({
+ type: "GET",
+ url: url,
+ data: data,
+ success: callback,
+ dataType: type
+ });
+ },
+
+ getScript: function( url, callback ) {
+ return jQuery.get(url, null, callback, "script");
+ },
+
+ getJSON: function( url, data, callback ) {
+ return jQuery.get(url, data, callback, "json");
+ },
+
+ post: function( url, data, callback, type ) {
+ if ( jQuery.isFunction( data ) ) {
+ callback = data;
+ data = {};
+ }
+
+ return jQuery.ajax({
+ type: "POST",
+ url: url,
+ data: data,
+ success: callback,
+ dataType: type
+ });
+ },
+
+ ajaxSetup: function( settings ) {
+ jQuery.extend( jQuery.ajaxSettings, settings );
+ },
+
+ ajaxSettings: {
+ url: location.href,
+ global: true,
+ type: "GET",
+ contentType: "application/x-www-form-urlencoded",
+ processData: true,
+ async: true,
+ /*
+ timeout: 0,
+ data: null,
+ username: null,
+ password: null,
+ */
+ // Create the request object; Microsoft failed to properly
+ // implement the XMLHttpRequest in IE7, so we use the ActiveXObject when it is available
+ // This function can be overriden by calling jQuery.ajaxSetup
+ xhr:function(){
+ return window.ActiveXObject ? new ActiveXObject("Microsoft.XMLHTTP") : new XMLHttpRequest();
+ },
+ accepts: {
+ xml: "application/xml, text/xml",
+ html: "text/html",
+ script: "text/javascript, application/javascript",
+ json: "application/json, text/javascript",
+ text: "text/plain",
+ _default: "*/*"
+ }
+ },
+
+ // Last-Modified header cache for next request
+ lastModified: {},
+
+ ajax: function( s ) {
+ // Extend the settings, but re-extend 's' so that it can be
+ // checked again later (in the test suite, specifically)
+ s = jQuery.extend(true, s, jQuery.extend(true, {}, jQuery.ajaxSettings, s));
+
+ var jsonp, jsre = /=\?(&|$)/g, status, data,
+ type = s.type.toUpperCase();
+
+ // convert data if not already a string
+ if ( s.data && s.processData && typeof s.data !== "string" )
+ s.data = jQuery.param(s.data);
+
+ // Handle JSONP Parameter Callbacks
+ if ( s.dataType == "jsonp" ) {
+ if ( type == "GET" ) {
+ if ( !s.url.match(jsre) )
+ s.url += (s.url.match(/\?/) ? "&" : "?") + (s.jsonp || "callback") + "=?";
+ } else if ( !s.data || !s.data.match(jsre) )
+ s.data = (s.data ? s.data + "&" : "") + (s.jsonp || "callback") + "=?";
+ s.dataType = "json";
+ }
+
+ // Build temporary JSONP function
+ if ( s.dataType == "json" && (s.data && s.data.match(jsre) || s.url.match(jsre)) ) {
+ jsonp = "jsonp" + jsc++;
+
+ // Replace the =? sequence both in the query string and the data
+ if ( s.data )
+ s.data = (s.data + "").replace(jsre, "=" + jsonp + "$1");
+ s.url = s.url.replace(jsre, "=" + jsonp + "$1");
+
+ // We need to make sure
+ // that a JSONP style response is executed properly
+ s.dataType = "script";
+
+ // Handle JSONP-style loading
+ window[ jsonp ] = function(tmp){
+ data = tmp;
+ success();
+ complete();
+ // Garbage collect
+ window[ jsonp ] = undefined;
+ try{ delete window[ jsonp ]; } catch(e){}
+ if ( head )
+ head.removeChild( script );
+ };
+ }
+
+ if ( s.dataType == "script" && s.cache == null )
+ s.cache = false;
+
+ if ( s.cache === false && type == "GET" ) {
+ var ts = now();
+ // try replacing _= if it is there
+ var ret = s.url.replace(/(\?|&)_=.*?(&|$)/, "$1_=" + ts + "$2");
+ // if nothing was replaced, add timestamp to the end
+ s.url = ret + ((ret == s.url) ? (s.url.match(/\?/) ? "&" : "?") + "_=" + ts : "");
+ }
+
+ // If data is available, append data to url for get requests
+ if ( s.data && type == "GET" ) {
+ s.url += (s.url.match(/\?/) ? "&" : "?") + s.data;
+
+ // IE likes to send both get and post data, prevent this
+ s.data = null;
+ }
+
+ // Watch for a new set of requests
+ if ( s.global && ! jQuery.active++ )
+ jQuery.event.trigger( "ajaxStart" );
+
+ // Matches an absolute URL, and saves the domain
+ var parts = /^(\w+:)?\/\/([^\/?#]+)/.exec( s.url );
+
+ // If we're requesting a remote document
+ // and trying to load JSON or Script with a GET
+ if ( s.dataType == "script" && type == "GET" && parts
+ && ( parts[1] && parts[1] != location.protocol || parts[2] != location.host )){
+
+ var head = document.getElementsByTagName("head")[0];
+ var script = document.createElement("script");
+ script.src = s.url;
+ if (s.scriptCharset)
+ script.charset = s.scriptCharset;
+
+ // Handle Script loading
+ if ( !jsonp ) {
+ var done = false;
+
+ // Attach handlers for all browsers
+ script.onload = script.onreadystatechange = function(){
+ if ( !done && (!this.readyState ||
+ this.readyState == "loaded" || this.readyState == "complete") ) {
+ done = true;
+ success();
+ complete();
+
+ // Handle memory leak in IE
+ script.onload = script.onreadystatechange = null;
+ head.removeChild( script );
+ }
+ };
+ }
+
+ head.appendChild(script);
+
+ // We handle everything using the script element injection
+ return undefined;
+ }
+
+ var requestDone = false;
+
+ // Create the request object
+ var xhr = s.xhr();
+
+ // Open the socket
+ // Passing null username, generates a login popup on Opera (#2865)
+ if( s.username )
+ xhr.open(type, s.url, s.async, s.username, s.password);
+ else
+ xhr.open(type, s.url, s.async);
+
+ // Need an extra try/catch for cross domain requests in Firefox 3
+ try {
+ // Set the correct header, if data is being sent
+ if ( s.data )
+ xhr.setRequestHeader("Content-Type", s.contentType);
+
+ // Set the If-Modified-Since header, if ifModified mode.
+ if ( s.ifModified )
+ xhr.setRequestHeader("If-Modified-Since",
+ jQuery.lastModified[s.url] || "Thu, 01 Jan 1970 00:00:00 GMT" );
+
+ // Set header so the called script knows that it's an XMLHttpRequest
+ xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest");
+
+ // Set the Accepts header for the server, depending on the dataType
+ xhr.setRequestHeader("Accept", s.dataType && s.accepts[ s.dataType ] ?
+ s.accepts[ s.dataType ] + ", */*" :
+ s.accepts._default );
+ } catch(e){}
+
+ // Allow custom headers/mimetypes and early abort
+ if ( s.beforeSend && s.beforeSend(xhr, s) === false ) {
+ // Handle the global AJAX counter
+ if ( s.global && ! --jQuery.active )
+ jQuery.event.trigger( "ajaxStop" );
+ // close opended socket
+ xhr.abort();
+ return false;
+ }
+
+ if ( s.global )
+ jQuery.event.trigger("ajaxSend", [xhr, s]);
+
+ // Wait for a response to come back
+ var onreadystatechange = function(isTimeout){
+ // The request was aborted, clear the interval and decrement jQuery.active
+ if (xhr.readyState == 0) {
+ if (ival) {
+ // clear poll interval
+ clearInterval(ival);
+ ival = null;
+ // Handle the global AJAX counter
+ if ( s.global && ! --jQuery.active )
+ jQuery.event.trigger( "ajaxStop" );
+ }
+ // The transfer is complete and the data is available, or the request timed out
+ } else if ( !requestDone && xhr && (xhr.readyState == 4 || isTimeout == "timeout") ) {
+ requestDone = true;
+
+ // clear poll interval
+ if (ival) {
+ clearInterval(ival);
+ ival = null;
+ }
+
+ status = isTimeout == "timeout" ? "timeout" :
+ !jQuery.httpSuccess( xhr ) ? "error" :
+ s.ifModified && jQuery.httpNotModified( xhr, s.url ) ? "notmodified" :
+ "success";
+
+ if ( status == "success" ) {
+ // Watch for, and catch, XML document parse errors
+ try {
+ // process the data (runs the xml through httpData regardless of callback)
+ data = jQuery.httpData( xhr, s.dataType, s );
+ } catch(e) {
+ status = "parsererror";
+ }
+ }
+
+ // Make sure that the request was successful or notmodified
+ if ( status == "success" ) {
+ // Cache Last-Modified header, if ifModified mode.
+ var modRes;
+ try {
+ modRes = xhr.getResponseHeader("Last-Modified");
+ } catch(e) {} // swallow exception thrown by FF if header is not available
+
+ if ( s.ifModified && modRes )
+ jQuery.lastModified[s.url] = modRes;
+
+ // JSONP handles its own success callback
+ if ( !jsonp )
+ success();
+ } else
+ jQuery.handleError(s, xhr, status);
+
+ // Fire the complete handlers
+ complete();
+
+ if ( isTimeout )
+ xhr.abort();
+
+ // Stop memory leaks
+ if ( s.async )
+ xhr = null;
+ }
+ };
+
+ if ( s.async ) {
+ // don't attach the handler to the request, just poll it instead
+ var ival = setInterval(onreadystatechange, 13);
+
+ // Timeout checker
+ if ( s.timeout > 0 )
+ setTimeout(function(){
+ // Check to see if the request is still happening
+ if ( xhr && !requestDone )
+ onreadystatechange( "timeout" );
+ }, s.timeout);
+ }
+
+ // Send the data
+ try {
+ xhr.send(s.data);
+ } catch(e) {
+ jQuery.handleError(s, xhr, null, e);
+ }
+
+ // firefox 1.5 doesn't fire statechange for sync requests
+ if ( !s.async )
+ onreadystatechange();
+
+ function success(){
+ // If a local callback was specified, fire it and pass it the data
+ if ( s.success )
+ s.success( data, status );
+
+ // Fire the global callback
+ if ( s.global )
+ jQuery.event.trigger( "ajaxSuccess", [xhr, s] );
+ }
+
+ function complete(){
+ // Process result
+ if ( s.complete )
+ s.complete(xhr, status);
+
+ // The request was completed
+ if ( s.global )
+ jQuery.event.trigger( "ajaxComplete", [xhr, s] );
+
+ // Handle the global AJAX counter
+ if ( s.global && ! --jQuery.active )
+ jQuery.event.trigger( "ajaxStop" );
+ }
+
+ // return XMLHttpRequest to allow aborting the request etc.
+ return xhr;
+ },
+
+ handleError: function( s, xhr, status, e ) {
+ // If a local callback was specified, fire it
+ if ( s.error ) s.error( xhr, status, e );
+
+ // Fire the global callback
+ if ( s.global )
+ jQuery.event.trigger( "ajaxError", [xhr, s, e] );
+ },
+
+ // Counter for holding the number of active queries
+ active: 0,
+
+ // Determines if an XMLHttpRequest was successful or not
+ httpSuccess: function( xhr ) {
+ try {
+ // IE error sometimes returns 1223 when it should be 204 so treat it as success, see #1450
+ return !xhr.status && location.protocol == "file:" ||
+ ( xhr.status >= 200 && xhr.status < 300 ) || xhr.status == 304 || xhr.status == 1223;
+ } catch(e){}
+ return false;
+ },
+
+ // Determines if an XMLHttpRequest returns NotModified
+ httpNotModified: function( xhr, url ) {
+ try {
+ var xhrRes = xhr.getResponseHeader("Last-Modified");
+
+ // Firefox always returns 200. check Last-Modified date
+ return xhr.status == 304 || xhrRes == jQuery.lastModified[url];
+ } catch(e){}
+ return false;
+ },
+
+ httpData: function( xhr, type, s ) {
+ var ct = xhr.getResponseHeader("content-type"),
+ xml = type == "xml" || !type && ct && ct.indexOf("xml") >= 0,
+ data = xml ? xhr.responseXML : xhr.responseText;
+
+ if ( xml && data.documentElement.tagName == "parsererror" )
+ throw "parsererror";
+
+ // Allow a pre-filtering function to sanitize the response
+ // s != null is checked to keep backwards compatibility
+ if( s && s.dataFilter )
+ data = s.dataFilter( data, type );
+
+ // The filter can actually parse the response
+ if( typeof data === "string" ){
+
+ // If the type is "script", eval it in global context
+ if ( type == "script" )
+ jQuery.globalEval( data );
+
+ // Get the JavaScript object, if JSON is used.
+ if ( type == "json" )
+ data = window["eval"]("(" + data + ")");
+ }
+
+ return data;
+ },
+
+ // Serialize an array of form elements or a set of
+ // key/values into a query string
+ param: function( a ) {
+ var s = [ ];
+
+ function add( key, value ){
+ s[ s.length ] = encodeURIComponent(key) + '=' + encodeURIComponent(value);
+ };
+
+ // If an array was passed in, assume that it is an array
+ // of form elements
+ if ( jQuery.isArray(a) || a.jquery )
+ // Serialize the form elements
+ jQuery.each( a, function(){
+ add( this.name, this.value );
+ });
+
+ // Otherwise, assume that it's an object of key/value pairs
+ else
+ // Serialize the key/values
+ for ( var j in a )
+ // If the value is an array then the key names need to be repeated
+ if ( jQuery.isArray(a[j]) )
+ jQuery.each( a[j], function(){
+ add( j, this );
+ });
+ else
+ add( j, jQuery.isFunction(a[j]) ? a[j]() : a[j] );
+
+ // Return the resulting serialization
+ return s.join("&").replace(/%20/g, "+");
+ }
+
+});
+var elemdisplay = {},
+ timerId,
+ fxAttrs = [
+ // height animations
+ [ "height", "marginTop", "marginBottom", "paddingTop", "paddingBottom" ],
+ // width animations
+ [ "width", "marginLeft", "marginRight", "paddingLeft", "paddingRight" ],
+ // opacity animations
+ [ "opacity" ]
+ ];
+
+function genFx( type, num ){
+ var obj = {};
+ jQuery.each( fxAttrs.concat.apply([], fxAttrs.slice(0,num)), function(){
+ obj[ this ] = type;
+ });
+ return obj;
+}
+
+jQuery.fn.extend({
+ show: function(speed,callback){
+ if ( speed ) {
+ return this.animate( genFx("show", 3), speed, callback);
+ } else {
+ for ( var i = 0, l = this.length; i < l; i++ ){
+ var old = jQuery.data(this[i], "olddisplay");
+
+ this[i].style.display = old || "";
+
+ if ( jQuery.css(this[i], "display") === "none" ) {
+ var tagName = this[i].tagName, display;
+
+ if ( elemdisplay[ tagName ] ) {
+ display = elemdisplay[ tagName ];
+ } else {
+ var elem = jQuery("<" + tagName + " />").appendTo("body");
+
+ display = elem.css("display");
+ if ( display === "none" )
+ display = "block";
+
+ elem.remove();
+
+ elemdisplay[ tagName ] = display;
+ }
+
+ jQuery.data(this[i], "olddisplay", display);
+ }
+ }
+
+ // Set the display of the elements in a second loop
+ // to avoid the constant reflow
+ for ( var i = 0, l = this.length; i < l; i++ ){
+ this[i].style.display = jQuery.data(this[i], "olddisplay") || "";
+ }
+
+ return this;
+ }
+ },
+
+ hide: function(speed,callback){
+ if ( speed ) {
+ return this.animate( genFx("hide", 3), speed, callback);
+ } else {
+ for ( var i = 0, l = this.length; i < l; i++ ){
+ var old = jQuery.data(this[i], "olddisplay");
+ if ( !old && old !== "none" )
+ jQuery.data(this[i], "olddisplay", jQuery.css(this[i], "display"));
+ }
+
+ // Set the display of the elements in a second loop
+ // to avoid the constant reflow
+ for ( var i = 0, l = this.length; i < l; i++ ){
+ this[i].style.display = "none";
+ }
+
+ return this;
+ }
+ },
+
+ // Save the old toggle function
+ _toggle: jQuery.fn.toggle,
+
+ toggle: function( fn, fn2 ){
+ var bool = typeof fn === "boolean";
+
+ return jQuery.isFunction(fn) && jQuery.isFunction(fn2) ?
+ this._toggle.apply( this, arguments ) :
+ fn == null || bool ?
+ this.each(function(){
+ var state = bool ? fn : jQuery(this).is(":hidden");
+ jQuery(this)[ state ? "show" : "hide" ]();
+ }) :
+ this.animate(genFx("toggle", 3), fn, fn2);
+ },
+
+ fadeTo: function(speed,to,callback){
+ return this.animate({opacity: to}, speed, callback);
+ },
+
+ animate: function( prop, speed, easing, callback ) {
+ var optall = jQuery.speed(speed, easing, callback);
+
+ return this[ optall.queue === false ? "each" : "queue" ](function(){
+
+ var opt = jQuery.extend({}, optall), p,
+ hidden = this.nodeType == 1 && jQuery(this).is(":hidden"),
+ self = this;
+
+ for ( p in prop ) {
+ if ( prop[p] == "hide" && hidden || prop[p] == "show" && !hidden )
+ return opt.complete.call(this);
+
+ if ( ( p == "height" || p == "width" ) && this.style ) {
+ // Store display property
+ opt.display = jQuery.css(this, "display");
+
+ // Make sure that nothing sneaks out
+ opt.overflow = this.style.overflow;
+ }
+ }
+
+ if ( opt.overflow != null )
+ this.style.overflow = "hidden";
+
+ opt.curAnim = jQuery.extend({}, prop);
+
+ jQuery.each( prop, function(name, val){
+ var e = new jQuery.fx( self, opt, name );
+
+ if ( /toggle|show|hide/.test(val) )
+ e[ val == "toggle" ? hidden ? "show" : "hide" : val ]( prop );
+ else {
+ var parts = val.toString().match(/^([+-]=)?([\d+-.]+)(.*)$/),
+ start = e.cur(true) || 0;
+
+ if ( parts ) {
+ var end = parseFloat(parts[2]),
+ unit = parts[3] || "px";
+
+ // We need to compute starting value
+ if ( unit != "px" ) {
+ self.style[ name ] = (end || 1) + unit;
+ start = ((end || 1) / e.cur(true)) * start;
+ self.style[ name ] = start + unit;
+ }
+
+ // If a +=/-= token was provided, we're doing a relative animation
+ if ( parts[1] )
+ end = ((parts[1] == "-=" ? -1 : 1) * end) + start;
+
+ e.custom( start, end, unit );
+ } else
+ e.custom( start, val, "" );
+ }
+ });
+
+ // For JS strict compliance
+ return true;
+ });
+ },
+
+ stop: function(clearQueue, gotoEnd){
+ var timers = jQuery.timers;
+
+ if (clearQueue)
+ this.queue([]);
+
+ this.each(function(){
+ // go in reverse order so anything added to the queue during the loop is ignored
+ for ( var i = timers.length - 1; i >= 0; i-- )
+ if ( timers[i].elem == this ) {
+ if (gotoEnd)
+ // force the next step to be the last
+ timers[i](true);
+ timers.splice(i, 1);
+ }
+ });
+
+ // start the next in the queue if the last step wasn't forced
+ if (!gotoEnd)
+ this.dequeue();
+
+ return this;
+ }
+
+});
+
+// Generate shortcuts for custom animations
+jQuery.each({
+ slideDown: genFx("show", 1),
+ slideUp: genFx("hide", 1),
+ slideToggle: genFx("toggle", 1),
+ fadeIn: { opacity: "show" },
+ fadeOut: { opacity: "hide" }
+}, function( name, props ){
+ jQuery.fn[ name ] = function( speed, callback ){
+ return this.animate( props, speed, callback );
+ };
+});
+
+jQuery.extend({
+
+ speed: function(speed, easing, fn) {
+ var opt = typeof speed === "object" ? speed : {
+ complete: fn || !fn && easing ||
+ jQuery.isFunction( speed ) && speed,
+ duration: speed,
+ easing: fn && easing || easing && !jQuery.isFunction(easing) && easing
+ };
+
+ opt.duration = jQuery.fx.off ? 0 : typeof opt.duration === "number" ? opt.duration :
+ jQuery.fx.speeds[opt.duration] || jQuery.fx.speeds._default;
+
+ // Queueing
+ opt.old = opt.complete;
+ opt.complete = function(){
+ if ( opt.queue !== false )
+ jQuery(this).dequeue();
+ if ( jQuery.isFunction( opt.old ) )
+ opt.old.call( this );
+ };
+
+ return opt;
+ },
+
+ easing: {
+ linear: function( p, n, firstNum, diff ) {
+ return firstNum + diff * p;
+ },
+ swing: function( p, n, firstNum, diff ) {
+ return ((-Math.cos(p*Math.PI)/2) + 0.5) * diff + firstNum;
+ }
+ },
+
+ timers: [],
+
+ fx: function( elem, options, prop ){
+ this.options = options;
+ this.elem = elem;
+ this.prop = prop;
+
+ if ( !options.orig )
+ options.orig = {};
+ }
+
+});
+
+jQuery.fx.prototype = {
+
+ // Simple function for setting a style value
+ update: function(){
+ if ( this.options.step )
+ this.options.step.call( this.elem, this.now, this );
+
+ (jQuery.fx.step[this.prop] || jQuery.fx.step._default)( this );
+
+ // Set display property to block for height/width animations
+ if ( ( this.prop == "height" || this.prop == "width" ) && this.elem.style )
+ this.elem.style.display = "block";
+ },
+
+ // Get the current size
+ cur: function(force){
+ if ( this.elem[this.prop] != null && (!this.elem.style || this.elem.style[this.prop] == null) )
+ return this.elem[ this.prop ];
+
+ var r = parseFloat(jQuery.css(this.elem, this.prop, force));
+ return r && r > -10000 ? r : parseFloat(jQuery.curCSS(this.elem, this.prop)) || 0;
+ },
+
+ // Start an animation from one number to another
+ custom: function(from, to, unit){
+ this.startTime = now();
+ this.start = from;
+ this.end = to;
+ this.unit = unit || this.unit || "px";
+ this.now = this.start;
+ this.pos = this.state = 0;
+
+ var self = this;
+ function t(gotoEnd){
+ return self.step(gotoEnd);
+ }
+
+ t.elem = this.elem;
+
+ if ( t() && jQuery.timers.push(t) && !timerId ) {
+ timerId = setInterval(function(){
+ var timers = jQuery.timers;
+
+ for ( var i = 0; i < timers.length; i++ )
+ if ( !timers[i]() )
+ timers.splice(i--, 1);
+
+ if ( !timers.length ) {
+ clearInterval( timerId );
+ timerId = undefined;
+ }
+ }, 13);
+ }
+ },
+
+ // Simple 'show' function
+ show: function(){
+ // Remember where we started, so that we can go back to it later
+ this.options.orig[this.prop] = jQuery.attr( this.elem.style, this.prop );
+ this.options.show = true;
+
+ // Begin the animation
+ // Make sure that we start at a small width/height to avoid any
+ // flash of content
+ this.custom(this.prop == "width" || this.prop == "height" ? 1 : 0, this.cur());
+
+ // Start by showing the element
+ jQuery(this.elem).show();
+ },
+
+ // Simple 'hide' function
+ hide: function(){
+ // Remember where we started, so that we can go back to it later
+ this.options.orig[this.prop] = jQuery.attr( this.elem.style, this.prop );
+ this.options.hide = true;
+
+ // Begin the animation
+ this.custom(this.cur(), 0);
+ },
+
+ // Each step of an animation
+ step: function(gotoEnd){
+ var t = now();
+
+ if ( gotoEnd || t >= this.options.duration + this.startTime ) {
+ this.now = this.end;
+ this.pos = this.state = 1;
+ this.update();
+
+ this.options.curAnim[ this.prop ] = true;
+
+ var done = true;
+ for ( var i in this.options.curAnim )
+ if ( this.options.curAnim[i] !== true )
+ done = false;
+
+ if ( done ) {
+ if ( this.options.display != null ) {
+ // Reset the overflow
+ this.elem.style.overflow = this.options.overflow;
+
+ // Reset the display
+ this.elem.style.display = this.options.display;
+ if ( jQuery.css(this.elem, "display") == "none" )
+ this.elem.style.display = "block";
+ }
+
+ // Hide the element if the "hide" operation was done
+ if ( this.options.hide )
+ jQuery(this.elem).hide();
+
+ // Reset the properties, if the item has been hidden or shown
+ if ( this.options.hide || this.options.show )
+ for ( var p in this.options.curAnim )
+ jQuery.attr(this.elem.style, p, this.options.orig[p]);
+
+ // Execute the complete function
+ this.options.complete.call( this.elem );
+ }
+
+ return false;
+ } else {
+ var n = t - this.startTime;
+ this.state = n / this.options.duration;
+
+ // Perform the easing function, defaults to swing
+ this.pos = jQuery.easing[this.options.easing || (jQuery.easing.swing ? "swing" : "linear")](this.state, n, 0, 1, this.options.duration);
+ this.now = this.start + ((this.end - this.start) * this.pos);
+
+ // Perform the next step of the animation
+ this.update();
+ }
+
+ return true;
+ }
+
+};
+
+jQuery.extend( jQuery.fx, {
+ speeds:{
+ slow: 600,
+ fast: 200,
+ // Default speed
+ _default: 400
+ },
+ step: {
+
+ opacity: function(fx){
+ jQuery.attr(fx.elem.style, "opacity", fx.now);
+ },
+
+ _default: function(fx){
+ if ( fx.elem.style && fx.elem.style[ fx.prop ] != null )
+ fx.elem.style[ fx.prop ] = fx.now + fx.unit;
+ else
+ fx.elem[ fx.prop ] = fx.now;
+ }
+ }
+});
+if ( document.documentElement["getBoundingClientRect"] )
+ jQuery.fn.offset = function() {
+ if ( !this[0] ) return { top: 0, left: 0 };
+ if ( this[0] === this[0].ownerDocument.body ) return jQuery.offset.bodyOffset( this[0] );
+ var box = this[0].getBoundingClientRect(), doc = this[0].ownerDocument, body = doc.body, docElem = doc.documentElement,
+ clientTop = docElem.clientTop || body.clientTop || 0, clientLeft = docElem.clientLeft || body.clientLeft || 0,
+ top = box.top + (self.pageYOffset || jQuery.boxModel && docElem.scrollTop || body.scrollTop ) - clientTop,
+ left = box.left + (self.pageXOffset || jQuery.boxModel && docElem.scrollLeft || body.scrollLeft) - clientLeft;
+ return { top: top, left: left };
+ };
+else
+ jQuery.fn.offset = function() {
+ if ( !this[0] ) return { top: 0, left: 0 };
+ if ( this[0] === this[0].ownerDocument.body ) return jQuery.offset.bodyOffset( this[0] );
+ jQuery.offset.initialized || jQuery.offset.initialize();
+
+ var elem = this[0], offsetParent = elem.offsetParent, prevOffsetParent = elem,
+ doc = elem.ownerDocument, computedStyle, docElem = doc.documentElement,
+ body = doc.body, defaultView = doc.defaultView,
+ prevComputedStyle = defaultView.getComputedStyle(elem, null),
+ top = elem.offsetTop, left = elem.offsetLeft;
+
+ while ( (elem = elem.parentNode) && elem !== body && elem !== docElem ) {
+ computedStyle = defaultView.getComputedStyle(elem, null);
+ top -= elem.scrollTop, left -= elem.scrollLeft;
+ if ( elem === offsetParent ) {
+ top += elem.offsetTop, left += elem.offsetLeft;
+ if ( jQuery.offset.doesNotAddBorder && !(jQuery.offset.doesAddBorderForTableAndCells && /^t(able|d|h)$/i.test(elem.tagName)) )
+ top += parseInt( computedStyle.borderTopWidth, 10) || 0,
+ left += parseInt( computedStyle.borderLeftWidth, 10) || 0;
+ prevOffsetParent = offsetParent, offsetParent = elem.offsetParent;
+ }
+ if ( jQuery.offset.subtractsBorderForOverflowNotVisible && computedStyle.overflow !== "visible" )
+ top += parseInt( computedStyle.borderTopWidth, 10) || 0,
+ left += parseInt( computedStyle.borderLeftWidth, 10) || 0;
+ prevComputedStyle = computedStyle;
+ }
+
+ if ( prevComputedStyle.position === "relative" || prevComputedStyle.position === "static" )
+ top += body.offsetTop,
+ left += body.offsetLeft;
+
+ if ( prevComputedStyle.position === "fixed" )
+ top += Math.max(docElem.scrollTop, body.scrollTop),
+ left += Math.max(docElem.scrollLeft, body.scrollLeft);
+
+ return { top: top, left: left };
+ };
+
+jQuery.offset = {
+ initialize: function() {
+ if ( this.initialized ) return;
+ var body = document.body, container = document.createElement('div'), innerDiv, checkDiv, table, td, rules, prop, bodyMarginTop = body.style.marginTop,
+ html = '<div style="position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;"><div></div></div><table style="position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;" cellpadding="0" cellspacing="0"><tr><td></td></tr></table>';
+
+ rules = { position: 'absolute', top: 0, left: 0, margin: 0, border: 0, width: '1px', height: '1px', visibility: 'hidden' };
+ for ( prop in rules ) container.style[prop] = rules[prop];
+
+ container.innerHTML = html;
+ body.insertBefore(container, body.firstChild);
+ innerDiv = container.firstChild, checkDiv = innerDiv.firstChild, td = innerDiv.nextSibling.firstChild.firstChild;
+
+ this.doesNotAddBorder = (checkDiv.offsetTop !== 5);
+ this.doesAddBorderForTableAndCells = (td.offsetTop === 5);
+
+ innerDiv.style.overflow = 'hidden', innerDiv.style.position = 'relative';
+ this.subtractsBorderForOverflowNotVisible = (checkDiv.offsetTop === -5);
+
+ body.style.marginTop = '1px';
+ this.doesNotIncludeMarginInBodyOffset = (body.offsetTop === 0);
+ body.style.marginTop = bodyMarginTop;
+
+ body.removeChild(container);
+ this.initialized = true;
+ },
+
+ bodyOffset: function(body) {
+ jQuery.offset.initialized || jQuery.offset.initialize();
+ var top = body.offsetTop, left = body.offsetLeft;
+ if ( jQuery.offset.doesNotIncludeMarginInBodyOffset )
+ top += parseInt( jQuery.curCSS(body, 'marginTop', true), 10 ) || 0,
+ left += parseInt( jQuery.curCSS(body, 'marginLeft', true), 10 ) || 0;
+ return { top: top, left: left };
+ }
+};
+
+
+jQuery.fn.extend({
+ position: function() {
+ var left = 0, top = 0, results;
+
+ if ( this[0] ) {
+ // Get *real* offsetParent
+ var offsetParent = this.offsetParent(),
+
+ // Get correct offsets
+ offset = this.offset(),
+ parentOffset = /^body|html$/i.test(offsetParent[0].tagName) ? { top: 0, left: 0 } : offsetParent.offset();
+
+ // Subtract element margins
+ // note: when an element has margin: auto the offsetLeft and marginLeft
+ // are the same in Safari causing offset.left to incorrectly be 0
+ offset.top -= num( this, 'marginTop' );
+ offset.left -= num( this, 'marginLeft' );
+
+ // Add offsetParent borders
+ parentOffset.top += num( offsetParent, 'borderTopWidth' );
+ parentOffset.left += num( offsetParent, 'borderLeftWidth' );
+
+ // Subtract the two offsets
+ results = {
+ top: offset.top - parentOffset.top,
+ left: offset.left - parentOffset.left
+ };
+ }
+
+ return results;
+ },
+
+ offsetParent: function() {
+ var offsetParent = this[0].offsetParent || document.body;
+ while ( offsetParent && (!/^body|html$/i.test(offsetParent.tagName) && jQuery.css(offsetParent, 'position') == 'static') )
+ offsetParent = offsetParent.offsetParent;
+ return jQuery(offsetParent);
+ }
+});
+
+
+// Create scrollLeft and scrollTop methods
+jQuery.each( ['Left', 'Top'], function(i, name) {
+ var method = 'scroll' + name;
+
+ jQuery.fn[ method ] = function(val) {
+ if (!this[0]) return null;
+
+ return val !== undefined ?
+
+ // Set the scroll offset
+ this.each(function() {
+ this == window || this == document ?
+ window.scrollTo(
+ !i ? val : jQuery(window).scrollLeft(),
+ i ? val : jQuery(window).scrollTop()
+ ) :
+ this[ method ] = val;
+ }) :
+
+ // Return the scroll offset
+ this[0] == window || this[0] == document ?
+ self[ i ? 'pageYOffset' : 'pageXOffset' ] ||
+ jQuery.boxModel && document.documentElement[ method ] ||
+ document.body[ method ] :
+ this[0][ method ];
+ };
+});
+// Create innerHeight, innerWidth, outerHeight and outerWidth methods
+jQuery.each([ "Height", "Width" ], function(i, name){
+
+ var tl = i ? "Left" : "Top", // top or left
+ br = i ? "Right" : "Bottom", // bottom or right
+ lower = name.toLowerCase();
+
+ // innerHeight and innerWidth
+ jQuery.fn["inner" + name] = function(){
+ return this[0] ?
+ jQuery.css( this[0], lower, false, "padding" ) :
+ null;
+ };
+
+ // outerHeight and outerWidth
+ jQuery.fn["outer" + name] = function(margin) {
+ return this[0] ?
+ jQuery.css( this[0], lower, false, margin ? "margin" : "border" ) :
+ null;
+ };
+
+ var type = name.toLowerCase();
+
+ jQuery.fn[ type ] = function( size ) {
+ // Get window width or height
+ return this[0] == window ?
+ // Everyone else use document.documentElement or document.body depending on Quirks vs Standards mode
+ document.compatMode == "CSS1Compat" && document.documentElement[ "client" + name ] ||
+ document.body[ "client" + name ] :
+
+ // Get document width or height
+ this[0] == document ?
+ // Either scroll[Width/Height] or offset[Width/Height], whichever is greater
+ Math.max(
+ document.documentElement["client" + name],
+ document.body["scroll" + name], document.documentElement["scroll" + name],
+ document.body["offset" + name], document.documentElement["offset" + name]
+ ) :
+
+ // Get or set width or height on the element
+ size === undefined ?
+ // Get width or height on the element
+ (this.length ? jQuery.css( this[0], type ) : null) :
+
+ // Set the width or height on the element (default to pixels if value is unitless)
+ this.css( type, typeof size === "string" ? size : size + "px" );
+ };
+
+});
+})(); \ No newline at end of file
diff --git a/bug/bug/jquery-validation-1.8.1/lib/jquery-1.4.2.js b/bug/bug/jquery-validation-1.8.1/lib/jquery-1.4.2.js
new file mode 100644
index 0000000..fff6776
--- /dev/null
+++ b/bug/bug/jquery-validation-1.8.1/lib/jquery-1.4.2.js
@@ -0,0 +1,6240 @@
+/*!
+ * jQuery JavaScript Library v1.4.2
+ * http://jquery.com/
+ *
+ * Copyright 2010, John Resig
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * Includes Sizzle.js
+ * http://sizzlejs.com/
+ * Copyright 2010, The Dojo Foundation
+ * Released under the MIT, BSD, and GPL Licenses.
+ *
+ * Date: Sat Feb 13 22:33:48 2010 -0500
+ */
+(function( window, undefined ) {
+
+// Define a local copy of jQuery
+var jQuery = function( selector, context ) {
+ // The jQuery object is actually just the init constructor 'enhanced'
+ return new jQuery.fn.init( selector, context );
+ },
+
+ // Map over jQuery in case of overwrite
+ _jQuery = window.jQuery,
+
+ // Map over the $ in case of overwrite
+ _$ = window.$,
+
+ // Use the correct document accordingly with window argument (sandbox)
+ document = window.document,
+
+ // A central reference to the root jQuery(document)
+ rootjQuery,
+
+ // A simple way to check for HTML strings or ID strings
+ // (both of which we optimize for)
+ quickExpr = /^[^<]*(<[\w\W]+>)[^>]*$|^#([\w-]+)$/,
+
+ // Is it a simple selector
+ isSimple = /^.[^:#\[\.,]*$/,
+
+ // Check if a string has a non-whitespace character in it
+ rnotwhite = /\S/,
+
+ // Used for trimming whitespace
+ rtrim = /^(\s|\u00A0)+|(\s|\u00A0)+$/g,
+
+ // Match a standalone tag
+ rsingleTag = /^<(\w+)\s*\/?>(?:<\/\1>)?$/,
+
+ // Keep a UserAgent string for use with jQuery.browser
+ userAgent = navigator.userAgent,
+
+ // For matching the engine and version of the browser
+ browserMatch,
+
+ // Has the ready events already been bound?
+ readyBound = false,
+
+ // The functions to execute on DOM ready
+ readyList = [],
+
+ // The ready event handler
+ DOMContentLoaded,
+
+ // Save a reference to some core methods
+ toString = Object.prototype.toString,
+ hasOwnProperty = Object.prototype.hasOwnProperty,
+ push = Array.prototype.push,
+ slice = Array.prototype.slice,
+ indexOf = Array.prototype.indexOf;
+
+jQuery.fn = jQuery.prototype = {
+ init: function( selector, context ) {
+ var match, elem, ret, doc;
+
+ // Handle $(""), $(null), or $(undefined)
+ if ( !selector ) {
+ return this;
+ }
+
+ // Handle $(DOMElement)
+ if ( selector.nodeType ) {
+ this.context = this[0] = selector;
+ this.length = 1;
+ return this;
+ }
+
+ // The body element only exists once, optimize finding it
+ if ( selector === "body" && !context ) {
+ this.context = document;
+ this[0] = document.body;
+ this.selector = "body";
+ this.length = 1;
+ return this;
+ }
+
+ // Handle HTML strings
+ if ( typeof selector === "string" ) {
+ // Are we dealing with HTML string or an ID?
+ match = quickExpr.exec( selector );
+
+ // Verify a match, and that no context was specified for #id
+ if ( match && (match[1] || !context) ) {
+
+ // HANDLE: $(html) -> $(array)
+ if ( match[1] ) {
+ doc = (context ? context.ownerDocument || context : document);
+
+ // If a single string is passed in and it's a single tag
+ // just do a createElement and skip the rest
+ ret = rsingleTag.exec( selector );
+
+ if ( ret ) {
+ if ( jQuery.isPlainObject( context ) ) {
+ selector = [ document.createElement( ret[1] ) ];
+ jQuery.fn.attr.call( selector, context, true );
+
+ } else {
+ selector = [ doc.createElement( ret[1] ) ];
+ }
+
+ } else {
+ ret = buildFragment( [ match[1] ], [ doc ] );
+ selector = (ret.cacheable ? ret.fragment.cloneNode(true) : ret.fragment).childNodes;
+ }
+
+ return jQuery.merge( this, selector );
+
+ // HANDLE: $("#id")
+ } else {
+ elem = document.getElementById( match[2] );
+
+ if ( elem ) {
+ // Handle the case where IE and Opera return items
+ // by name instead of ID
+ if ( elem.id !== match[2] ) {
+ return rootjQuery.find( selector );
+ }
+
+ // Otherwise, we inject the element directly into the jQuery object
+ this.length = 1;
+ this[0] = elem;
+ }
+
+ this.context = document;
+ this.selector = selector;
+ return this;
+ }
+
+ // HANDLE: $("TAG")
+ } else if ( !context && /^\w+$/.test( selector ) ) {
+ this.selector = selector;
+ this.context = document;
+ selector = document.getElementsByTagName( selector );
+ return jQuery.merge( this, selector );
+
+ // HANDLE: $(expr, $(...))
+ } else if ( !context || context.jquery ) {
+ return (context || rootjQuery).find( selector );
+
+ // HANDLE: $(expr, context)
+ // (which is just equivalent to: $(context).find(expr)
+ } else {
+ return jQuery( context ).find( selector );
+ }
+
+ // HANDLE: $(function)
+ // Shortcut for document ready
+ } else if ( jQuery.isFunction( selector ) ) {
+ return rootjQuery.ready( selector );
+ }
+
+ if (selector.selector !== undefined) {
+ this.selector = selector.selector;
+ this.context = selector.context;
+ }
+
+ return jQuery.makeArray( selector, this );
+ },
+
+ // Start with an empty selector
+ selector: "",
+
+ // The current version of jQuery being used
+ jquery: "1.4.2",
+
+ // The default length of a jQuery object is 0
+ length: 0,
+
+ // The number of elements contained in the matched element set
+ size: function() {
+ return this.length;
+ },
+
+ toArray: function() {
+ return slice.call( this, 0 );
+ },
+
+ // Get the Nth element in the matched element set OR
+ // Get the whole matched element set as a clean array
+ get: function( num ) {
+ return num == null ?
+
+ // Return a 'clean' array
+ this.toArray() :
+
+ // Return just the object
+ ( num < 0 ? this.slice(num)[ 0 ] : this[ num ] );
+ },
+
+ // Take an array of elements and push it onto the stack
+ // (returning the new matched element set)
+ pushStack: function( elems, name, selector ) {
+ // Build a new jQuery matched element set
+ var ret = jQuery();
+
+ if ( jQuery.isArray( elems ) ) {
+ push.apply( ret, elems );
+
+ } else {
+ jQuery.merge( ret, elems );
+ }
+
+ // Add the old object onto the stack (as a reference)
+ ret.prevObject = this;
+
+ ret.context = this.context;
+
+ if ( name === "find" ) {
+ ret.selector = this.selector + (this.selector ? " " : "") + selector;
+ } else if ( name ) {
+ ret.selector = this.selector + "." + name + "(" + selector + ")";
+ }
+
+ // Return the newly-formed element set
+ return ret;
+ },
+
+ // Execute a callback for every element in the matched set.
+ // (You can seed the arguments with an array of args, but this is
+ // only used internally.)
+ each: function( callback, args ) {
+ return jQuery.each( this, callback, args );
+ },
+
+ ready: function( fn ) {
+ // Attach the listeners
+ jQuery.bindReady();
+
+ // If the DOM is already ready
+ if ( jQuery.isReady ) {
+ // Execute the function immediately
+ fn.call( document, jQuery );
+
+ // Otherwise, remember the function for later
+ } else if ( readyList ) {
+ // Add the function to the wait list
+ readyList.push( fn );
+ }
+
+ return this;
+ },
+
+ eq: function( i ) {
+ return i === -1 ?
+ this.slice( i ) :
+ this.slice( i, +i + 1 );
+ },
+
+ first: function() {
+ return this.eq( 0 );
+ },
+
+ last: function() {
+ return this.eq( -1 );
+ },
+
+ slice: function() {
+ return this.pushStack( slice.apply( this, arguments ),
+ "slice", slice.call(arguments).join(",") );
+ },
+
+ map: function( callback ) {
+ return this.pushStack( jQuery.map(this, function( elem, i ) {
+ return callback.call( elem, i, elem );
+ }));
+ },
+
+ end: function() {
+ return this.prevObject || jQuery(null);
+ },
+
+ // For internal use only.
+ // Behaves like an Array's method, not like a jQuery method.
+ push: push,
+ sort: [].sort,
+ splice: [].splice
+};
+
+// Give the init function the jQuery prototype for later instantiation
+jQuery.fn.init.prototype = jQuery.fn;
+
+jQuery.extend = jQuery.fn.extend = function() {
+ // copy reference to target object
+ var target = arguments[0] || {}, i = 1, length = arguments.length, deep = false, options, name, src, copy;
+
+ // Handle a deep copy situation
+ if ( typeof target === "boolean" ) {
+ deep = target;
+ target = arguments[1] || {};
+ // skip the boolean and the target
+ i = 2;
+ }
+
+ // Handle case when target is a string or something (possible in deep copy)
+ if ( typeof target !== "object" && !jQuery.isFunction(target) ) {
+ target = {};
+ }
+
+ // extend jQuery itself if only one argument is passed
+ if ( length === i ) {
+ target = this;
+ --i;
+ }
+
+ for ( ; i < length; i++ ) {
+ // Only deal with non-null/undefined values
+ if ( (options = arguments[ i ]) != null ) {
+ // Extend the base object
+ for ( name in options ) {
+ src = target[ name ];
+ copy = options[ name ];
+
+ // Prevent never-ending loop
+ if ( target === copy ) {
+ continue;
+ }
+
+ // Recurse if we're merging object literal values or arrays
+ if ( deep && copy && ( jQuery.isPlainObject(copy) || jQuery.isArray(copy) ) ) {
+ var clone = src && ( jQuery.isPlainObject(src) || jQuery.isArray(src) ) ? src
+ : jQuery.isArray(copy) ? [] : {};
+
+ // Never move original objects, clone them
+ target[ name ] = jQuery.extend( deep, clone, copy );
+
+ // Don't bring in undefined values
+ } else if ( copy !== undefined ) {
+ target[ name ] = copy;
+ }
+ }
+ }
+ }
+
+ // Return the modified object
+ return target;
+};
+
+jQuery.extend({
+ noConflict: function( deep ) {
+ window.$ = _$;
+
+ if ( deep ) {
+ window.jQuery = _jQuery;
+ }
+
+ return jQuery;
+ },
+
+ // Is the DOM ready to be used? Set to true once it occurs.
+ isReady: false,
+
+ // Handle when the DOM is ready
+ ready: function() {
+ // Make sure that the DOM is not already loaded
+ if ( !jQuery.isReady ) {
+ // Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).
+ if ( !document.body ) {
+ return setTimeout( jQuery.ready, 13 );
+ }
+
+ // Remember that the DOM is ready
+ jQuery.isReady = true;
+
+ // If there are functions bound, to execute
+ if ( readyList ) {
+ // Execute all of them
+ var fn, i = 0;
+ while ( (fn = readyList[ i++ ]) ) {
+ fn.call( document, jQuery );
+ }
+
+ // Reset the list of functions
+ readyList = null;
+ }
+
+ // Trigger any bound ready events
+ if ( jQuery.fn.triggerHandler ) {
+ jQuery( document ).triggerHandler( "ready" );
+ }
+ }
+ },
+
+ bindReady: function() {
+ if ( readyBound ) {
+ return;
+ }
+
+ readyBound = true;
+
+ // Catch cases where $(document).ready() is called after the
+ // browser event has already occurred.
+ if ( document.readyState === "complete" ) {
+ return jQuery.ready();
+ }
+
+ // Mozilla, Opera and webkit nightlies currently support this event
+ if ( document.addEventListener ) {
+ // Use the handy event callback
+ document.addEventListener( "DOMContentLoaded", DOMContentLoaded, false );
+
+ // A fallback to window.onload, that will always work
+ window.addEventListener( "load", jQuery.ready, false );
+
+ // If IE event model is used
+ } else if ( document.attachEvent ) {
+ // ensure firing before onload,
+ // maybe late but safe also for iframes
+ document.attachEvent("onreadystatechange", DOMContentLoaded);
+
+ // A fallback to window.onload, that will always work
+ window.attachEvent( "onload", jQuery.ready );
+
+ // If IE and not a frame
+ // continually check to see if the document is ready
+ var toplevel = false;
+
+ try {
+ toplevel = window.frameElement == null;
+ } catch(e) {}
+
+ if ( document.documentElement.doScroll && toplevel ) {
+ doScrollCheck();
+ }
+ }
+ },
+
+ // See test/unit/core.js for details concerning isFunction.
+ // Since version 1.3, DOM methods and functions like alert
+ // aren't supported. They return false on IE (#2968).
+ isFunction: function( obj ) {
+ return toString.call(obj) === "[object Function]";
+ },
+
+ isArray: function( obj ) {
+ return toString.call(obj) === "[object Array]";
+ },
+
+ isPlainObject: function( obj ) {
+ // Must be an Object.
+ // Because of IE, we also have to check the presence of the constructor property.
+ // Make sure that DOM nodes and window objects don't pass through, as well
+ if ( !obj || toString.call(obj) !== "[object Object]" || obj.nodeType || obj.setInterval ) {
+ return false;
+ }
+
+ // Not own constructor property must be Object
+ if ( obj.constructor
+ && !hasOwnProperty.call(obj, "constructor")
+ && !hasOwnProperty.call(obj.constructor.prototype, "isPrototypeOf") ) {
+ return false;
+ }
+
+ // Own properties are enumerated firstly, so to speed up,
+ // if last one is own, then all properties are own.
+
+ var key;
+ for ( key in obj ) {}
+
+ return key === undefined || hasOwnProperty.call( obj, key );
+ },
+
+ isEmptyObject: function( obj ) {
+ for ( var name in obj ) {
+ return false;
+ }
+ return true;
+ },
+
+ error: function( msg ) {
+ throw msg;
+ },
+
+ parseJSON: function( data ) {
+ if ( typeof data !== "string" || !data ) {
+ return null;
+ }
+
+ // Make sure leading/trailing whitespace is removed (IE can't handle it)
+ data = jQuery.trim( data );
+
+ // Make sure the incoming data is actual JSON
+ // Logic borrowed from http://json.org/json2.js
+ if ( /^[\],:{}\s]*$/.test(data.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, "@")
+ .replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, "]")
+ .replace(/(?:^|:|,)(?:\s*\[)+/g, "")) ) {
+
+ // Try to use the native JSON parser first
+ return window.JSON && window.JSON.parse ?
+ window.JSON.parse( data ) :
+ (new Function("return " + data))();
+
+ } else {
+ jQuery.error( "Invalid JSON: " + data );
+ }
+ },
+
+ noop: function() {},
+
+ // Evalulates a script in a global context
+ globalEval: function( data ) {
+ if ( data && rnotwhite.test(data) ) {
+ // Inspired by code by Andrea Giammarchi
+ // http://webreflection.blogspot.com/2007/08/global-scope-evaluation-and-dom.html
+ var head = document.getElementsByTagName("head")[0] || document.documentElement,
+ script = document.createElement("script");
+
+ script.type = "text/javascript";
+
+ if ( jQuery.support.scriptEval ) {
+ script.appendChild( document.createTextNode( data ) );
+ } else {
+ script.text = data;
+ }
+
+ // Use insertBefore instead of appendChild to circumvent an IE6 bug.
+ // This arises when a base node is used (#2709).
+ head.insertBefore( script, head.firstChild );
+ head.removeChild( script );
+ }
+ },
+
+ nodeName: function( elem, name ) {
+ return elem.nodeName && elem.nodeName.toUpperCase() === name.toUpperCase();
+ },
+
+ // args is for internal usage only
+ each: function( object, callback, args ) {
+ var name, i = 0,
+ length = object.length,
+ isObj = length === undefined || jQuery.isFunction(object);
+
+ if ( args ) {
+ if ( isObj ) {
+ for ( name in object ) {
+ if ( callback.apply( object[ name ], args ) === false ) {
+ break;
+ }
+ }
+ } else {
+ for ( ; i < length; ) {
+ if ( callback.apply( object[ i++ ], args ) === false ) {
+ break;
+ }
+ }
+ }
+
+ // A special, fast, case for the most common use of each
+ } else {
+ if ( isObj ) {
+ for ( name in object ) {
+ if ( callback.call( object[ name ], name, object[ name ] ) === false ) {
+ break;
+ }
+ }
+ } else {
+ for ( var value = object[0];
+ i < length && callback.call( value, i, value ) !== false; value = object[++i] ) {}
+ }
+ }
+
+ return object;
+ },
+
+ trim: function( text ) {
+ return (text || "").replace( rtrim, "" );
+ },
+
+ // results is for internal usage only
+ makeArray: function( array, results ) {
+ var ret = results || [];
+
+ if ( array != null ) {
+ // The window, strings (and functions) also have 'length'
+ // The extra typeof function check is to prevent crashes
+ // in Safari 2 (See: #3039)
+ if ( array.length == null || typeof array === "string" || jQuery.isFunction(array) || (typeof array !== "function" && array.setInterval) ) {
+ push.call( ret, array );
+ } else {
+ jQuery.merge( ret, array );
+ }
+ }
+
+ return ret;
+ },
+
+ inArray: function( elem, array ) {
+ if ( array.indexOf ) {
+ return array.indexOf( elem );
+ }
+
+ for ( var i = 0, length = array.length; i < length; i++ ) {
+ if ( array[ i ] === elem ) {
+ return i;
+ }
+ }
+
+ return -1;
+ },
+
+ merge: function( first, second ) {
+ var i = first.length, j = 0;
+
+ if ( typeof second.length === "number" ) {
+ for ( var l = second.length; j < l; j++ ) {
+ first[ i++ ] = second[ j ];
+ }
+
+ } else {
+ while ( second[j] !== undefined ) {
+ first[ i++ ] = second[ j++ ];
+ }
+ }
+
+ first.length = i;
+
+ return first;
+ },
+
+ grep: function( elems, callback, inv ) {
+ var ret = [];
+
+ // Go through the array, only saving the items
+ // that pass the validator function
+ for ( var i = 0, length = elems.length; i < length; i++ ) {
+ if ( !inv !== !callback( elems[ i ], i ) ) {
+ ret.push( elems[ i ] );
+ }
+ }
+
+ return ret;
+ },
+
+ // arg is for internal usage only
+ map: function( elems, callback, arg ) {
+ var ret = [], value;
+
+ // Go through the array, translating each of the items to their
+ // new value (or values).
+ for ( var i = 0, length = elems.length; i < length; i++ ) {
+ value = callback( elems[ i ], i, arg );
+
+ if ( value != null ) {
+ ret[ ret.length ] = value;
+ }
+ }
+
+ return ret.concat.apply( [], ret );
+ },
+
+ // A global GUID counter for objects
+ guid: 1,
+
+ proxy: function( fn, proxy, thisObject ) {
+ if ( arguments.length === 2 ) {
+ if ( typeof proxy === "string" ) {
+ thisObject = fn;
+ fn = thisObject[ proxy ];
+ proxy = undefined;
+
+ } else if ( proxy && !jQuery.isFunction( proxy ) ) {
+ thisObject = proxy;
+ proxy = undefined;
+ }
+ }
+
+ if ( !proxy && fn ) {
+ proxy = function() {
+ return fn.apply( thisObject || this, arguments );
+ };
+ }
+
+ // Set the guid of unique handler to the same of original handler, so it can be removed
+ if ( fn ) {
+ proxy.guid = fn.guid = fn.guid || proxy.guid || jQuery.guid++;
+ }
+
+ // So proxy can be declared as an argument
+ return proxy;
+ },
+
+ // Use of jQuery.browser is frowned upon.
+ // More details: http://docs.jquery.com/Utilities/jQuery.browser
+ uaMatch: function( ua ) {
+ ua = ua.toLowerCase();
+
+ var match = /(webkit)[ \/]([\w.]+)/.exec( ua ) ||
+ /(opera)(?:.*version)?[ \/]([\w.]+)/.exec( ua ) ||
+ /(msie) ([\w.]+)/.exec( ua ) ||
+ !/compatible/.test( ua ) && /(mozilla)(?:.*? rv:([\w.]+))?/.exec( ua ) ||
+ [];
+
+ return { browser: match[1] || "", version: match[2] || "0" };
+ },
+
+ browser: {}
+});
+
+browserMatch = jQuery.uaMatch( userAgent );
+if ( browserMatch.browser ) {
+ jQuery.browser[ browserMatch.browser ] = true;
+ jQuery.browser.version = browserMatch.version;
+}
+
+// Deprecated, use jQuery.browser.webkit instead
+if ( jQuery.browser.webkit ) {
+ jQuery.browser.safari = true;
+}
+
+if ( indexOf ) {
+ jQuery.inArray = function( elem, array ) {
+ return indexOf.call( array, elem );
+ };
+}
+
+// All jQuery objects should point back to these
+rootjQuery = jQuery(document);
+
+// Cleanup functions for the document ready method
+if ( document.addEventListener ) {
+ DOMContentLoaded = function() {
+ document.removeEventListener( "DOMContentLoaded", DOMContentLoaded, false );
+ jQuery.ready();
+ };
+
+} else if ( document.attachEvent ) {
+ DOMContentLoaded = function() {
+ // Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).
+ if ( document.readyState === "complete" ) {
+ document.detachEvent( "onreadystatechange", DOMContentLoaded );
+ jQuery.ready();
+ }
+ };
+}
+
+// The DOM ready check for Internet Explorer
+function doScrollCheck() {
+ if ( jQuery.isReady ) {
+ return;
+ }
+
+ try {
+ // If IE is used, use the trick by Diego Perini
+ // http://javascript.nwbox.com/IEContentLoaded/
+ document.documentElement.doScroll("left");
+ } catch( error ) {
+ setTimeout( doScrollCheck, 1 );
+ return;
+ }
+
+ // and execute any waiting functions
+ jQuery.ready();
+}
+
+function evalScript( i, elem ) {
+ if ( elem.src ) {
+ jQuery.ajax({
+ url: elem.src,
+ async: false,
+ dataType: "script"
+ });
+ } else {
+ jQuery.globalEval( elem.text || elem.textContent || elem.innerHTML || "" );
+ }
+
+ if ( elem.parentNode ) {
+ elem.parentNode.removeChild( elem );
+ }
+}
+
+// Mutifunctional method to get and set values to a collection
+// The value/s can be optionally by executed if its a function
+function access( elems, key, value, exec, fn, pass ) {
+ var length = elems.length;
+
+ // Setting many attributes
+ if ( typeof key === "object" ) {
+ for ( var k in key ) {
+ access( elems, k, key[k], exec, fn, value );
+ }
+ return elems;
+ }
+
+ // Setting one attribute
+ if ( value !== undefined ) {
+ // Optionally, function values get executed if exec is true
+ exec = !pass && exec && jQuery.isFunction(value);
+
+ for ( var i = 0; i < length; i++ ) {
+ fn( elems[i], key, exec ? value.call( elems[i], i, fn( elems[i], key ) ) : value, pass );
+ }
+
+ return elems;
+ }
+
+ // Getting an attribute
+ return length ? fn( elems[0], key ) : undefined;
+}
+
+function now() {
+ return (new Date).getTime();
+}
+(function() {
+
+ jQuery.support = {};
+
+ var root = document.documentElement,
+ script = document.createElement("script"),
+ div = document.createElement("div"),
+ id = "script" + now();
+
+ div.style.display = "none";
+ div.innerHTML = " <link/><table></table><a href='/a' style='color:red;float:left;opacity:.55;'>a</a><input type='checkbox'/>";
+
+ var all = div.getElementsByTagName("*"),
+ a = div.getElementsByTagName("a")[0];
+
+ // Can't get basic test support
+ if ( !all || !all.length || !a ) {
+ return;
+ }
+
+ jQuery.support = {
+ // IE strips leading whitespace when .innerHTML is used
+ leadingWhitespace: div.firstChild.nodeType === 3,
+
+ // Make sure that tbody elements aren't automatically inserted
+ // IE will insert them into empty tables
+ tbody: !div.getElementsByTagName("tbody").length,
+
+ // Make sure that link elements get serialized correctly by innerHTML
+ // This requires a wrapper element in IE
+ htmlSerialize: !!div.getElementsByTagName("link").length,
+
+ // Get the style information from getAttribute
+ // (IE uses .cssText insted)
+ style: /red/.test( a.getAttribute("style") ),
+
+ // Make sure that URLs aren't manipulated
+ // (IE normalizes it by default)
+ hrefNormalized: a.getAttribute("href") === "/a",
+
+ // Make sure that element opacity exists
+ // (IE uses filter instead)
+ // Use a regex to work around a WebKit issue. See #5145
+ opacity: /^0.55$/.test( a.style.opacity ),
+
+ // Verify style float existence
+ // (IE uses styleFloat instead of cssFloat)
+ cssFloat: !!a.style.cssFloat,
+
+ // Make sure that if no value is specified for a checkbox
+ // that it defaults to "on".
+ // (WebKit defaults to "" instead)
+ checkOn: div.getElementsByTagName("input")[0].value === "on",
+
+ // Make sure that a selected-by-default option has a working selected property.
+ // (WebKit defaults to false instead of true, IE too, if it's in an optgroup)
+ optSelected: document.createElement("select").appendChild( document.createElement("option") ).selected,
+
+ parentNode: div.removeChild( div.appendChild( document.createElement("div") ) ).parentNode === null,
+
+ // Will be defined later
+ deleteExpando: true,
+ checkClone: false,
+ scriptEval: false,
+ noCloneEvent: true,
+ boxModel: null
+ };
+
+ script.type = "text/javascript";
+ try {
+ script.appendChild( document.createTextNode( "window." + id + "=1;" ) );
+ } catch(e) {}
+
+ root.insertBefore( script, root.firstChild );
+
+ // Make sure that the execution of code works by injecting a script
+ // tag with appendChild/createTextNode
+ // (IE doesn't support this, fails, and uses .text instead)
+ if ( window[ id ] ) {
+ jQuery.support.scriptEval = true;
+ delete window[ id ];
+ }
+
+ // Test to see if it's possible to delete an expando from an element
+ // Fails in Internet Explorer
+ try {
+ delete script.test;
+
+ } catch(e) {
+ jQuery.support.deleteExpando = false;
+ }
+
+ root.removeChild( script );
+
+ if ( div.attachEvent && div.fireEvent ) {
+ div.attachEvent("onclick", function click() {
+ // Cloning a node shouldn't copy over any
+ // bound event handlers (IE does this)
+ jQuery.support.noCloneEvent = false;
+ div.detachEvent("onclick", click);
+ });
+ div.cloneNode(true).fireEvent("onclick");
+ }
+
+ div = document.createElement("div");
+ div.innerHTML = "<input type='radio' name='radiotest' checked='checked'/>";
+
+ var fragment = document.createDocumentFragment();
+ fragment.appendChild( div.firstChild );
+
+ // WebKit doesn't clone checked state correctly in fragments
+ jQuery.support.checkClone = fragment.cloneNode(true).cloneNode(true).lastChild.checked;
+
+ // Figure out if the W3C box model works as expected
+ // document.body must exist before we can do this
+ jQuery(function() {
+ var div = document.createElement("div");
+ div.style.width = div.style.paddingLeft = "1px";
+
+ document.body.appendChild( div );
+ jQuery.boxModel = jQuery.support.boxModel = div.offsetWidth === 2;
+ document.body.removeChild( div ).style.display = 'none';
+
+ div = null;
+ });
+
+ // Technique from Juriy Zaytsev
+ // http://thinkweb2.com/projects/prototype/detecting-event-support-without-browser-sniffing/
+ var eventSupported = function( eventName ) {
+ var el = document.createElement("div");
+ eventName = "on" + eventName;
+
+ var isSupported = (eventName in el);
+ if ( !isSupported ) {
+ el.setAttribute(eventName, "return;");
+ isSupported = typeof el[eventName] === "function";
+ }
+ el = null;
+
+ return isSupported;
+ };
+
+ jQuery.support.submitBubbles = eventSupported("submit");
+ jQuery.support.changeBubbles = eventSupported("change");
+
+ // release memory in IE
+ root = script = div = all = a = null;
+})();
+
+jQuery.props = {
+ "for": "htmlFor",
+ "class": "className",
+ readonly: "readOnly",
+ maxlength: "maxLength",
+ cellspacing: "cellSpacing",
+ rowspan: "rowSpan",
+ colspan: "colSpan",
+ tabindex: "tabIndex",
+ usemap: "useMap",
+ frameborder: "frameBorder"
+};
+var expando = "jQuery" + now(), uuid = 0, windowData = {};
+
+jQuery.extend({
+ cache: {},
+
+ expando:expando,
+
+ // The following elements throw uncatchable exceptions if you
+ // attempt to add expando properties to them.
+ noData: {
+ "embed": true,
+ "object": true,
+ "applet": true
+ },
+
+ data: function( elem, name, data ) {
+ if ( elem.nodeName && jQuery.noData[elem.nodeName.toLowerCase()] ) {
+ return;
+ }
+
+ elem = elem == window ?
+ windowData :
+ elem;
+
+ var id = elem[ expando ], cache = jQuery.cache, thisCache;
+
+ if ( !id && typeof name === "string" && data === undefined ) {
+ return null;
+ }
+
+ // Compute a unique ID for the element
+ if ( !id ) {
+ id = ++uuid;
+ }
+
+ // Avoid generating a new cache unless none exists and we
+ // want to manipulate it.
+ if ( typeof name === "object" ) {
+ elem[ expando ] = id;
+ thisCache = cache[ id ] = jQuery.extend(true, {}, name);
+
+ } else if ( !cache[ id ] ) {
+ elem[ expando ] = id;
+ cache[ id ] = {};
+ }
+
+ thisCache = cache[ id ];
+
+ // Prevent overriding the named cache with undefined values
+ if ( data !== undefined ) {
+ thisCache[ name ] = data;
+ }
+
+ return typeof name === "string" ? thisCache[ name ] : thisCache;
+ },
+
+ removeData: function( elem, name ) {
+ if ( elem.nodeName && jQuery.noData[elem.nodeName.toLowerCase()] ) {
+ return;
+ }
+
+ elem = elem == window ?
+ windowData :
+ elem;
+
+ var id = elem[ expando ], cache = jQuery.cache, thisCache = cache[ id ];
+
+ // If we want to remove a specific section of the element's data
+ if ( name ) {
+ if ( thisCache ) {
+ // Remove the section of cache data
+ delete thisCache[ name ];
+
+ // If we've removed all the data, remove the element's cache
+ if ( jQuery.isEmptyObject(thisCache) ) {
+ jQuery.removeData( elem );
+ }
+ }
+
+ // Otherwise, we want to remove all of the element's data
+ } else {
+ if ( jQuery.support.deleteExpando ) {
+ delete elem[ jQuery.expando ];
+
+ } else if ( elem.removeAttribute ) {
+ elem.removeAttribute( jQuery.expando );
+ }
+
+ // Completely remove the data cache
+ delete cache[ id ];
+ }
+ }
+});
+
+jQuery.fn.extend({
+ data: function( key, value ) {
+ if ( typeof key === "undefined" && this.length ) {
+ return jQuery.data( this[0] );
+
+ } else if ( typeof key === "object" ) {
+ return this.each(function() {
+ jQuery.data( this, key );
+ });
+ }
+
+ var parts = key.split(".");
+ parts[1] = parts[1] ? "." + parts[1] : "";
+
+ if ( value === undefined ) {
+ var data = this.triggerHandler("getData" + parts[1] + "!", [parts[0]]);
+
+ if ( data === undefined && this.length ) {
+ data = jQuery.data( this[0], key );
+ }
+ return data === undefined && parts[1] ?
+ this.data( parts[0] ) :
+ data;
+ } else {
+ return this.trigger("setData" + parts[1] + "!", [parts[0], value]).each(function() {
+ jQuery.data( this, key, value );
+ });
+ }
+ },
+
+ removeData: function( key ) {
+ return this.each(function() {
+ jQuery.removeData( this, key );
+ });
+ }
+});
+jQuery.extend({
+ queue: function( elem, type, data ) {
+ if ( !elem ) {
+ return;
+ }
+
+ type = (type || "fx") + "queue";
+ var q = jQuery.data( elem, type );
+
+ // Speed up dequeue by getting out quickly if this is just a lookup
+ if ( !data ) {
+ return q || [];
+ }
+
+ if ( !q || jQuery.isArray(data) ) {
+ q = jQuery.data( elem, type, jQuery.makeArray(data) );
+
+ } else {
+ q.push( data );
+ }
+
+ return q;
+ },
+
+ dequeue: function( elem, type ) {
+ type = type || "fx";
+
+ var queue = jQuery.queue( elem, type ), fn = queue.shift();
+
+ // If the fx queue is dequeued, always remove the progress sentinel
+ if ( fn === "inprogress" ) {
+ fn = queue.shift();
+ }
+
+ if ( fn ) {
+ // Add a progress sentinel to prevent the fx queue from being
+ // automatically dequeued
+ if ( type === "fx" ) {
+ queue.unshift("inprogress");
+ }
+
+ fn.call(elem, function() {
+ jQuery.dequeue(elem, type);
+ });
+ }
+ }
+});
+
+jQuery.fn.extend({
+ queue: function( type, data ) {
+ if ( typeof type !== "string" ) {
+ data = type;
+ type = "fx";
+ }
+
+ if ( data === undefined ) {
+ return jQuery.queue( this[0], type );
+ }
+ return this.each(function( i, elem ) {
+ var queue = jQuery.queue( this, type, data );
+
+ if ( type === "fx" && queue[0] !== "inprogress" ) {
+ jQuery.dequeue( this, type );
+ }
+ });
+ },
+ dequeue: function( type ) {
+ return this.each(function() {
+ jQuery.dequeue( this, type );
+ });
+ },
+
+ // Based off of the plugin by Clint Helfers, with permission.
+ // http://blindsignals.com/index.php/2009/07/jquery-delay/
+ delay: function( time, type ) {
+ time = jQuery.fx ? jQuery.fx.speeds[time] || time : time;
+ type = type || "fx";
+
+ return this.queue( type, function() {
+ var elem = this;
+ setTimeout(function() {
+ jQuery.dequeue( elem, type );
+ }, time );
+ });
+ },
+
+ clearQueue: function( type ) {
+ return this.queue( type || "fx", [] );
+ }
+});
+var rclass = /[\n\t]/g,
+ rspace = /\s+/,
+ rreturn = /\r/g,
+ rspecialurl = /href|src|style/,
+ rtype = /(button|input)/i,
+ rfocusable = /(button|input|object|select|textarea)/i,
+ rclickable = /^(a|area)$/i,
+ rradiocheck = /radio|checkbox/;
+
+jQuery.fn.extend({
+ attr: function( name, value ) {
+ return access( this, name, value, true, jQuery.attr );
+ },
+
+ removeAttr: function( name, fn ) {
+ return this.each(function(){
+ jQuery.attr( this, name, "" );
+ if ( this.nodeType === 1 ) {
+ this.removeAttribute( name );
+ }
+ });
+ },
+
+ addClass: function( value ) {
+ if ( jQuery.isFunction(value) ) {
+ return this.each(function(i) {
+ var self = jQuery(this);
+ self.addClass( value.call(this, i, self.attr("class")) );
+ });
+ }
+
+ if ( value && typeof value === "string" ) {
+ var classNames = (value || "").split( rspace );
+
+ for ( var i = 0, l = this.length; i < l; i++ ) {
+ var elem = this[i];
+
+ if ( elem.nodeType === 1 ) {
+ if ( !elem.className ) {
+ elem.className = value;
+
+ } else {
+ var className = " " + elem.className + " ", setClass = elem.className;
+ for ( var c = 0, cl = classNames.length; c < cl; c++ ) {
+ if ( className.indexOf( " " + classNames[c] + " " ) < 0 ) {
+ setClass += " " + classNames[c];
+ }
+ }
+ elem.className = jQuery.trim( setClass );
+ }
+ }
+ }
+ }
+
+ return this;
+ },
+
+ removeClass: function( value ) {
+ if ( jQuery.isFunction(value) ) {
+ return this.each(function(i) {
+ var self = jQuery(this);
+ self.removeClass( value.call(this, i, self.attr("class")) );
+ });
+ }
+
+ if ( (value && typeof value === "string") || value === undefined ) {
+ var classNames = (value || "").split(rspace);
+
+ for ( var i = 0, l = this.length; i < l; i++ ) {
+ var elem = this[i];
+
+ if ( elem.nodeType === 1 && elem.className ) {
+ if ( value ) {
+ var className = (" " + elem.className + " ").replace(rclass, " ");
+ for ( var c = 0, cl = classNames.length; c < cl; c++ ) {
+ className = className.replace(" " + classNames[c] + " ", " ");
+ }
+ elem.className = jQuery.trim( className );
+
+ } else {
+ elem.className = "";
+ }
+ }
+ }
+ }
+
+ return this;
+ },
+
+ toggleClass: function( value, stateVal ) {
+ var type = typeof value, isBool = typeof stateVal === "boolean";
+
+ if ( jQuery.isFunction( value ) ) {
+ return this.each(function(i) {
+ var self = jQuery(this);
+ self.toggleClass( value.call(this, i, self.attr("class"), stateVal), stateVal );
+ });
+ }
+
+ return this.each(function() {
+ if ( type === "string" ) {
+ // toggle individual class names
+ var className, i = 0, self = jQuery(this),
+ state = stateVal,
+ classNames = value.split( rspace );
+
+ while ( (className = classNames[ i++ ]) ) {
+ // check each className given, space seperated list
+ state = isBool ? state : !self.hasClass( className );
+ self[ state ? "addClass" : "removeClass" ]( className );
+ }
+
+ } else if ( type === "undefined" || type === "boolean" ) {
+ if ( this.className ) {
+ // store className if set
+ jQuery.data( this, "__className__", this.className );
+ }
+
+ // toggle whole className
+ this.className = this.className || value === false ? "" : jQuery.data( this, "__className__" ) || "";
+ }
+ });
+ },
+
+ hasClass: function( selector ) {
+ var className = " " + selector + " ";
+ for ( var i = 0, l = this.length; i < l; i++ ) {
+ if ( (" " + this[i].className + " ").replace(rclass, " ").indexOf( className ) > -1 ) {
+ return true;
+ }
+ }
+
+ return false;
+ },
+
+ val: function( value ) {
+ if ( value === undefined ) {
+ var elem = this[0];
+
+ if ( elem ) {
+ if ( jQuery.nodeName( elem, "option" ) ) {
+ return (elem.attributes.value || {}).specified ? elem.value : elem.text;
+ }
+
+ // We need to handle select boxes special
+ if ( jQuery.nodeName( elem, "select" ) ) {
+ var index = elem.selectedIndex,
+ values = [],
+ options = elem.options,
+ one = elem.type === "select-one";
+
+ // Nothing was selected
+ if ( index < 0 ) {
+ return null;
+ }
+
+ // Loop through all the selected options
+ for ( var i = one ? index : 0, max = one ? index + 1 : options.length; i < max; i++ ) {
+ var option = options[ i ];
+
+ if ( option.selected ) {
+ // Get the specifc value for the option
+ value = jQuery(option).val();
+
+ // We don't need an array for one selects
+ if ( one ) {
+ return value;
+ }
+
+ // Multi-Selects return an array
+ values.push( value );
+ }
+ }
+
+ return values;
+ }
+
+ // Handle the case where in Webkit "" is returned instead of "on" if a value isn't specified
+ if ( rradiocheck.test( elem.type ) && !jQuery.support.checkOn ) {
+ return elem.getAttribute("value") === null ? "on" : elem.value;
+ }
+
+
+ // Everything else, we just grab the value
+ return (elem.value || "").replace(rreturn, "");
+
+ }
+
+ return undefined;
+ }
+
+ var isFunction = jQuery.isFunction(value);
+
+ return this.each(function(i) {
+ var self = jQuery(this), val = value;
+
+ if ( this.nodeType !== 1 ) {
+ return;
+ }
+
+ if ( isFunction ) {
+ val = value.call(this, i, self.val());
+ }
+
+ // Typecast each time if the value is a Function and the appended
+ // value is therefore different each time.
+ if ( typeof val === "number" ) {
+ val += "";
+ }
+
+ if ( jQuery.isArray(val) && rradiocheck.test( this.type ) ) {
+ this.checked = jQuery.inArray( self.val(), val ) >= 0;
+
+ } else if ( jQuery.nodeName( this, "select" ) ) {
+ var values = jQuery.makeArray(val);
+
+ jQuery( "option", this ).each(function() {
+ this.selected = jQuery.inArray( jQuery(this).val(), values ) >= 0;
+ });
+
+ if ( !values.length ) {
+ this.selectedIndex = -1;
+ }
+
+ } else {
+ this.value = val;
+ }
+ });
+ }
+});
+
+jQuery.extend({
+ attrFn: {
+ val: true,
+ css: true,
+ html: true,
+ text: true,
+ data: true,
+ width: true,
+ height: true,
+ offset: true
+ },
+
+ attr: function( elem, name, value, pass ) {
+ // don't set attributes on text and comment nodes
+ if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 ) {
+ return undefined;
+ }
+
+ if ( pass && name in jQuery.attrFn ) {
+ return jQuery(elem)[name](value);
+ }
+
+ var notxml = elem.nodeType !== 1 || !jQuery.isXMLDoc( elem ),
+ // Whether we are setting (or getting)
+ set = value !== undefined;
+
+ // Try to normalize/fix the name
+ name = notxml && jQuery.props[ name ] || name;
+
+ // Only do all the following if this is a node (faster for style)
+ if ( elem.nodeType === 1 ) {
+ // These attributes require special treatment
+ var special = rspecialurl.test( name );
+
+ // Safari mis-reports the default selected property of an option
+ // Accessing the parent's selectedIndex property fixes it
+ if ( name === "selected" && !jQuery.support.optSelected ) {
+ var parent = elem.parentNode;
+ if ( parent ) {
+ parent.selectedIndex;
+
+ // Make sure that it also works with optgroups, see #5701
+ if ( parent.parentNode ) {
+ parent.parentNode.selectedIndex;
+ }
+ }
+ }
+
+ // If applicable, access the attribute via the DOM 0 way
+ if ( name in elem && notxml && !special ) {
+ if ( set ) {
+ // We can't allow the type property to be changed (since it causes problems in IE)
+ if ( name === "type" && rtype.test( elem.nodeName ) && elem.parentNode ) {
+ jQuery.error( "type property can't be changed" );
+ }
+
+ elem[ name ] = value;
+ }
+
+ // browsers index elements by id/name on forms, give priority to attributes.
+ if ( jQuery.nodeName( elem, "form" ) && elem.getAttributeNode(name) ) {
+ return elem.getAttributeNode( name ).nodeValue;
+ }
+
+ // elem.tabIndex doesn't always return the correct value when it hasn't been explicitly set
+ // http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/
+ if ( name === "tabIndex" ) {
+ var attributeNode = elem.getAttributeNode( "tabIndex" );
+
+ return attributeNode && attributeNode.specified ?
+ attributeNode.value :
+ rfocusable.test( elem.nodeName ) || rclickable.test( elem.nodeName ) && elem.href ?
+ 0 :
+ undefined;
+ }
+
+ return elem[ name ];
+ }
+
+ if ( !jQuery.support.style && notxml && name === "style" ) {
+ if ( set ) {
+ elem.style.cssText = "" + value;
+ }
+
+ return elem.style.cssText;
+ }
+
+ if ( set ) {
+ // convert the value to a string (all browsers do this but IE) see #1070
+ elem.setAttribute( name, "" + value );
+ }
+
+ var attr = !jQuery.support.hrefNormalized && notxml && special ?
+ // Some attributes require a special call on IE
+ elem.getAttribute( name, 2 ) :
+ elem.getAttribute( name );
+
+ // Non-existent attributes return null, we normalize to undefined
+ return attr === null ? undefined : attr;
+ }
+
+ // elem is actually elem.style ... set the style
+ // Using attr for specific style information is now deprecated. Use style instead.
+ return jQuery.style( elem, name, value );
+ }
+});
+var rnamespaces = /\.(.*)$/,
+ fcleanup = function( nm ) {
+ return nm.replace(/[^\w\s\.\|`]/g, function( ch ) {
+ return "\\" + ch;
+ });
+ };
+
+/*
+ * A number of helper functions used for managing events.
+ * Many of the ideas behind this code originated from
+ * Dean Edwards' addEvent library.
+ */
+jQuery.event = {
+
+ // Bind an event to an element
+ // Original by Dean Edwards
+ add: function( elem, types, handler, data ) {
+ if ( elem.nodeType === 3 || elem.nodeType === 8 ) {
+ return;
+ }
+
+ // For whatever reason, IE has trouble passing the window object
+ // around, causing it to be cloned in the process
+ if ( elem.setInterval && ( elem !== window && !elem.frameElement ) ) {
+ elem = window;
+ }
+
+ var handleObjIn, handleObj;
+
+ if ( handler.handler ) {
+ handleObjIn = handler;
+ handler = handleObjIn.handler;
+ }
+
+ // Make sure that the function being executed has a unique ID
+ if ( !handler.guid ) {
+ handler.guid = jQuery.guid++;
+ }
+
+ // Init the element's event structure
+ var elemData = jQuery.data( elem );
+
+ // If no elemData is found then we must be trying to bind to one of the
+ // banned noData elements
+ if ( !elemData ) {
+ return;
+ }
+
+ var events = elemData.events = elemData.events || {},
+ eventHandle = elemData.handle, eventHandle;
+
+ if ( !eventHandle ) {
+ elemData.handle = eventHandle = function() {
+ // Handle the second event of a trigger and when
+ // an event is called after a page has unloaded
+ return typeof jQuery !== "undefined" && !jQuery.event.triggered ?
+ jQuery.event.handle.apply( eventHandle.elem, arguments ) :
+ undefined;
+ };
+ }
+
+ // Add elem as a property of the handle function
+ // This is to prevent a memory leak with non-native events in IE.
+ eventHandle.elem = elem;
+
+ // Handle multiple events separated by a space
+ // jQuery(...).bind("mouseover mouseout", fn);
+ types = types.split(" ");
+
+ var type, i = 0, namespaces;
+
+ while ( (type = types[ i++ ]) ) {
+ handleObj = handleObjIn ?
+ jQuery.extend({}, handleObjIn) :
+ { handler: handler, data: data };
+
+ // Namespaced event handlers
+ if ( type.indexOf(".") > -1 ) {
+ namespaces = type.split(".");
+ type = namespaces.shift();
+ handleObj.namespace = namespaces.slice(0).sort().join(".");
+
+ } else {
+ namespaces = [];
+ handleObj.namespace = "";
+ }
+
+ handleObj.type = type;
+ handleObj.guid = handler.guid;
+
+ // Get the current list of functions bound to this event
+ var handlers = events[ type ],
+ special = jQuery.event.special[ type ] || {};
+
+ // Init the event handler queue
+ if ( !handlers ) {
+ handlers = events[ type ] = [];
+
+ // Check for a special event handler
+ // Only use addEventListener/attachEvent if the special
+ // events handler returns false
+ if ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) {
+ // Bind the global event handler to the element
+ if ( elem.addEventListener ) {
+ elem.addEventListener( type, eventHandle, false );
+
+ } else if ( elem.attachEvent ) {
+ elem.attachEvent( "on" + type, eventHandle );
+ }
+ }
+ }
+
+ if ( special.add ) {
+ special.add.call( elem, handleObj );
+
+ if ( !handleObj.handler.guid ) {
+ handleObj.handler.guid = handler.guid;
+ }
+ }
+
+ // Add the function to the element's handler list
+ handlers.push( handleObj );
+
+ // Keep track of which events have been used, for global triggering
+ jQuery.event.global[ type ] = true;
+ }
+
+ // Nullify elem to prevent memory leaks in IE
+ elem = null;
+ },
+
+ global: {},
+
+ // Detach an event or set of events from an element
+ remove: function( elem, types, handler, pos ) {
+ // don't do events on text and comment nodes
+ if ( elem.nodeType === 3 || elem.nodeType === 8 ) {
+ return;
+ }
+
+ var ret, type, fn, i = 0, all, namespaces, namespace, special, eventType, handleObj, origType,
+ elemData = jQuery.data( elem ),
+ events = elemData && elemData.events;
+
+ if ( !elemData || !events ) {
+ return;
+ }
+
+ // types is actually an event object here
+ if ( types && types.type ) {
+ handler = types.handler;
+ types = types.type;
+ }
+
+ // Unbind all events for the element
+ if ( !types || typeof types === "string" && types.charAt(0) === "." ) {
+ types = types || "";
+
+ for ( type in events ) {
+ jQuery.event.remove( elem, type + types );
+ }
+
+ return;
+ }
+
+ // Handle multiple events separated by a space
+ // jQuery(...).unbind("mouseover mouseout", fn);
+ types = types.split(" ");
+
+ while ( (type = types[ i++ ]) ) {
+ origType = type;
+ handleObj = null;
+ all = type.indexOf(".") < 0;
+ namespaces = [];
+
+ if ( !all ) {
+ // Namespaced event handlers
+ namespaces = type.split(".");
+ type = namespaces.shift();
+
+ namespace = new RegExp("(^|\\.)" +
+ jQuery.map( namespaces.slice(0).sort(), fcleanup ).join("\\.(?:.*\\.)?") + "(\\.|$)")
+ }
+
+ eventType = events[ type ];
+
+ if ( !eventType ) {
+ continue;
+ }
+
+ if ( !handler ) {
+ for ( var j = 0; j < eventType.length; j++ ) {
+ handleObj = eventType[ j ];
+
+ if ( all || namespace.test( handleObj.namespace ) ) {
+ jQuery.event.remove( elem, origType, handleObj.handler, j );
+ eventType.splice( j--, 1 );
+ }
+ }
+
+ continue;
+ }
+
+ special = jQuery.event.special[ type ] || {};
+
+ for ( var j = pos || 0; j < eventType.length; j++ ) {
+ handleObj = eventType[ j ];
+
+ if ( handler.guid === handleObj.guid ) {
+ // remove the given handler for the given type
+ if ( all || namespace.test( handleObj.namespace ) ) {
+ if ( pos == null ) {
+ eventType.splice( j--, 1 );
+ }
+
+ if ( special.remove ) {
+ special.remove.call( elem, handleObj );
+ }
+ }
+
+ if ( pos != null ) {
+ break;
+ }
+ }
+ }
+
+ // remove generic event handler if no more handlers exist
+ if ( eventType.length === 0 || pos != null && eventType.length === 1 ) {
+ if ( !special.teardown || special.teardown.call( elem, namespaces ) === false ) {
+ removeEvent( elem, type, elemData.handle );
+ }
+
+ ret = null;
+ delete events[ type ];
+ }
+ }
+
+ // Remove the expando if it's no longer used
+ if ( jQuery.isEmptyObject( events ) ) {
+ var handle = elemData.handle;
+ if ( handle ) {
+ handle.elem = null;
+ }
+
+ delete elemData.events;
+ delete elemData.handle;
+
+ if ( jQuery.isEmptyObject( elemData ) ) {
+ jQuery.removeData( elem );
+ }
+ }
+ },
+
+ // bubbling is internal
+ trigger: function( event, data, elem /*, bubbling */ ) {
+ // Event object or event type
+ var type = event.type || event,
+ bubbling = arguments[3];
+
+ if ( !bubbling ) {
+ event = typeof event === "object" ?
+ // jQuery.Event object
+ event[expando] ? event :
+ // Object literal
+ jQuery.extend( jQuery.Event(type), event ) :
+ // Just the event type (string)
+ jQuery.Event(type);
+
+ if ( type.indexOf("!") >= 0 ) {
+ event.type = type = type.slice(0, -1);
+ event.exclusive = true;
+ }
+
+ // Handle a global trigger
+ if ( !elem ) {
+ // Don't bubble custom events when global (to avoid too much overhead)
+ event.stopPropagation();
+
+ // Only trigger if we've ever bound an event for it
+ if ( jQuery.event.global[ type ] ) {
+ jQuery.each( jQuery.cache, function() {
+ if ( this.events && this.events[type] ) {
+ jQuery.event.trigger( event, data, this.handle.elem );
+ }
+ });
+ }
+ }
+
+ // Handle triggering a single element
+
+ // don't do events on text and comment nodes
+ if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 ) {
+ return undefined;
+ }
+
+ // Clean up in case it is reused
+ event.result = undefined;
+ event.target = elem;
+
+ // Clone the incoming data, if any
+ data = jQuery.makeArray( data );
+ data.unshift( event );
+ }
+
+ event.currentTarget = elem;
+
+ // Trigger the event, it is assumed that "handle" is a function
+ var handle = jQuery.data( elem, "handle" );
+ if ( handle ) {
+ handle.apply( elem, data );
+ }
+
+ var parent = elem.parentNode || elem.ownerDocument;
+
+ // Trigger an inline bound script
+ try {
+ if ( !(elem && elem.nodeName && jQuery.noData[elem.nodeName.toLowerCase()]) ) {
+ if ( elem[ "on" + type ] && elem[ "on" + type ].apply( elem, data ) === false ) {
+ event.result = false;
+ }
+ }
+
+ // prevent IE from throwing an error for some elements with some event types, see #3533
+ } catch (e) {}
+
+ if ( !event.isPropagationStopped() && parent ) {
+ jQuery.event.trigger( event, data, parent, true );
+
+ } else if ( !event.isDefaultPrevented() ) {
+ var target = event.target, old,
+ isClick = jQuery.nodeName(target, "a") && type === "click",
+ special = jQuery.event.special[ type ] || {};
+
+ if ( (!special._default || special._default.call( elem, event ) === false) &&
+ !isClick && !(target && target.nodeName && jQuery.noData[target.nodeName.toLowerCase()]) ) {
+
+ try {
+ if ( target[ type ] ) {
+ // Make sure that we don't accidentally re-trigger the onFOO events
+ old = target[ "on" + type ];
+
+ if ( old ) {
+ target[ "on" + type ] = null;
+ }
+
+ jQuery.event.triggered = true;
+ target[ type ]();
+ }
+
+ // prevent IE from throwing an error for some elements with some event types, see #3533
+ } catch (e) {}
+
+ if ( old ) {
+ target[ "on" + type ] = old;
+ }
+
+ jQuery.event.triggered = false;
+ }
+ }
+ },
+
+ handle: function( event ) {
+ var all, handlers, namespaces, namespace, events;
+
+ event = arguments[0] = jQuery.event.fix( event || window.event );
+ event.currentTarget = this;
+
+ // Namespaced event handlers
+ all = event.type.indexOf(".") < 0 && !event.exclusive;
+
+ if ( !all ) {
+ namespaces = event.type.split(".");
+ event.type = namespaces.shift();
+ namespace = new RegExp("(^|\\.)" + namespaces.slice(0).sort().join("\\.(?:.*\\.)?") + "(\\.|$)");
+ }
+
+ var events = jQuery.data(this, "events"), handlers = events[ event.type ];
+
+ if ( events && handlers ) {
+ // Clone the handlers to prevent manipulation
+ handlers = handlers.slice(0);
+
+ for ( var j = 0, l = handlers.length; j < l; j++ ) {
+ var handleObj = handlers[ j ];
+
+ // Filter the functions by class
+ if ( all || namespace.test( handleObj.namespace ) ) {
+ // Pass in a reference to the handler function itself
+ // So that we can later remove it
+ event.handler = handleObj.handler;
+ event.data = handleObj.data;
+ event.handleObj = handleObj;
+
+ var ret = handleObj.handler.apply( this, arguments );
+
+ if ( ret !== undefined ) {
+ event.result = ret;
+ if ( ret === false ) {
+ event.preventDefault();
+ event.stopPropagation();
+ }
+ }
+
+ if ( event.isImmediatePropagationStopped() ) {
+ break;
+ }
+ }
+ }
+ }
+
+ return event.result;
+ },
+
+ props: "altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode layerX layerY metaKey newValue offsetX offsetY originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),
+
+ fix: function( event ) {
+ if ( event[ expando ] ) {
+ return event;
+ }
+
+ // store a copy of the original event object
+ // and "clone" to set read-only properties
+ var originalEvent = event;
+ event = jQuery.Event( originalEvent );
+
+ for ( var i = this.props.length, prop; i; ) {
+ prop = this.props[ --i ];
+ event[ prop ] = originalEvent[ prop ];
+ }
+
+ // Fix target property, if necessary
+ if ( !event.target ) {
+ event.target = event.srcElement || document; // Fixes #1925 where srcElement might not be defined either
+ }
+
+ // check if target is a textnode (safari)
+ if ( event.target.nodeType === 3 ) {
+ event.target = event.target.parentNode;
+ }
+
+ // Add relatedTarget, if necessary
+ if ( !event.relatedTarget && event.fromElement ) {
+ event.relatedTarget = event.fromElement === event.target ? event.toElement : event.fromElement;
+ }
+
+ // Calculate pageX/Y if missing and clientX/Y available
+ if ( event.pageX == null && event.clientX != null ) {
+ var doc = document.documentElement, body = document.body;
+ event.pageX = event.clientX + (doc && doc.scrollLeft || body && body.scrollLeft || 0) - (doc && doc.clientLeft || body && body.clientLeft || 0);
+ event.pageY = event.clientY + (doc && doc.scrollTop || body && body.scrollTop || 0) - (doc && doc.clientTop || body && body.clientTop || 0);
+ }
+
+ // Add which for key events
+ if ( !event.which && ((event.charCode || event.charCode === 0) ? event.charCode : event.keyCode) ) {
+ event.which = event.charCode || event.keyCode;
+ }
+
+ // Add metaKey to non-Mac browsers (use ctrl for PC's and Meta for Macs)
+ if ( !event.metaKey && event.ctrlKey ) {
+ event.metaKey = event.ctrlKey;
+ }
+
+ // Add which for click: 1 === left; 2 === middle; 3 === right
+ // Note: button is not normalized, so don't use it
+ if ( !event.which && event.button !== undefined ) {
+ event.which = (event.button & 1 ? 1 : ( event.button & 2 ? 3 : ( event.button & 4 ? 2 : 0 ) ));
+ }
+
+ return event;
+ },
+
+ // Deprecated, use jQuery.guid instead
+ guid: 1E8,
+
+ // Deprecated, use jQuery.proxy instead
+ proxy: jQuery.proxy,
+
+ special: {
+ ready: {
+ // Make sure the ready event is setup
+ setup: jQuery.bindReady,
+ teardown: jQuery.noop
+ },
+
+ live: {
+ add: function( handleObj ) {
+ jQuery.event.add( this, handleObj.origType, jQuery.extend({}, handleObj, {handler: liveHandler}) );
+ },
+
+ remove: function( handleObj ) {
+ var remove = true,
+ type = handleObj.origType.replace(rnamespaces, "");
+
+ jQuery.each( jQuery.data(this, "events").live || [], function() {
+ if ( type === this.origType.replace(rnamespaces, "") ) {
+ remove = false;
+ return false;
+ }
+ });
+
+ if ( remove ) {
+ jQuery.event.remove( this, handleObj.origType, liveHandler );
+ }
+ }
+
+ },
+
+ beforeunload: {
+ setup: function( data, namespaces, eventHandle ) {
+ // We only want to do this special case on windows
+ if ( this.setInterval ) {
+ this.onbeforeunload = eventHandle;
+ }
+
+ return false;
+ },
+ teardown: function( namespaces, eventHandle ) {
+ if ( this.onbeforeunload === eventHandle ) {
+ this.onbeforeunload = null;
+ }
+ }
+ }
+ }
+};
+
+var removeEvent = document.removeEventListener ?
+ function( elem, type, handle ) {
+ elem.removeEventListener( type, handle, false );
+ } :
+ function( elem, type, handle ) {
+ elem.detachEvent( "on" + type, handle );
+ };
+
+jQuery.Event = function( src ) {
+ // Allow instantiation without the 'new' keyword
+ if ( !this.preventDefault ) {
+ return new jQuery.Event( src );
+ }
+
+ // Event object
+ if ( src && src.type ) {
+ this.originalEvent = src;
+ this.type = src.type;
+ // Event type
+ } else {
+ this.type = src;
+ }
+
+ // timeStamp is buggy for some events on Firefox(#3843)
+ // So we won't rely on the native value
+ this.timeStamp = now();
+
+ // Mark it as fixed
+ this[ expando ] = true;
+};
+
+function returnFalse() {
+ return false;
+}
+function returnTrue() {
+ return true;
+}
+
+// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding
+// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html
+jQuery.Event.prototype = {
+ preventDefault: function() {
+ this.isDefaultPrevented = returnTrue;
+
+ var e = this.originalEvent;
+ if ( !e ) {
+ return;
+ }
+
+ // if preventDefault exists run it on the original event
+ if ( e.preventDefault ) {
+ e.preventDefault();
+ }
+ // otherwise set the returnValue property of the original event to false (IE)
+ e.returnValue = false;
+ },
+ stopPropagation: function() {
+ this.isPropagationStopped = returnTrue;
+
+ var e = this.originalEvent;
+ if ( !e ) {
+ return;
+ }
+ // if stopPropagation exists run it on the original event
+ if ( e.stopPropagation ) {
+ e.stopPropagation();
+ }
+ // otherwise set the cancelBubble property of the original event to true (IE)
+ e.cancelBubble = true;
+ },
+ stopImmediatePropagation: function() {
+ this.isImmediatePropagationStopped = returnTrue;
+ this.stopPropagation();
+ },
+ isDefaultPrevented: returnFalse,
+ isPropagationStopped: returnFalse,
+ isImmediatePropagationStopped: returnFalse
+};
+
+// Checks if an event happened on an element within another element
+// Used in jQuery.event.special.mouseenter and mouseleave handlers
+var withinElement = function( event ) {
+ // Check if mouse(over|out) are still within the same parent element
+ var parent = event.relatedTarget;
+
+ // Firefox sometimes assigns relatedTarget a XUL element
+ // which we cannot access the parentNode property of
+ try {
+ // Traverse up the tree
+ while ( parent && parent !== this ) {
+ parent = parent.parentNode;
+ }
+
+ if ( parent !== this ) {
+ // set the correct event type
+ event.type = event.data;
+
+ // handle event if we actually just moused on to a non sub-element
+ jQuery.event.handle.apply( this, arguments );
+ }
+
+ // assuming we've left the element since we most likely mousedover a xul element
+ } catch(e) { }
+},
+
+// In case of event delegation, we only need to rename the event.type,
+// liveHandler will take care of the rest.
+delegate = function( event ) {
+ event.type = event.data;
+ jQuery.event.handle.apply( this, arguments );
+};
+
+// Create mouseenter and mouseleave events
+jQuery.each({
+ mouseenter: "mouseover",
+ mouseleave: "mouseout"
+}, function( orig, fix ) {
+ jQuery.event.special[ orig ] = {
+ setup: function( data ) {
+ jQuery.event.add( this, fix, data && data.selector ? delegate : withinElement, orig );
+ },
+ teardown: function( data ) {
+ jQuery.event.remove( this, fix, data && data.selector ? delegate : withinElement );
+ }
+ };
+});
+
+// submit delegation
+if ( !jQuery.support.submitBubbles ) {
+
+ jQuery.event.special.submit = {
+ setup: function( data, namespaces ) {
+ if ( this.nodeName.toLowerCase() !== "form" ) {
+ jQuery.event.add(this, "click.specialSubmit", function( e ) {
+ var elem = e.target, type = elem.type;
+
+ if ( (type === "submit" || type === "image") && jQuery( elem ).closest("form").length ) {
+ return trigger( "submit", this, arguments );
+ }
+ });
+
+ jQuery.event.add(this, "keypress.specialSubmit", function( e ) {
+ var elem = e.target, type = elem.type;
+
+ if ( (type === "text" || type === "password") && jQuery( elem ).closest("form").length && e.keyCode === 13 ) {
+ return trigger( "submit", this, arguments );
+ }
+ });
+
+ } else {
+ return false;
+ }
+ },
+
+ teardown: function( namespaces ) {
+ jQuery.event.remove( this, ".specialSubmit" );
+ }
+ };
+
+}
+
+// change delegation, happens here so we have bind.
+if ( !jQuery.support.changeBubbles ) {
+
+ var formElems = /textarea|input|select/i,
+
+ changeFilters,
+
+ getVal = function( elem ) {
+ var type = elem.type, val = elem.value;
+
+ if ( type === "radio" || type === "checkbox" ) {
+ val = elem.checked;
+
+ } else if ( type === "select-multiple" ) {
+ val = elem.selectedIndex > -1 ?
+ jQuery.map( elem.options, function( elem ) {
+ return elem.selected;
+ }).join("-") :
+ "";
+
+ } else if ( elem.nodeName.toLowerCase() === "select" ) {
+ val = elem.selectedIndex;
+ }
+
+ return val;
+ },
+
+ testChange = function testChange( e ) {
+ var elem = e.target, data, val;
+
+ if ( !formElems.test( elem.nodeName ) || elem.readOnly ) {
+ return;
+ }
+
+ data = jQuery.data( elem, "_change_data" );
+ val = getVal(elem);
+
+ // the current data will be also retrieved by beforeactivate
+ if ( e.type !== "focusout" || elem.type !== "radio" ) {
+ jQuery.data( elem, "_change_data", val );
+ }
+
+ if ( data === undefined || val === data ) {
+ return;
+ }
+
+ if ( data != null || val ) {
+ e.type = "change";
+ return jQuery.event.trigger( e, arguments[1], elem );
+ }
+ };
+
+ jQuery.event.special.change = {
+ filters: {
+ focusout: testChange,
+
+ click: function( e ) {
+ var elem = e.target, type = elem.type;
+
+ if ( type === "radio" || type === "checkbox" || elem.nodeName.toLowerCase() === "select" ) {
+ return testChange.call( this, e );
+ }
+ },
+
+ // Change has to be called before submit
+ // Keydown will be called before keypress, which is used in submit-event delegation
+ keydown: function( e ) {
+ var elem = e.target, type = elem.type;
+
+ if ( (e.keyCode === 13 && elem.nodeName.toLowerCase() !== "textarea") ||
+ (e.keyCode === 32 && (type === "checkbox" || type === "radio")) ||
+ type === "select-multiple" ) {
+ return testChange.call( this, e );
+ }
+ },
+
+ // Beforeactivate happens also before the previous element is blurred
+ // with this event you can't trigger a change event, but you can store
+ // information/focus[in] is not needed anymore
+ beforeactivate: function( e ) {
+ var elem = e.target;
+ jQuery.data( elem, "_change_data", getVal(elem) );
+ }
+ },
+
+ setup: function( data, namespaces ) {
+ if ( this.type === "file" ) {
+ return false;
+ }
+
+ for ( var type in changeFilters ) {
+ jQuery.event.add( this, type + ".specialChange", changeFilters[type] );
+ }
+
+ return formElems.test( this.nodeName );
+ },
+
+ teardown: function( namespaces ) {
+ jQuery.event.remove( this, ".specialChange" );
+
+ return formElems.test( this.nodeName );
+ }
+ };
+
+ changeFilters = jQuery.event.special.change.filters;
+}
+
+function trigger( type, elem, args ) {
+ args[0].type = type;
+ return jQuery.event.handle.apply( elem, args );
+}
+
+// Create "bubbling" focus and blur events
+if ( document.addEventListener ) {
+ jQuery.each({ focus: "focusin", blur: "focusout" }, function( orig, fix ) {
+ jQuery.event.special[ fix ] = {
+ setup: function() {
+ this.addEventListener( orig, handler, true );
+ },
+ teardown: function() {
+ this.removeEventListener( orig, handler, true );
+ }
+ };
+
+ function handler( e ) {
+ e = jQuery.event.fix( e );
+ e.type = fix;
+ return jQuery.event.handle.call( this, e );
+ }
+ });
+}
+
+jQuery.each(["bind", "one"], function( i, name ) {
+ jQuery.fn[ name ] = function( type, data, fn ) {
+ // Handle object literals
+ if ( typeof type === "object" ) {
+ for ( var key in type ) {
+ this[ name ](key, data, type[key], fn);
+ }
+ return this;
+ }
+
+ if ( jQuery.isFunction( data ) ) {
+ fn = data;
+ data = undefined;
+ }
+
+ var handler = name === "one" ? jQuery.proxy( fn, function( event ) {
+ jQuery( this ).unbind( event, handler );
+ return fn.apply( this, arguments );
+ }) : fn;
+
+ if ( type === "unload" && name !== "one" ) {
+ this.one( type, data, fn );
+
+ } else {
+ for ( var i = 0, l = this.length; i < l; i++ ) {
+ jQuery.event.add( this[i], type, handler, data );
+ }
+ }
+
+ return this;
+ };
+});
+
+jQuery.fn.extend({
+ unbind: function( type, fn ) {
+ // Handle object literals
+ if ( typeof type === "object" && !type.preventDefault ) {
+ for ( var key in type ) {
+ this.unbind(key, type[key]);
+ }
+
+ } else {
+ for ( var i = 0, l = this.length; i < l; i++ ) {
+ jQuery.event.remove( this[i], type, fn );
+ }
+ }
+
+ return this;
+ },
+
+ delegate: function( selector, types, data, fn ) {
+ return this.live( types, data, fn, selector );
+ },
+
+ undelegate: function( selector, types, fn ) {
+ if ( arguments.length === 0 ) {
+ return this.unbind( "live" );
+
+ } else {
+ return this.die( types, null, fn, selector );
+ }
+ },
+
+ trigger: function( type, data ) {
+ return this.each(function() {
+ jQuery.event.trigger( type, data, this );
+ });
+ },
+
+ triggerHandler: function( type, data ) {
+ if ( this[0] ) {
+ var event = jQuery.Event( type );
+ event.preventDefault();
+ event.stopPropagation();
+ jQuery.event.trigger( event, data, this[0] );
+ return event.result;
+ }
+ },
+
+ toggle: function( fn ) {
+ // Save reference to arguments for access in closure
+ var args = arguments, i = 1;
+
+ // link all the functions, so any of them can unbind this click handler
+ while ( i < args.length ) {
+ jQuery.proxy( fn, args[ i++ ] );
+ }
+
+ return this.click( jQuery.proxy( fn, function( event ) {
+ // Figure out which function to execute
+ var lastToggle = ( jQuery.data( this, "lastToggle" + fn.guid ) || 0 ) % i;
+ jQuery.data( this, "lastToggle" + fn.guid, lastToggle + 1 );
+
+ // Make sure that clicks stop
+ event.preventDefault();
+
+ // and execute the function
+ return args[ lastToggle ].apply( this, arguments ) || false;
+ }));
+ },
+
+ hover: function( fnOver, fnOut ) {
+ return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );
+ }
+});
+
+var liveMap = {
+ focus: "focusin",
+ blur: "focusout",
+ mouseenter: "mouseover",
+ mouseleave: "mouseout"
+};
+
+jQuery.each(["live", "die"], function( i, name ) {
+ jQuery.fn[ name ] = function( types, data, fn, origSelector /* Internal Use Only */ ) {
+ var type, i = 0, match, namespaces, preType,
+ selector = origSelector || this.selector,
+ context = origSelector ? this : jQuery( this.context );
+
+ if ( jQuery.isFunction( data ) ) {
+ fn = data;
+ data = undefined;
+ }
+
+ types = (types || "").split(" ");
+
+ while ( (type = types[ i++ ]) != null ) {
+ match = rnamespaces.exec( type );
+ namespaces = "";
+
+ if ( match ) {
+ namespaces = match[0];
+ type = type.replace( rnamespaces, "" );
+ }
+
+ if ( type === "hover" ) {
+ types.push( "mouseenter" + namespaces, "mouseleave" + namespaces );
+ continue;
+ }
+
+ preType = type;
+
+ if ( type === "focus" || type === "blur" ) {
+ types.push( liveMap[ type ] + namespaces );
+ type = type + namespaces;
+
+ } else {
+ type = (liveMap[ type ] || type) + namespaces;
+ }
+
+ if ( name === "live" ) {
+ // bind live handler
+ context.each(function(){
+ jQuery.event.add( this, liveConvert( type, selector ),
+ { data: data, selector: selector, handler: fn, origType: type, origHandler: fn, preType: preType } );
+ });
+
+ } else {
+ // unbind live handler
+ context.unbind( liveConvert( type, selector ), fn );
+ }
+ }
+
+ return this;
+ }
+});
+
+function liveHandler( event ) {
+ var stop, elems = [], selectors = [], args = arguments,
+ related, match, handleObj, elem, j, i, l, data,
+ events = jQuery.data( this, "events" );
+
+ // Make sure we avoid non-left-click bubbling in Firefox (#3861)
+ if ( event.liveFired === this || !events || !events.live || event.button && event.type === "click" ) {
+ return;
+ }
+
+ event.liveFired = this;
+
+ var live = events.live.slice(0);
+
+ for ( j = 0; j < live.length; j++ ) {
+ handleObj = live[j];
+
+ if ( handleObj.origType.replace( rnamespaces, "" ) === event.type ) {
+ selectors.push( handleObj.selector );
+
+ } else {
+ live.splice( j--, 1 );
+ }
+ }
+
+ match = jQuery( event.target ).closest( selectors, event.currentTarget );
+
+ for ( i = 0, l = match.length; i < l; i++ ) {
+ for ( j = 0; j < live.length; j++ ) {
+ handleObj = live[j];
+
+ if ( match[i].selector === handleObj.selector ) {
+ elem = match[i].elem;
+ related = null;
+
+ // Those two events require additional checking
+ if ( handleObj.preType === "mouseenter" || handleObj.preType === "mouseleave" ) {
+ related = jQuery( event.relatedTarget ).closest( handleObj.selector )[0];
+ }
+
+ if ( !related || related !== elem ) {
+ elems.push({ elem: elem, handleObj: handleObj });
+ }
+ }
+ }
+ }
+
+ for ( i = 0, l = elems.length; i < l; i++ ) {
+ match = elems[i];
+ event.currentTarget = match.elem;
+ event.data = match.handleObj.data;
+ event.handleObj = match.handleObj;
+
+ if ( match.handleObj.origHandler.apply( match.elem, args ) === false ) {
+ stop = false;
+ break;
+ }
+ }
+
+ return stop;
+}
+
+function liveConvert( type, selector ) {
+ return "live." + (type && type !== "*" ? type + "." : "") + selector.replace(/\./g, "`").replace(/ /g, "&");
+}
+
+jQuery.each( ("blur focus focusin focusout load resize scroll unload click dblclick " +
+ "mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " +
+ "change select submit keydown keypress keyup error").split(" "), function( i, name ) {
+
+ // Handle event binding
+ jQuery.fn[ name ] = function( fn ) {
+ return fn ? this.bind( name, fn ) : this.trigger( name );
+ };
+
+ if ( jQuery.attrFn ) {
+ jQuery.attrFn[ name ] = true;
+ }
+});
+
+// Prevent memory leaks in IE
+// Window isn't included so as not to unbind existing unload events
+// More info:
+// - http://isaacschlueter.com/2006/10/msie-memory-leaks/
+if ( window.attachEvent && !window.addEventListener ) {
+ window.attachEvent("onunload", function() {
+ for ( var id in jQuery.cache ) {
+ if ( jQuery.cache[ id ].handle ) {
+ // Try/Catch is to handle iframes being unloaded, see #4280
+ try {
+ jQuery.event.remove( jQuery.cache[ id ].handle.elem );
+ } catch(e) {}
+ }
+ }
+ });
+}
+/*!
+ * Sizzle CSS Selector Engine - v1.0
+ * Copyright 2009, The Dojo Foundation
+ * Released under the MIT, BSD, and GPL Licenses.
+ * More information: http://sizzlejs.com/
+ */
+(function(){
+
+var chunker = /((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,
+ done = 0,
+ toString = Object.prototype.toString,
+ hasDuplicate = false,
+ baseHasDuplicate = true;
+
+// Here we check if the JavaScript engine is using some sort of
+// optimization where it does not always call our comparision
+// function. If that is the case, discard the hasDuplicate value.
+// Thus far that includes Google Chrome.
+[0, 0].sort(function(){
+ baseHasDuplicate = false;
+ return 0;
+});
+
+var Sizzle = function(selector, context, results, seed) {
+ results = results || [];
+ var origContext = context = context || document;
+
+ if ( context.nodeType !== 1 && context.nodeType !== 9 ) {
+ return [];
+ }
+
+ if ( !selector || typeof selector !== "string" ) {
+ return results;
+ }
+
+ var parts = [], m, set, checkSet, extra, prune = true, contextXML = isXML(context),
+ soFar = selector;
+
+ // Reset the position of the chunker regexp (start from head)
+ while ( (chunker.exec(""), m = chunker.exec(soFar)) !== null ) {
+ soFar = m[3];
+
+ parts.push( m[1] );
+
+ if ( m[2] ) {
+ extra = m[3];
+ break;
+ }
+ }
+
+ if ( parts.length > 1 && origPOS.exec( selector ) ) {
+ if ( parts.length === 2 && Expr.relative[ parts[0] ] ) {
+ set = posProcess( parts[0] + parts[1], context );
+ } else {
+ set = Expr.relative[ parts[0] ] ?
+ [ context ] :
+ Sizzle( parts.shift(), context );
+
+ while ( parts.length ) {
+ selector = parts.shift();
+
+ if ( Expr.relative[ selector ] ) {
+ selector += parts.shift();
+ }
+
+ set = posProcess( selector, set );
+ }
+ }
+ } else {
+ // Take a shortcut and set the context if the root selector is an ID
+ // (but not if it'll be faster if the inner selector is an ID)
+ if ( !seed && parts.length > 1 && context.nodeType === 9 && !contextXML &&
+ Expr.match.ID.test(parts[0]) && !Expr.match.ID.test(parts[parts.length - 1]) ) {
+ var ret = Sizzle.find( parts.shift(), context, contextXML );
+ context = ret.expr ? Sizzle.filter( ret.expr, ret.set )[0] : ret.set[0];
+ }
+
+ if ( context ) {
+ var ret = seed ?
+ { expr: parts.pop(), set: makeArray(seed) } :
+ Sizzle.find( parts.pop(), parts.length === 1 && (parts[0] === "~" || parts[0] === "+") && context.parentNode ? context.parentNode : context, contextXML );
+ set = ret.expr ? Sizzle.filter( ret.expr, ret.set ) : ret.set;
+
+ if ( parts.length > 0 ) {
+ checkSet = makeArray(set);
+ } else {
+ prune = false;
+ }
+
+ while ( parts.length ) {
+ var cur = parts.pop(), pop = cur;
+
+ if ( !Expr.relative[ cur ] ) {
+ cur = "";
+ } else {
+ pop = parts.pop();
+ }
+
+ if ( pop == null ) {
+ pop = context;
+ }
+
+ Expr.relative[ cur ]( checkSet, pop, contextXML );
+ }
+ } else {
+ checkSet = parts = [];
+ }
+ }
+
+ if ( !checkSet ) {
+ checkSet = set;
+ }
+
+ if ( !checkSet ) {
+ Sizzle.error( cur || selector );
+ }
+
+ if ( toString.call(checkSet) === "[object Array]" ) {
+ if ( !prune ) {
+ results.push.apply( results, checkSet );
+ } else if ( context && context.nodeType === 1 ) {
+ for ( var i = 0; checkSet[i] != null; i++ ) {
+ if ( checkSet[i] && (checkSet[i] === true || checkSet[i].nodeType === 1 && contains(context, checkSet[i])) ) {
+ results.push( set[i] );
+ }
+ }
+ } else {
+ for ( var i = 0; checkSet[i] != null; i++ ) {
+ if ( checkSet[i] && checkSet[i].nodeType === 1 ) {
+ results.push( set[i] );
+ }
+ }
+ }
+ } else {
+ makeArray( checkSet, results );
+ }
+
+ if ( extra ) {
+ Sizzle( extra, origContext, results, seed );
+ Sizzle.uniqueSort( results );
+ }
+
+ return results;
+};
+
+Sizzle.uniqueSort = function(results){
+ if ( sortOrder ) {
+ hasDuplicate = baseHasDuplicate;
+ results.sort(sortOrder);
+
+ if ( hasDuplicate ) {
+ for ( var i = 1; i < results.length; i++ ) {
+ if ( results[i] === results[i-1] ) {
+ results.splice(i--, 1);
+ }
+ }
+ }
+ }
+
+ return results;
+};
+
+Sizzle.matches = function(expr, set){
+ return Sizzle(expr, null, null, set);
+};
+
+Sizzle.find = function(expr, context, isXML){
+ var set, match;
+
+ if ( !expr ) {
+ return [];
+ }
+
+ for ( var i = 0, l = Expr.order.length; i < l; i++ ) {
+ var type = Expr.order[i], match;
+
+ if ( (match = Expr.leftMatch[ type ].exec( expr )) ) {
+ var left = match[1];
+ match.splice(1,1);
+
+ if ( left.substr( left.length - 1 ) !== "\\" ) {
+ match[1] = (match[1] || "").replace(/\\/g, "");
+ set = Expr.find[ type ]( match, context, isXML );
+ if ( set != null ) {
+ expr = expr.replace( Expr.match[ type ], "" );
+ break;
+ }
+ }
+ }
+ }
+
+ if ( !set ) {
+ set = context.getElementsByTagName("*");
+ }
+
+ return {set: set, expr: expr};
+};
+
+Sizzle.filter = function(expr, set, inplace, not){
+ var old = expr, result = [], curLoop = set, match, anyFound,
+ isXMLFilter = set && set[0] && isXML(set[0]);
+
+ while ( expr && set.length ) {
+ for ( var type in Expr.filter ) {
+ if ( (match = Expr.leftMatch[ type ].exec( expr )) != null && match[2] ) {
+ var filter = Expr.filter[ type ], found, item, left = match[1];
+ anyFound = false;
+
+ match.splice(1,1);
+
+ if ( left.substr( left.length - 1 ) === "\\" ) {
+ continue;
+ }
+
+ if ( curLoop === result ) {
+ result = [];
+ }
+
+ if ( Expr.preFilter[ type ] ) {
+ match = Expr.preFilter[ type ]( match, curLoop, inplace, result, not, isXMLFilter );
+
+ if ( !match ) {
+ anyFound = found = true;
+ } else if ( match === true ) {
+ continue;
+ }
+ }
+
+ if ( match ) {
+ for ( var i = 0; (item = curLoop[i]) != null; i++ ) {
+ if ( item ) {
+ found = filter( item, match, i, curLoop );
+ var pass = not ^ !!found;
+
+ if ( inplace && found != null ) {
+ if ( pass ) {
+ anyFound = true;
+ } else {
+ curLoop[i] = false;
+ }
+ } else if ( pass ) {
+ result.push( item );
+ anyFound = true;
+ }
+ }
+ }
+ }
+
+ if ( found !== undefined ) {
+ if ( !inplace ) {
+ curLoop = result;
+ }
+
+ expr = expr.replace( Expr.match[ type ], "" );
+
+ if ( !anyFound ) {
+ return [];
+ }
+
+ break;
+ }
+ }
+ }
+
+ // Improper expression
+ if ( expr === old ) {
+ if ( anyFound == null ) {
+ Sizzle.error( expr );
+ } else {
+ break;
+ }
+ }
+
+ old = expr;
+ }
+
+ return curLoop;
+};
+
+Sizzle.error = function( msg ) {
+ throw "Syntax error, unrecognized expression: " + msg;
+};
+
+var Expr = Sizzle.selectors = {
+ order: [ "ID", "NAME", "TAG" ],
+ match: {
+ ID: /#((?:[\w\u00c0-\uFFFF-]|\\.)+)/,
+ CLASS: /\.((?:[\w\u00c0-\uFFFF-]|\\.)+)/,
+ NAME: /\[name=['"]*((?:[\w\u00c0-\uFFFF-]|\\.)+)['"]*\]/,
+ ATTR: /\[\s*((?:[\w\u00c0-\uFFFF-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/,
+ TAG: /^((?:[\w\u00c0-\uFFFF\*-]|\\.)+)/,
+ CHILD: /:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/,
+ POS: /:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)/,
+ PSEUDO: /:((?:[\w\u00c0-\uFFFF-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/
+ },
+ leftMatch: {},
+ attrMap: {
+ "class": "className",
+ "for": "htmlFor"
+ },
+ attrHandle: {
+ href: function(elem){
+ return elem.getAttribute("href");
+ }
+ },
+ relative: {
+ "+": function(checkSet, part){
+ var isPartStr = typeof part === "string",
+ isTag = isPartStr && !/\W/.test(part),
+ isPartStrNotTag = isPartStr && !isTag;
+
+ if ( isTag ) {
+ part = part.toLowerCase();
+ }
+
+ for ( var i = 0, l = checkSet.length, elem; i < l; i++ ) {
+ if ( (elem = checkSet[i]) ) {
+ while ( (elem = elem.previousSibling) && elem.nodeType !== 1 ) {}
+
+ checkSet[i] = isPartStrNotTag || elem && elem.nodeName.toLowerCase() === part ?
+ elem || false :
+ elem === part;
+ }
+ }
+
+ if ( isPartStrNotTag ) {
+ Sizzle.filter( part, checkSet, true );
+ }
+ },
+ ">": function(checkSet, part){
+ var isPartStr = typeof part === "string";
+
+ if ( isPartStr && !/\W/.test(part) ) {
+ part = part.toLowerCase();
+
+ for ( var i = 0, l = checkSet.length; i < l; i++ ) {
+ var elem = checkSet[i];
+ if ( elem ) {
+ var parent = elem.parentNode;
+ checkSet[i] = parent.nodeName.toLowerCase() === part ? parent : false;
+ }
+ }
+ } else {
+ for ( var i = 0, l = checkSet.length; i < l; i++ ) {
+ var elem = checkSet[i];
+ if ( elem ) {
+ checkSet[i] = isPartStr ?
+ elem.parentNode :
+ elem.parentNode === part;
+ }
+ }
+
+ if ( isPartStr ) {
+ Sizzle.filter( part, checkSet, true );
+ }
+ }
+ },
+ "": function(checkSet, part, isXML){
+ var doneName = done++, checkFn = dirCheck;
+
+ if ( typeof part === "string" && !/\W/.test(part) ) {
+ var nodeCheck = part = part.toLowerCase();
+ checkFn = dirNodeCheck;
+ }
+
+ checkFn("parentNode", part, doneName, checkSet, nodeCheck, isXML);
+ },
+ "~": function(checkSet, part, isXML){
+ var doneName = done++, checkFn = dirCheck;
+
+ if ( typeof part === "string" && !/\W/.test(part) ) {
+ var nodeCheck = part = part.toLowerCase();
+ checkFn = dirNodeCheck;
+ }
+
+ checkFn("previousSibling", part, doneName, checkSet, nodeCheck, isXML);
+ }
+ },
+ find: {
+ ID: function(match, context, isXML){
+ if ( typeof context.getElementById !== "undefined" && !isXML ) {
+ var m = context.getElementById(match[1]);
+ return m ? [m] : [];
+ }
+ },
+ NAME: function(match, context){
+ if ( typeof context.getElementsByName !== "undefined" ) {
+ var ret = [], results = context.getElementsByName(match[1]);
+
+ for ( var i = 0, l = results.length; i < l; i++ ) {
+ if ( results[i].getAttribute("name") === match[1] ) {
+ ret.push( results[i] );
+ }
+ }
+
+ return ret.length === 0 ? null : ret;
+ }
+ },
+ TAG: function(match, context){
+ return context.getElementsByTagName(match[1]);
+ }
+ },
+ preFilter: {
+ CLASS: function(match, curLoop, inplace, result, not, isXML){
+ match = " " + match[1].replace(/\\/g, "") + " ";
+
+ if ( isXML ) {
+ return match;
+ }
+
+ for ( var i = 0, elem; (elem = curLoop[i]) != null; i++ ) {
+ if ( elem ) {
+ if ( not ^ (elem.className && (" " + elem.className + " ").replace(/[\t\n]/g, " ").indexOf(match) >= 0) ) {
+ if ( !inplace ) {
+ result.push( elem );
+ }
+ } else if ( inplace ) {
+ curLoop[i] = false;
+ }
+ }
+ }
+
+ return false;
+ },
+ ID: function(match){
+ return match[1].replace(/\\/g, "");
+ },
+ TAG: function(match, curLoop){
+ return match[1].toLowerCase();
+ },
+ CHILD: function(match){
+ if ( match[1] === "nth" ) {
+ // parse equations like 'even', 'odd', '5', '2n', '3n+2', '4n-1', '-n+6'
+ var test = /(-?)(\d*)n((?:\+|-)?\d*)/.exec(
+ match[2] === "even" && "2n" || match[2] === "odd" && "2n+1" ||
+ !/\D/.test( match[2] ) && "0n+" + match[2] || match[2]);
+
+ // calculate the numbers (first)n+(last) including if they are negative
+ match[2] = (test[1] + (test[2] || 1)) - 0;
+ match[3] = test[3] - 0;
+ }
+
+ // TODO: Move to normal caching system
+ match[0] = done++;
+
+ return match;
+ },
+ ATTR: function(match, curLoop, inplace, result, not, isXML){
+ var name = match[1].replace(/\\/g, "");
+
+ if ( !isXML && Expr.attrMap[name] ) {
+ match[1] = Expr.attrMap[name];
+ }
+
+ if ( match[2] === "~=" ) {
+ match[4] = " " + match[4] + " ";
+ }
+
+ return match;
+ },
+ PSEUDO: function(match, curLoop, inplace, result, not){
+ if ( match[1] === "not" ) {
+ // If we're dealing with a complex expression, or a simple one
+ if ( ( chunker.exec(match[3]) || "" ).length > 1 || /^\w/.test(match[3]) ) {
+ match[3] = Sizzle(match[3], null, null, curLoop);
+ } else {
+ var ret = Sizzle.filter(match[3], curLoop, inplace, true ^ not);
+ if ( !inplace ) {
+ result.push.apply( result, ret );
+ }
+ return false;
+ }
+ } else if ( Expr.match.POS.test( match[0] ) || Expr.match.CHILD.test( match[0] ) ) {
+ return true;
+ }
+
+ return match;
+ },
+ POS: function(match){
+ match.unshift( true );
+ return match;
+ }
+ },
+ filters: {
+ enabled: function(elem){
+ return elem.disabled === false && elem.type !== "hidden";
+ },
+ disabled: function(elem){
+ return elem.disabled === true;
+ },
+ checked: function(elem){
+ return elem.checked === true;
+ },
+ selected: function(elem){
+ // Accessing this property makes selected-by-default
+ // options in Safari work properly
+ elem.parentNode.selectedIndex;
+ return elem.selected === true;
+ },
+ parent: function(elem){
+ return !!elem.firstChild;
+ },
+ empty: function(elem){
+ return !elem.firstChild;
+ },
+ has: function(elem, i, match){
+ return !!Sizzle( match[3], elem ).length;
+ },
+ header: function(elem){
+ return /h\d/i.test( elem.nodeName );
+ },
+ text: function(elem){
+ return "text" === elem.type;
+ },
+ radio: function(elem){
+ return "radio" === elem.type;
+ },
+ checkbox: function(elem){
+ return "checkbox" === elem.type;
+ },
+ file: function(elem){
+ return "file" === elem.type;
+ },
+ password: function(elem){
+ return "password" === elem.type;
+ },
+ submit: function(elem){
+ return "submit" === elem.type;
+ },
+ image: function(elem){
+ return "image" === elem.type;
+ },
+ reset: function(elem){
+ return "reset" === elem.type;
+ },
+ button: function(elem){
+ return "button" === elem.type || elem.nodeName.toLowerCase() === "button";
+ },
+ input: function(elem){
+ return /input|select|textarea|button/i.test(elem.nodeName);
+ }
+ },
+ setFilters: {
+ first: function(elem, i){
+ return i === 0;
+ },
+ last: function(elem, i, match, array){
+ return i === array.length - 1;
+ },
+ even: function(elem, i){
+ return i % 2 === 0;
+ },
+ odd: function(elem, i){
+ return i % 2 === 1;
+ },
+ lt: function(elem, i, match){
+ return i < match[3] - 0;
+ },
+ gt: function(elem, i, match){
+ return i > match[3] - 0;
+ },
+ nth: function(elem, i, match){
+ return match[3] - 0 === i;
+ },
+ eq: function(elem, i, match){
+ return match[3] - 0 === i;
+ }
+ },
+ filter: {
+ PSEUDO: function(elem, match, i, array){
+ var name = match[1], filter = Expr.filters[ name ];
+
+ if ( filter ) {
+ return filter( elem, i, match, array );
+ } else if ( name === "contains" ) {
+ return (elem.textContent || elem.innerText || getText([ elem ]) || "").indexOf(match[3]) >= 0;
+ } else if ( name === "not" ) {
+ var not = match[3];
+
+ for ( var i = 0, l = not.length; i < l; i++ ) {
+ if ( not[i] === elem ) {
+ return false;
+ }
+ }
+
+ return true;
+ } else {
+ Sizzle.error( "Syntax error, unrecognized expression: " + name );
+ }
+ },
+ CHILD: function(elem, match){
+ var type = match[1], node = elem;
+ switch (type) {
+ case 'only':
+ case 'first':
+ while ( (node = node.previousSibling) ) {
+ if ( node.nodeType === 1 ) {
+ return false;
+ }
+ }
+ if ( type === "first" ) {
+ return true;
+ }
+ node = elem;
+ case 'last':
+ while ( (node = node.nextSibling) ) {
+ if ( node.nodeType === 1 ) {
+ return false;
+ }
+ }
+ return true;
+ case 'nth':
+ var first = match[2], last = match[3];
+
+ if ( first === 1 && last === 0 ) {
+ return true;
+ }
+
+ var doneName = match[0],
+ parent = elem.parentNode;
+
+ if ( parent && (parent.sizcache !== doneName || !elem.nodeIndex) ) {
+ var count = 0;
+ for ( node = parent.firstChild; node; node = node.nextSibling ) {
+ if ( node.nodeType === 1 ) {
+ node.nodeIndex = ++count;
+ }
+ }
+ parent.sizcache = doneName;
+ }
+
+ var diff = elem.nodeIndex - last;
+ if ( first === 0 ) {
+ return diff === 0;
+ } else {
+ return ( diff % first === 0 && diff / first >= 0 );
+ }
+ }
+ },
+ ID: function(elem, match){
+ return elem.nodeType === 1 && elem.getAttribute("id") === match;
+ },
+ TAG: function(elem, match){
+ return (match === "*" && elem.nodeType === 1) || elem.nodeName.toLowerCase() === match;
+ },
+ CLASS: function(elem, match){
+ return (" " + (elem.className || elem.getAttribute("class")) + " ")
+ .indexOf( match ) > -1;
+ },
+ ATTR: function(elem, match){
+ var name = match[1],
+ result = Expr.attrHandle[ name ] ?
+ Expr.attrHandle[ name ]( elem ) :
+ elem[ name ] != null ?
+ elem[ name ] :
+ elem.getAttribute( name ),
+ value = result + "",
+ type = match[2],
+ check = match[4];
+
+ return result == null ?
+ type === "!=" :
+ type === "=" ?
+ value === check :
+ type === "*=" ?
+ value.indexOf(check) >= 0 :
+ type === "~=" ?
+ (" " + value + " ").indexOf(check) >= 0 :
+ !check ?
+ value && result !== false :
+ type === "!=" ?
+ value !== check :
+ type === "^=" ?
+ value.indexOf(check) === 0 :
+ type === "$=" ?
+ value.substr(value.length - check.length) === check :
+ type === "|=" ?
+ value === check || value.substr(0, check.length + 1) === check + "-" :
+ false;
+ },
+ POS: function(elem, match, i, array){
+ var name = match[2], filter = Expr.setFilters[ name ];
+
+ if ( filter ) {
+ return filter( elem, i, match, array );
+ }
+ }
+ }
+};
+
+var origPOS = Expr.match.POS;
+
+for ( var type in Expr.match ) {
+ Expr.match[ type ] = new RegExp( Expr.match[ type ].source + /(?![^\[]*\])(?![^\(]*\))/.source );
+ Expr.leftMatch[ type ] = new RegExp( /(^(?:.|\r|\n)*?)/.source + Expr.match[ type ].source.replace(/\\(\d+)/g, function(all, num){
+ return "\\" + (num - 0 + 1);
+ }));
+}
+
+var makeArray = function(array, results) {
+ array = Array.prototype.slice.call( array, 0 );
+
+ if ( results ) {
+ results.push.apply( results, array );
+ return results;
+ }
+
+ return array;
+};
+
+// Perform a simple check to determine if the browser is capable of
+// converting a NodeList to an array using builtin methods.
+// Also verifies that the returned array holds DOM nodes
+// (which is not the case in the Blackberry browser)
+try {
+ Array.prototype.slice.call( document.documentElement.childNodes, 0 )[0].nodeType;
+
+// Provide a fallback method if it does not work
+} catch(e){
+ makeArray = function(array, results) {
+ var ret = results || [];
+
+ if ( toString.call(array) === "[object Array]" ) {
+ Array.prototype.push.apply( ret, array );
+ } else {
+ if ( typeof array.length === "number" ) {
+ for ( var i = 0, l = array.length; i < l; i++ ) {
+ ret.push( array[i] );
+ }
+ } else {
+ for ( var i = 0; array[i]; i++ ) {
+ ret.push( array[i] );
+ }
+ }
+ }
+
+ return ret;
+ };
+}
+
+var sortOrder;
+
+if ( document.documentElement.compareDocumentPosition ) {
+ sortOrder = function( a, b ) {
+ if ( !a.compareDocumentPosition || !b.compareDocumentPosition ) {
+ if ( a == b ) {
+ hasDuplicate = true;
+ }
+ return a.compareDocumentPosition ? -1 : 1;
+ }
+
+ var ret = a.compareDocumentPosition(b) & 4 ? -1 : a === b ? 0 : 1;
+ if ( ret === 0 ) {
+ hasDuplicate = true;
+ }
+ return ret;
+ };
+} else if ( "sourceIndex" in document.documentElement ) {
+ sortOrder = function( a, b ) {
+ if ( !a.sourceIndex || !b.sourceIndex ) {
+ if ( a == b ) {
+ hasDuplicate = true;
+ }
+ return a.sourceIndex ? -1 : 1;
+ }
+
+ var ret = a.sourceIndex - b.sourceIndex;
+ if ( ret === 0 ) {
+ hasDuplicate = true;
+ }
+ return ret;
+ };
+} else if ( document.createRange ) {
+ sortOrder = function( a, b ) {
+ if ( !a.ownerDocument || !b.ownerDocument ) {
+ if ( a == b ) {
+ hasDuplicate = true;
+ }
+ return a.ownerDocument ? -1 : 1;
+ }
+
+ var aRange = a.ownerDocument.createRange(), bRange = b.ownerDocument.createRange();
+ aRange.setStart(a, 0);
+ aRange.setEnd(a, 0);
+ bRange.setStart(b, 0);
+ bRange.setEnd(b, 0);
+ var ret = aRange.compareBoundaryPoints(Range.START_TO_END, bRange);
+ if ( ret === 0 ) {
+ hasDuplicate = true;
+ }
+ return ret;
+ };
+}
+
+// Utility function for retreiving the text value of an array of DOM nodes
+function getText( elems ) {
+ var ret = "", elem;
+
+ for ( var i = 0; elems[i]; i++ ) {
+ elem = elems[i];
+
+ // Get the text from text nodes and CDATA nodes
+ if ( elem.nodeType === 3 || elem.nodeType === 4 ) {
+ ret += elem.nodeValue;
+
+ // Traverse everything else, except comment nodes
+ } else if ( elem.nodeType !== 8 ) {
+ ret += getText( elem.childNodes );
+ }
+ }
+
+ return ret;
+}
+
+// Check to see if the browser returns elements by name when
+// querying by getElementById (and provide a workaround)
+(function(){
+ // We're going to inject a fake input element with a specified name
+ var form = document.createElement("div"),
+ id = "script" + (new Date).getTime();
+ form.innerHTML = "<a name='" + id + "'/>";
+
+ // Inject it into the root element, check its status, and remove it quickly
+ var root = document.documentElement;
+ root.insertBefore( form, root.firstChild );
+
+ // The workaround has to do additional checks after a getElementById
+ // Which slows things down for other browsers (hence the branching)
+ if ( document.getElementById( id ) ) {
+ Expr.find.ID = function(match, context, isXML){
+ if ( typeof context.getElementById !== "undefined" && !isXML ) {
+ var m = context.getElementById(match[1]);
+ return m ? m.id === match[1] || typeof m.getAttributeNode !== "undefined" && m.getAttributeNode("id").nodeValue === match[1] ? [m] : undefined : [];
+ }
+ };
+
+ Expr.filter.ID = function(elem, match){
+ var node = typeof elem.getAttributeNode !== "undefined" && elem.getAttributeNode("id");
+ return elem.nodeType === 1 && node && node.nodeValue === match;
+ };
+ }
+
+ root.removeChild( form );
+ root = form = null; // release memory in IE
+})();
+
+(function(){
+ // Check to see if the browser returns only elements
+ // when doing getElementsByTagName("*")
+
+ // Create a fake element
+ var div = document.createElement("div");
+ div.appendChild( document.createComment("") );
+
+ // Make sure no comments are found
+ if ( div.getElementsByTagName("*").length > 0 ) {
+ Expr.find.TAG = function(match, context){
+ var results = context.getElementsByTagName(match[1]);
+
+ // Filter out possible comments
+ if ( match[1] === "*" ) {
+ var tmp = [];
+
+ for ( var i = 0; results[i]; i++ ) {
+ if ( results[i].nodeType === 1 ) {
+ tmp.push( results[i] );
+ }
+ }
+
+ results = tmp;
+ }
+
+ return results;
+ };
+ }
+
+ // Check to see if an attribute returns normalized href attributes
+ div.innerHTML = "<a href='#'></a>";
+ if ( div.firstChild && typeof div.firstChild.getAttribute !== "undefined" &&
+ div.firstChild.getAttribute("href") !== "#" ) {
+ Expr.attrHandle.href = function(elem){
+ return elem.getAttribute("href", 2);
+ };
+ }
+
+ div = null; // release memory in IE
+})();
+
+if ( document.querySelectorAll ) {
+ (function(){
+ var oldSizzle = Sizzle, div = document.createElement("div");
+ div.innerHTML = "<p class='TEST'></p>";
+
+ // Safari can't handle uppercase or unicode characters when
+ // in quirks mode.
+ if ( div.querySelectorAll && div.querySelectorAll(".TEST").length === 0 ) {
+ return;
+ }
+
+ Sizzle = function(query, context, extra, seed){
+ context = context || document;
+
+ // Only use querySelectorAll on non-XML documents
+ // (ID selectors don't work in non-HTML documents)
+ if ( !seed && context.nodeType === 9 && !isXML(context) ) {
+ try {
+ return makeArray( context.querySelectorAll(query), extra );
+ } catch(e){}
+ }
+
+ return oldSizzle(query, context, extra, seed);
+ };
+
+ for ( var prop in oldSizzle ) {
+ Sizzle[ prop ] = oldSizzle[ prop ];
+ }
+
+ div = null; // release memory in IE
+ })();
+}
+
+(function(){
+ var div = document.createElement("div");
+
+ div.innerHTML = "<div class='test e'></div><div class='test'></div>";
+
+ // Opera can't find a second classname (in 9.6)
+ // Also, make sure that getElementsByClassName actually exists
+ if ( !div.getElementsByClassName || div.getElementsByClassName("e").length === 0 ) {
+ return;
+ }
+
+ // Safari caches class attributes, doesn't catch changes (in 3.2)
+ div.lastChild.className = "e";
+
+ if ( div.getElementsByClassName("e").length === 1 ) {
+ return;
+ }
+
+ Expr.order.splice(1, 0, "CLASS");
+ Expr.find.CLASS = function(match, context, isXML) {
+ if ( typeof context.getElementsByClassName !== "undefined" && !isXML ) {
+ return context.getElementsByClassName(match[1]);
+ }
+ };
+
+ div = null; // release memory in IE
+})();
+
+function dirNodeCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {
+ for ( var i = 0, l = checkSet.length; i < l; i++ ) {
+ var elem = checkSet[i];
+ if ( elem ) {
+ elem = elem[dir];
+ var match = false;
+
+ while ( elem ) {
+ if ( elem.sizcache === doneName ) {
+ match = checkSet[elem.sizset];
+ break;
+ }
+
+ if ( elem.nodeType === 1 && !isXML ){
+ elem.sizcache = doneName;
+ elem.sizset = i;
+ }
+
+ if ( elem.nodeName.toLowerCase() === cur ) {
+ match = elem;
+ break;
+ }
+
+ elem = elem[dir];
+ }
+
+ checkSet[i] = match;
+ }
+ }
+}
+
+function dirCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {
+ for ( var i = 0, l = checkSet.length; i < l; i++ ) {
+ var elem = checkSet[i];
+ if ( elem ) {
+ elem = elem[dir];
+ var match = false;
+
+ while ( elem ) {
+ if ( elem.sizcache === doneName ) {
+ match = checkSet[elem.sizset];
+ break;
+ }
+
+ if ( elem.nodeType === 1 ) {
+ if ( !isXML ) {
+ elem.sizcache = doneName;
+ elem.sizset = i;
+ }
+ if ( typeof cur !== "string" ) {
+ if ( elem === cur ) {
+ match = true;
+ break;
+ }
+
+ } else if ( Sizzle.filter( cur, [elem] ).length > 0 ) {
+ match = elem;
+ break;
+ }
+ }
+
+ elem = elem[dir];
+ }
+
+ checkSet[i] = match;
+ }
+ }
+}
+
+var contains = document.compareDocumentPosition ? function(a, b){
+ return !!(a.compareDocumentPosition(b) & 16);
+} : function(a, b){
+ return a !== b && (a.contains ? a.contains(b) : true);
+};
+
+var isXML = function(elem){
+ // documentElement is verified for cases where it doesn't yet exist
+ // (such as loading iframes in IE - #4833)
+ var documentElement = (elem ? elem.ownerDocument || elem : 0).documentElement;
+ return documentElement ? documentElement.nodeName !== "HTML" : false;
+};
+
+var posProcess = function(selector, context){
+ var tmpSet = [], later = "", match,
+ root = context.nodeType ? [context] : context;
+
+ // Position selectors must be done after the filter
+ // And so must :not(positional) so we move all PSEUDOs to the end
+ while ( (match = Expr.match.PSEUDO.exec( selector )) ) {
+ later += match[0];
+ selector = selector.replace( Expr.match.PSEUDO, "" );
+ }
+
+ selector = Expr.relative[selector] ? selector + "*" : selector;
+
+ for ( var i = 0, l = root.length; i < l; i++ ) {
+ Sizzle( selector, root[i], tmpSet );
+ }
+
+ return Sizzle.filter( later, tmpSet );
+};
+
+// EXPOSE
+jQuery.find = Sizzle;
+jQuery.expr = Sizzle.selectors;
+jQuery.expr[":"] = jQuery.expr.filters;
+jQuery.unique = Sizzle.uniqueSort;
+jQuery.text = getText;
+jQuery.isXMLDoc = isXML;
+jQuery.contains = contains;
+
+return;
+
+window.Sizzle = Sizzle;
+
+})();
+var runtil = /Until$/,
+ rparentsprev = /^(?:parents|prevUntil|prevAll)/,
+ // Note: This RegExp should be improved, or likely pulled from Sizzle
+ rmultiselector = /,/,
+ slice = Array.prototype.slice;
+
+// Implement the identical functionality for filter and not
+var winnow = function( elements, qualifier, keep ) {
+ if ( jQuery.isFunction( qualifier ) ) {
+ return jQuery.grep(elements, function( elem, i ) {
+ return !!qualifier.call( elem, i, elem ) === keep;
+ });
+
+ } else if ( qualifier.nodeType ) {
+ return jQuery.grep(elements, function( elem, i ) {
+ return (elem === qualifier) === keep;
+ });
+
+ } else if ( typeof qualifier === "string" ) {
+ var filtered = jQuery.grep(elements, function( elem ) {
+ return elem.nodeType === 1;
+ });
+
+ if ( isSimple.test( qualifier ) ) {
+ return jQuery.filter(qualifier, filtered, !keep);
+ } else {
+ qualifier = jQuery.filter( qualifier, filtered );
+ }
+ }
+
+ return jQuery.grep(elements, function( elem, i ) {
+ return (jQuery.inArray( elem, qualifier ) >= 0) === keep;
+ });
+};
+
+jQuery.fn.extend({
+ find: function( selector ) {
+ var ret = this.pushStack( "", "find", selector ), length = 0;
+
+ for ( var i = 0, l = this.length; i < l; i++ ) {
+ length = ret.length;
+ jQuery.find( selector, this[i], ret );
+
+ if ( i > 0 ) {
+ // Make sure that the results are unique
+ for ( var n = length; n < ret.length; n++ ) {
+ for ( var r = 0; r < length; r++ ) {
+ if ( ret[r] === ret[n] ) {
+ ret.splice(n--, 1);
+ break;
+ }
+ }
+ }
+ }
+ }
+
+ return ret;
+ },
+
+ has: function( target ) {
+ var targets = jQuery( target );
+ return this.filter(function() {
+ for ( var i = 0, l = targets.length; i < l; i++ ) {
+ if ( jQuery.contains( this, targets[i] ) ) {
+ return true;
+ }
+ }
+ });
+ },
+
+ not: function( selector ) {
+ return this.pushStack( winnow(this, selector, false), "not", selector);
+ },
+
+ filter: function( selector ) {
+ return this.pushStack( winnow(this, selector, true), "filter", selector );
+ },
+
+ is: function( selector ) {
+ return !!selector && jQuery.filter( selector, this ).length > 0;
+ },
+
+ closest: function( selectors, context ) {
+ if ( jQuery.isArray( selectors ) ) {
+ var ret = [], cur = this[0], match, matches = {}, selector;
+
+ if ( cur && selectors.length ) {
+ for ( var i = 0, l = selectors.length; i < l; i++ ) {
+ selector = selectors[i];
+
+ if ( !matches[selector] ) {
+ matches[selector] = jQuery.expr.match.POS.test( selector ) ?
+ jQuery( selector, context || this.context ) :
+ selector;
+ }
+ }
+
+ while ( cur && cur.ownerDocument && cur !== context ) {
+ for ( selector in matches ) {
+ match = matches[selector];
+
+ if ( match.jquery ? match.index(cur) > -1 : jQuery(cur).is(match) ) {
+ ret.push({ selector: selector, elem: cur });
+ delete matches[selector];
+ }
+ }
+ cur = cur.parentNode;
+ }
+ }
+
+ return ret;
+ }
+
+ var pos = jQuery.expr.match.POS.test( selectors ) ?
+ jQuery( selectors, context || this.context ) : null;
+
+ return this.map(function( i, cur ) {
+ while ( cur && cur.ownerDocument && cur !== context ) {
+ if ( pos ? pos.index(cur) > -1 : jQuery(cur).is(selectors) ) {
+ return cur;
+ }
+ cur = cur.parentNode;
+ }
+ return null;
+ });
+ },
+
+ // Determine the position of an element within
+ // the matched set of elements
+ index: function( elem ) {
+ if ( !elem || typeof elem === "string" ) {
+ return jQuery.inArray( this[0],
+ // If it receives a string, the selector is used
+ // If it receives nothing, the siblings are used
+ elem ? jQuery( elem ) : this.parent().children() );
+ }
+ // Locate the position of the desired element
+ return jQuery.inArray(
+ // If it receives a jQuery object, the first element is used
+ elem.jquery ? elem[0] : elem, this );
+ },
+
+ add: function( selector, context ) {
+ var set = typeof selector === "string" ?
+ jQuery( selector, context || this.context ) :
+ jQuery.makeArray( selector ),
+ all = jQuery.merge( this.get(), set );
+
+ return this.pushStack( isDisconnected( set[0] ) || isDisconnected( all[0] ) ?
+ all :
+ jQuery.unique( all ) );
+ },
+
+ andSelf: function() {
+ return this.add( this.prevObject );
+ }
+});
+
+// A painfully simple check to see if an element is disconnected
+// from a document (should be improved, where feasible).
+function isDisconnected( node ) {
+ return !node || !node.parentNode || node.parentNode.nodeType === 11;
+}
+
+jQuery.each({
+ parent: function( elem ) {
+ var parent = elem.parentNode;
+ return parent && parent.nodeType !== 11 ? parent : null;
+ },
+ parents: function( elem ) {
+ return jQuery.dir( elem, "parentNode" );
+ },
+ parentsUntil: function( elem, i, until ) {
+ return jQuery.dir( elem, "parentNode", until );
+ },
+ next: function( elem ) {
+ return jQuery.nth( elem, 2, "nextSibling" );
+ },
+ prev: function( elem ) {
+ return jQuery.nth( elem, 2, "previousSibling" );
+ },
+ nextAll: function( elem ) {
+ return jQuery.dir( elem, "nextSibling" );
+ },
+ prevAll: function( elem ) {
+ return jQuery.dir( elem, "previousSibling" );
+ },
+ nextUntil: function( elem, i, until ) {
+ return jQuery.dir( elem, "nextSibling", until );
+ },
+ prevUntil: function( elem, i, until ) {
+ return jQuery.dir( elem, "previousSibling", until );
+ },
+ siblings: function( elem ) {
+ return jQuery.sibling( elem.parentNode.firstChild, elem );
+ },
+ children: function( elem ) {
+ return jQuery.sibling( elem.firstChild );
+ },
+ contents: function( elem ) {
+ return jQuery.nodeName( elem, "iframe" ) ?
+ elem.contentDocument || elem.contentWindow.document :
+ jQuery.makeArray( elem.childNodes );
+ }
+}, function( name, fn ) {
+ jQuery.fn[ name ] = function( until, selector ) {
+ var ret = jQuery.map( this, fn, until );
+
+ if ( !runtil.test( name ) ) {
+ selector = until;
+ }
+
+ if ( selector && typeof selector === "string" ) {
+ ret = jQuery.filter( selector, ret );
+ }
+
+ ret = this.length > 1 ? jQuery.unique( ret ) : ret;
+
+ if ( (this.length > 1 || rmultiselector.test( selector )) && rparentsprev.test( name ) ) {
+ ret = ret.reverse();
+ }
+
+ return this.pushStack( ret, name, slice.call(arguments).join(",") );
+ };
+});
+
+jQuery.extend({
+ filter: function( expr, elems, not ) {
+ if ( not ) {
+ expr = ":not(" + expr + ")";
+ }
+
+ return jQuery.find.matches(expr, elems);
+ },
+
+ dir: function( elem, dir, until ) {
+ var matched = [], cur = elem[dir];
+ while ( cur && cur.nodeType !== 9 && (until === undefined || cur.nodeType !== 1 || !jQuery( cur ).is( until )) ) {
+ if ( cur.nodeType === 1 ) {
+ matched.push( cur );
+ }
+ cur = cur[dir];
+ }
+ return matched;
+ },
+
+ nth: function( cur, result, dir, elem ) {
+ result = result || 1;
+ var num = 0;
+
+ for ( ; cur; cur = cur[dir] ) {
+ if ( cur.nodeType === 1 && ++num === result ) {
+ break;
+ }
+ }
+
+ return cur;
+ },
+
+ sibling: function( n, elem ) {
+ var r = [];
+
+ for ( ; n; n = n.nextSibling ) {
+ if ( n.nodeType === 1 && n !== elem ) {
+ r.push( n );
+ }
+ }
+
+ return r;
+ }
+});
+var rinlinejQuery = / jQuery\d+="(?:\d+|null)"/g,
+ rleadingWhitespace = /^\s+/,
+ rxhtmlTag = /(<([\w:]+)[^>]*?)\/>/g,
+ rselfClosing = /^(?:area|br|col|embed|hr|img|input|link|meta|param)$/i,
+ rtagName = /<([\w:]+)/,
+ rtbody = /<tbody/i,
+ rhtml = /<|&#?\w+;/,
+ rnocache = /<script|<object|<embed|<option|<style/i,
+ rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i, // checked="checked" or checked (html5)
+ fcloseTag = function( all, front, tag ) {
+ return rselfClosing.test( tag ) ?
+ all :
+ front + "></" + tag + ">";
+ },
+ wrapMap = {
+ option: [ 1, "<select multiple='multiple'>", "</select>" ],
+ legend: [ 1, "<fieldset>", "</fieldset>" ],
+ thead: [ 1, "<table>", "</table>" ],
+ tr: [ 2, "<table><tbody>", "</tbody></table>" ],
+ td: [ 3, "<table><tbody><tr>", "</tr></tbody></table>" ],
+ col: [ 2, "<table><tbody></tbody><colgroup>", "</colgroup></table>" ],
+ area: [ 1, "<map>", "</map>" ],
+ _default: [ 0, "", "" ]
+ };
+
+wrapMap.optgroup = wrapMap.option;
+wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;
+wrapMap.th = wrapMap.td;
+
+// IE can't serialize <link> and <script> tags normally
+if ( !jQuery.support.htmlSerialize ) {
+ wrapMap._default = [ 1, "div<div>", "</div>" ];
+}
+
+jQuery.fn.extend({
+ text: function( text ) {
+ if ( jQuery.isFunction(text) ) {
+ return this.each(function(i) {
+ var self = jQuery(this);
+ self.text( text.call(this, i, self.text()) );
+ });
+ }
+
+ if ( typeof text !== "object" && text !== undefined ) {
+ return this.empty().append( (this[0] && this[0].ownerDocument || document).createTextNode( text ) );
+ }
+
+ return jQuery.text( this );
+ },
+
+ wrapAll: function( html ) {
+ if ( jQuery.isFunction( html ) ) {
+ return this.each(function(i) {
+ jQuery(this).wrapAll( html.call(this, i) );
+ });
+ }
+
+ if ( this[0] ) {
+ // The elements to wrap the target around
+ var wrap = jQuery( html, this[0].ownerDocument ).eq(0).clone(true);
+
+ if ( this[0].parentNode ) {
+ wrap.insertBefore( this[0] );
+ }
+
+ wrap.map(function() {
+ var elem = this;
+
+ while ( elem.firstChild && elem.firstChild.nodeType === 1 ) {
+ elem = elem.firstChild;
+ }
+
+ return elem;
+ }).append(this);
+ }
+
+ return this;
+ },
+
+ wrapInner: function( html ) {
+ if ( jQuery.isFunction( html ) ) {
+ return this.each(function(i) {
+ jQuery(this).wrapInner( html.call(this, i) );
+ });
+ }
+
+ return this.each(function() {
+ var self = jQuery( this ), contents = self.contents();
+
+ if ( contents.length ) {
+ contents.wrapAll( html );
+
+ } else {
+ self.append( html );
+ }
+ });
+ },
+
+ wrap: function( html ) {
+ return this.each(function() {
+ jQuery( this ).wrapAll( html );
+ });
+ },
+
+ unwrap: function() {
+ return this.parent().each(function() {
+ if ( !jQuery.nodeName( this, "body" ) ) {
+ jQuery( this ).replaceWith( this.childNodes );
+ }
+ }).end();
+ },
+
+ append: function() {
+ return this.domManip(arguments, true, function( elem ) {
+ if ( this.nodeType === 1 ) {
+ this.appendChild( elem );
+ }
+ });
+ },
+
+ prepend: function() {
+ return this.domManip(arguments, true, function( elem ) {
+ if ( this.nodeType === 1 ) {
+ this.insertBefore( elem, this.firstChild );
+ }
+ });
+ },
+
+ before: function() {
+ if ( this[0] && this[0].parentNode ) {
+ return this.domManip(arguments, false, function( elem ) {
+ this.parentNode.insertBefore( elem, this );
+ });
+ } else if ( arguments.length ) {
+ var set = jQuery(arguments[0]);
+ set.push.apply( set, this.toArray() );
+ return this.pushStack( set, "before", arguments );
+ }
+ },
+
+ after: function() {
+ if ( this[0] && this[0].parentNode ) {
+ return this.domManip(arguments, false, function( elem ) {
+ this.parentNode.insertBefore( elem, this.nextSibling );
+ });
+ } else if ( arguments.length ) {
+ var set = this.pushStack( this, "after", arguments );
+ set.push.apply( set, jQuery(arguments[0]).toArray() );
+ return set;
+ }
+ },
+
+ // keepData is for internal use only--do not document
+ remove: function( selector, keepData ) {
+ for ( var i = 0, elem; (elem = this[i]) != null; i++ ) {
+ if ( !selector || jQuery.filter( selector, [ elem ] ).length ) {
+ if ( !keepData && elem.nodeType === 1 ) {
+ jQuery.cleanData( elem.getElementsByTagName("*") );
+ jQuery.cleanData( [ elem ] );
+ }
+
+ if ( elem.parentNode ) {
+ elem.parentNode.removeChild( elem );
+ }
+ }
+ }
+
+ return this;
+ },
+
+ empty: function() {
+ for ( var i = 0, elem; (elem = this[i]) != null; i++ ) {
+ // Remove element nodes and prevent memory leaks
+ if ( elem.nodeType === 1 ) {
+ jQuery.cleanData( elem.getElementsByTagName("*") );
+ }
+
+ // Remove any remaining nodes
+ while ( elem.firstChild ) {
+ elem.removeChild( elem.firstChild );
+ }
+ }
+
+ return this;
+ },
+
+ clone: function( events ) {
+ // Do the clone
+ var ret = this.map(function() {
+ if ( !jQuery.support.noCloneEvent && !jQuery.isXMLDoc(this) ) {
+ // IE copies events bound via attachEvent when
+ // using cloneNode. Calling detachEvent on the
+ // clone will also remove the events from the orignal
+ // In order to get around this, we use innerHTML.
+ // Unfortunately, this means some modifications to
+ // attributes in IE that are actually only stored
+ // as properties will not be copied (such as the
+ // the name attribute on an input).
+ var html = this.outerHTML, ownerDocument = this.ownerDocument;
+ if ( !html ) {
+ var div = ownerDocument.createElement("div");
+ div.appendChild( this.cloneNode(true) );
+ html = div.innerHTML;
+ }
+
+ return jQuery.clean([html.replace(rinlinejQuery, "")
+ // Handle the case in IE 8 where action=/test/> self-closes a tag
+ .replace(/=([^="'>\s]+\/)>/g, '="$1">')
+ .replace(rleadingWhitespace, "")], ownerDocument)[0];
+ } else {
+ return this.cloneNode(true);
+ }
+ });
+
+ // Copy the events from the original to the clone
+ if ( events === true ) {
+ cloneCopyEvent( this, ret );
+ cloneCopyEvent( this.find("*"), ret.find("*") );
+ }
+
+ // Return the cloned set
+ return ret;
+ },
+
+ html: function( value ) {
+ if ( value === undefined ) {
+ return this[0] && this[0].nodeType === 1 ?
+ this[0].innerHTML.replace(rinlinejQuery, "") :
+ null;
+
+ // See if we can take a shortcut and just use innerHTML
+ } else if ( typeof value === "string" && !rnocache.test( value ) &&
+ (jQuery.support.leadingWhitespace || !rleadingWhitespace.test( value )) &&
+ !wrapMap[ (rtagName.exec( value ) || ["", ""])[1].toLowerCase() ] ) {
+
+ value = value.replace(rxhtmlTag, fcloseTag);
+
+ try {
+ for ( var i = 0, l = this.length; i < l; i++ ) {
+ // Remove element nodes and prevent memory leaks
+ if ( this[i].nodeType === 1 ) {
+ jQuery.cleanData( this[i].getElementsByTagName("*") );
+ this[i].innerHTML = value;
+ }
+ }
+
+ // If using innerHTML throws an exception, use the fallback method
+ } catch(e) {
+ this.empty().append( value );
+ }
+
+ } else if ( jQuery.isFunction( value ) ) {
+ this.each(function(i){
+ var self = jQuery(this), old = self.html();
+ self.empty().append(function(){
+ return value.call( this, i, old );
+ });
+ });
+
+ } else {
+ this.empty().append( value );
+ }
+
+ return this;
+ },
+
+ replaceWith: function( value ) {
+ if ( this[0] && this[0].parentNode ) {
+ // Make sure that the elements are removed from the DOM before they are inserted
+ // this can help fix replacing a parent with child elements
+ if ( jQuery.isFunction( value ) ) {
+ return this.each(function(i) {
+ var self = jQuery(this), old = self.html();
+ self.replaceWith( value.call( this, i, old ) );
+ });
+ }
+
+ if ( typeof value !== "string" ) {
+ value = jQuery(value).detach();
+ }
+
+ return this.each(function() {
+ var next = this.nextSibling, parent = this.parentNode;
+
+ jQuery(this).remove();
+
+ if ( next ) {
+ jQuery(next).before( value );
+ } else {
+ jQuery(parent).append( value );
+ }
+ });
+ } else {
+ return this.pushStack( jQuery(jQuery.isFunction(value) ? value() : value), "replaceWith", value );
+ }
+ },
+
+ detach: function( selector ) {
+ return this.remove( selector, true );
+ },
+
+ domManip: function( args, table, callback ) {
+ var results, first, value = args[0], scripts = [], fragment, parent;
+
+ // We can't cloneNode fragments that contain checked, in WebKit
+ if ( !jQuery.support.checkClone && arguments.length === 3 && typeof value === "string" && rchecked.test( value ) ) {
+ return this.each(function() {
+ jQuery(this).domManip( args, table, callback, true );
+ });
+ }
+
+ if ( jQuery.isFunction(value) ) {
+ return this.each(function(i) {
+ var self = jQuery(this);
+ args[0] = value.call(this, i, table ? self.html() : undefined);
+ self.domManip( args, table, callback );
+ });
+ }
+
+ if ( this[0] ) {
+ parent = value && value.parentNode;
+
+ // If we're in a fragment, just use that instead of building a new one
+ if ( jQuery.support.parentNode && parent && parent.nodeType === 11 && parent.childNodes.length === this.length ) {
+ results = { fragment: parent };
+
+ } else {
+ results = buildFragment( args, this, scripts );
+ }
+
+ fragment = results.fragment;
+
+ if ( fragment.childNodes.length === 1 ) {
+ first = fragment = fragment.firstChild;
+ } else {
+ first = fragment.firstChild;
+ }
+
+ if ( first ) {
+ table = table && jQuery.nodeName( first, "tr" );
+
+ for ( var i = 0, l = this.length; i < l; i++ ) {
+ callback.call(
+ table ?
+ root(this[i], first) :
+ this[i],
+ i > 0 || results.cacheable || this.length > 1 ?
+ fragment.cloneNode(true) :
+ fragment
+ );
+ }
+ }
+
+ if ( scripts.length ) {
+ jQuery.each( scripts, evalScript );
+ }
+ }
+
+ return this;
+
+ function root( elem, cur ) {
+ return jQuery.nodeName(elem, "table") ?
+ (elem.getElementsByTagName("tbody")[0] ||
+ elem.appendChild(elem.ownerDocument.createElement("tbody"))) :
+ elem;
+ }
+ }
+});
+
+function cloneCopyEvent(orig, ret) {
+ var i = 0;
+
+ ret.each(function() {
+ if ( this.nodeName !== (orig[i] && orig[i].nodeName) ) {
+ return;
+ }
+
+ var oldData = jQuery.data( orig[i++] ), curData = jQuery.data( this, oldData ), events = oldData && oldData.events;
+
+ if ( events ) {
+ delete curData.handle;
+ curData.events = {};
+
+ for ( var type in events ) {
+ for ( var handler in events[ type ] ) {
+ jQuery.event.add( this, type, events[ type ][ handler ], events[ type ][ handler ].data );
+ }
+ }
+ }
+ });
+}
+
+function buildFragment( args, nodes, scripts ) {
+ var fragment, cacheable, cacheresults,
+ doc = (nodes && nodes[0] ? nodes[0].ownerDocument || nodes[0] : document);
+
+ // Only cache "small" (1/2 KB) strings that are associated with the main document
+ // Cloning options loses the selected state, so don't cache them
+ // IE 6 doesn't like it when you put <object> or <embed> elements in a fragment
+ // Also, WebKit does not clone 'checked' attributes on cloneNode, so don't cache
+ if ( args.length === 1 && typeof args[0] === "string" && args[0].length < 512 && doc === document &&
+ !rnocache.test( args[0] ) && (jQuery.support.checkClone || !rchecked.test( args[0] )) ) {
+
+ cacheable = true;
+ cacheresults = jQuery.fragments[ args[0] ];
+ if ( cacheresults ) {
+ if ( cacheresults !== 1 ) {
+ fragment = cacheresults;
+ }
+ }
+ }
+
+ if ( !fragment ) {
+ fragment = doc.createDocumentFragment();
+ jQuery.clean( args, doc, fragment, scripts );
+ }
+
+ if ( cacheable ) {
+ jQuery.fragments[ args[0] ] = cacheresults ? fragment : 1;
+ }
+
+ return { fragment: fragment, cacheable: cacheable };
+}
+
+jQuery.fragments = {};
+
+jQuery.each({
+ appendTo: "append",
+ prependTo: "prepend",
+ insertBefore: "before",
+ insertAfter: "after",
+ replaceAll: "replaceWith"
+}, function( name, original ) {
+ jQuery.fn[ name ] = function( selector ) {
+ var ret = [], insert = jQuery( selector ),
+ parent = this.length === 1 && this[0].parentNode;
+
+ if ( parent && parent.nodeType === 11 && parent.childNodes.length === 1 && insert.length === 1 ) {
+ insert[ original ]( this[0] );
+ return this;
+
+ } else {
+ for ( var i = 0, l = insert.length; i < l; i++ ) {
+ var elems = (i > 0 ? this.clone(true) : this).get();
+ jQuery.fn[ original ].apply( jQuery(insert[i]), elems );
+ ret = ret.concat( elems );
+ }
+
+ return this.pushStack( ret, name, insert.selector );
+ }
+ };
+});
+
+jQuery.extend({
+ clean: function( elems, context, fragment, scripts ) {
+ context = context || document;
+
+ // !context.createElement fails in IE with an error but returns typeof 'object'
+ if ( typeof context.createElement === "undefined" ) {
+ context = context.ownerDocument || context[0] && context[0].ownerDocument || document;
+ }
+
+ var ret = [];
+
+ for ( var i = 0, elem; (elem = elems[i]) != null; i++ ) {
+ if ( typeof elem === "number" ) {
+ elem += "";
+ }
+
+ if ( !elem ) {
+ continue;
+ }
+
+ // Convert html string into DOM nodes
+ if ( typeof elem === "string" && !rhtml.test( elem ) ) {
+ elem = context.createTextNode( elem );
+
+ } else if ( typeof elem === "string" ) {
+ // Fix "XHTML"-style tags in all browsers
+ elem = elem.replace(rxhtmlTag, fcloseTag);
+
+ // Trim whitespace, otherwise indexOf won't work as expected
+ var tag = (rtagName.exec( elem ) || ["", ""])[1].toLowerCase(),
+ wrap = wrapMap[ tag ] || wrapMap._default,
+ depth = wrap[0],
+ div = context.createElement("div");
+
+ // Go to html and back, then peel off extra wrappers
+ div.innerHTML = wrap[1] + elem + wrap[2];
+
+ // Move to the right depth
+ while ( depth-- ) {
+ div = div.lastChild;
+ }
+
+ // Remove IE's autoinserted <tbody> from table fragments
+ if ( !jQuery.support.tbody ) {
+
+ // String was a <table>, *may* have spurious <tbody>
+ var hasBody = rtbody.test(elem),
+ tbody = tag === "table" && !hasBody ?
+ div.firstChild && div.firstChild.childNodes :
+
+ // String was a bare <thead> or <tfoot>
+ wrap[1] === "<table>" && !hasBody ?
+ div.childNodes :
+ [];
+
+ for ( var j = tbody.length - 1; j >= 0 ; --j ) {
+ if ( jQuery.nodeName( tbody[ j ], "tbody" ) && !tbody[ j ].childNodes.length ) {
+ tbody[ j ].parentNode.removeChild( tbody[ j ] );
+ }
+ }
+
+ }
+
+ // IE completely kills leading whitespace when innerHTML is used
+ if ( !jQuery.support.leadingWhitespace && rleadingWhitespace.test( elem ) ) {
+ div.insertBefore( context.createTextNode( rleadingWhitespace.exec(elem)[0] ), div.firstChild );
+ }
+
+ elem = div.childNodes;
+ }
+
+ if ( elem.nodeType ) {
+ ret.push( elem );
+ } else {
+ ret = jQuery.merge( ret, elem );
+ }
+ }
+
+ if ( fragment ) {
+ for ( var i = 0; ret[i]; i++ ) {
+ if ( scripts && jQuery.nodeName( ret[i], "script" ) && (!ret[i].type || ret[i].type.toLowerCase() === "text/javascript") ) {
+ scripts.push( ret[i].parentNode ? ret[i].parentNode.removeChild( ret[i] ) : ret[i] );
+
+ } else {
+ if ( ret[i].nodeType === 1 ) {
+ ret.splice.apply( ret, [i + 1, 0].concat(jQuery.makeArray(ret[i].getElementsByTagName("script"))) );
+ }
+ fragment.appendChild( ret[i] );
+ }
+ }
+ }
+
+ return ret;
+ },
+
+ cleanData: function( elems ) {
+ var data, id, cache = jQuery.cache,
+ special = jQuery.event.special,
+ deleteExpando = jQuery.support.deleteExpando;
+
+ for ( var i = 0, elem; (elem = elems[i]) != null; i++ ) {
+ id = elem[ jQuery.expando ];
+
+ if ( id ) {
+ data = cache[ id ];
+
+ if ( data.events ) {
+ for ( var type in data.events ) {
+ if ( special[ type ] ) {
+ jQuery.event.remove( elem, type );
+
+ } else {
+ removeEvent( elem, type, data.handle );
+ }
+ }
+ }
+
+ if ( deleteExpando ) {
+ delete elem[ jQuery.expando ];
+
+ } else if ( elem.removeAttribute ) {
+ elem.removeAttribute( jQuery.expando );
+ }
+
+ delete cache[ id ];
+ }
+ }
+ }
+});
+// exclude the following css properties to add px
+var rexclude = /z-?index|font-?weight|opacity|zoom|line-?height/i,
+ ralpha = /alpha\([^)]*\)/,
+ ropacity = /opacity=([^)]*)/,
+ rfloat = /float/i,
+ rdashAlpha = /-([a-z])/ig,
+ rupper = /([A-Z])/g,
+ rnumpx = /^-?\d+(?:px)?$/i,
+ rnum = /^-?\d/,
+
+ cssShow = { position: "absolute", visibility: "hidden", display:"block" },
+ cssWidth = [ "Left", "Right" ],
+ cssHeight = [ "Top", "Bottom" ],
+
+ // cache check for defaultView.getComputedStyle
+ getComputedStyle = document.defaultView && document.defaultView.getComputedStyle,
+ // normalize float css property
+ styleFloat = jQuery.support.cssFloat ? "cssFloat" : "styleFloat",
+ fcamelCase = function( all, letter ) {
+ return letter.toUpperCase();
+ };
+
+jQuery.fn.css = function( name, value ) {
+ return access( this, name, value, true, function( elem, name, value ) {
+ if ( value === undefined ) {
+ return jQuery.curCSS( elem, name );
+ }
+
+ if ( typeof value === "number" && !rexclude.test(name) ) {
+ value += "px";
+ }
+
+ jQuery.style( elem, name, value );
+ });
+};
+
+jQuery.extend({
+ style: function( elem, name, value ) {
+ // don't set styles on text and comment nodes
+ if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 ) {
+ return undefined;
+ }
+
+ // ignore negative width and height values #1599
+ if ( (name === "width" || name === "height") && parseFloat(value) < 0 ) {
+ value = undefined;
+ }
+
+ var style = elem.style || elem, set = value !== undefined;
+
+ // IE uses filters for opacity
+ if ( !jQuery.support.opacity && name === "opacity" ) {
+ if ( set ) {
+ // IE has trouble with opacity if it does not have layout
+ // Force it by setting the zoom level
+ style.zoom = 1;
+
+ // Set the alpha filter to set the opacity
+ var opacity = parseInt( value, 10 ) + "" === "NaN" ? "" : "alpha(opacity=" + value * 100 + ")";
+ var filter = style.filter || jQuery.curCSS( elem, "filter" ) || "";
+ style.filter = ralpha.test(filter) ? filter.replace(ralpha, opacity) : opacity;
+ }
+
+ return style.filter && style.filter.indexOf("opacity=") >= 0 ?
+ (parseFloat( ropacity.exec(style.filter)[1] ) / 100) + "":
+ "";
+ }
+
+ // Make sure we're using the right name for getting the float value
+ if ( rfloat.test( name ) ) {
+ name = styleFloat;
+ }
+
+ name = name.replace(rdashAlpha, fcamelCase);
+
+ if ( set ) {
+ style[ name ] = value;
+ }
+
+ return style[ name ];
+ },
+
+ css: function( elem, name, force, extra ) {
+ if ( name === "width" || name === "height" ) {
+ var val, props = cssShow, which = name === "width" ? cssWidth : cssHeight;
+
+ function getWH() {
+ val = name === "width" ? elem.offsetWidth : elem.offsetHeight;
+
+ if ( extra === "border" ) {
+ return;
+ }
+
+ jQuery.each( which, function() {
+ if ( !extra ) {
+ val -= parseFloat(jQuery.curCSS( elem, "padding" + this, true)) || 0;
+ }
+
+ if ( extra === "margin" ) {
+ val += parseFloat(jQuery.curCSS( elem, "margin" + this, true)) || 0;
+ } else {
+ val -= parseFloat(jQuery.curCSS( elem, "border" + this + "Width", true)) || 0;
+ }
+ });
+ }
+
+ if ( elem.offsetWidth !== 0 ) {
+ getWH();
+ } else {
+ jQuery.swap( elem, props, getWH );
+ }
+
+ return Math.max(0, Math.round(val));
+ }
+
+ return jQuery.curCSS( elem, name, force );
+ },
+
+ curCSS: function( elem, name, force ) {
+ var ret, style = elem.style, filter;
+
+ // IE uses filters for opacity
+ if ( !jQuery.support.opacity && name === "opacity" && elem.currentStyle ) {
+ ret = ropacity.test(elem.currentStyle.filter || "") ?
+ (parseFloat(RegExp.$1) / 100) + "" :
+ "";
+
+ return ret === "" ?
+ "1" :
+ ret;
+ }
+
+ // Make sure we're using the right name for getting the float value
+ if ( rfloat.test( name ) ) {
+ name = styleFloat;
+ }
+
+ if ( !force && style && style[ name ] ) {
+ ret = style[ name ];
+
+ } else if ( getComputedStyle ) {
+
+ // Only "float" is needed here
+ if ( rfloat.test( name ) ) {
+ name = "float";
+ }
+
+ name = name.replace( rupper, "-$1" ).toLowerCase();
+
+ var defaultView = elem.ownerDocument.defaultView;
+
+ if ( !defaultView ) {
+ return null;
+ }
+
+ var computedStyle = defaultView.getComputedStyle( elem, null );
+
+ if ( computedStyle ) {
+ ret = computedStyle.getPropertyValue( name );
+ }
+
+ // We should always get a number back from opacity
+ if ( name === "opacity" && ret === "" ) {
+ ret = "1";
+ }
+
+ } else if ( elem.currentStyle ) {
+ var camelCase = name.replace(rdashAlpha, fcamelCase);
+
+ ret = elem.currentStyle[ name ] || elem.currentStyle[ camelCase ];
+
+ // From the awesome hack by Dean Edwards
+ // http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291
+
+ // If we're not dealing with a regular pixel number
+ // but a number that has a weird ending, we need to convert it to pixels
+ if ( !rnumpx.test( ret ) && rnum.test( ret ) ) {
+ // Remember the original values
+ var left = style.left, rsLeft = elem.runtimeStyle.left;
+
+ // Put in the new values to get a computed value out
+ elem.runtimeStyle.left = elem.currentStyle.left;
+ style.left = camelCase === "fontSize" ? "1em" : (ret || 0);
+ ret = style.pixelLeft + "px";
+
+ // Revert the changed values
+ style.left = left;
+ elem.runtimeStyle.left = rsLeft;
+ }
+ }
+
+ return ret;
+ },
+
+ // A method for quickly swapping in/out CSS properties to get correct calculations
+ swap: function( elem, options, callback ) {
+ var old = {};
+
+ // Remember the old values, and insert the new ones
+ for ( var name in options ) {
+ old[ name ] = elem.style[ name ];
+ elem.style[ name ] = options[ name ];
+ }
+
+ callback.call( elem );
+
+ // Revert the old values
+ for ( var name in options ) {
+ elem.style[ name ] = old[ name ];
+ }
+ }
+});
+
+if ( jQuery.expr && jQuery.expr.filters ) {
+ jQuery.expr.filters.hidden = function( elem ) {
+ var width = elem.offsetWidth, height = elem.offsetHeight,
+ skip = elem.nodeName.toLowerCase() === "tr";
+
+ return width === 0 && height === 0 && !skip ?
+ true :
+ width > 0 && height > 0 && !skip ?
+ false :
+ jQuery.curCSS(elem, "display") === "none";
+ };
+
+ jQuery.expr.filters.visible = function( elem ) {
+ return !jQuery.expr.filters.hidden( elem );
+ };
+}
+var jsc = now(),
+ rscript = /<script(.|\s)*?\/script>/gi,
+ rselectTextarea = /select|textarea/i,
+ rinput = /color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week/i,
+ jsre = /=\?(&|$)/,
+ rquery = /\?/,
+ rts = /(\?|&)_=.*?(&|$)/,
+ rurl = /^(\w+:)?\/\/([^\/?#]+)/,
+ r20 = /%20/g,
+
+ // Keep a copy of the old load method
+ _load = jQuery.fn.load;
+
+jQuery.fn.extend({
+ load: function( url, params, callback ) {
+ if ( typeof url !== "string" ) {
+ return _load.call( this, url );
+
+ // Don't do a request if no elements are being requested
+ } else if ( !this.length ) {
+ return this;
+ }
+
+ var off = url.indexOf(" ");
+ if ( off >= 0 ) {
+ var selector = url.slice(off, url.length);
+ url = url.slice(0, off);
+ }
+
+ // Default to a GET request
+ var type = "GET";
+
+ // If the second parameter was provided
+ if ( params ) {
+ // If it's a function
+ if ( jQuery.isFunction( params ) ) {
+ // We assume that it's the callback
+ callback = params;
+ params = null;
+
+ // Otherwise, build a param string
+ } else if ( typeof params === "object" ) {
+ params = jQuery.param( params, jQuery.ajaxSettings.traditional );
+ type = "POST";
+ }
+ }
+
+ var self = this;
+
+ // Request the remote document
+ jQuery.ajax({
+ url: url,
+ type: type,
+ dataType: "html",
+ data: params,
+ complete: function( res, status ) {
+ // If successful, inject the HTML into all the matched elements
+ if ( status === "success" || status === "notmodified" ) {
+ // See if a selector was specified
+ self.html( selector ?
+ // Create a dummy div to hold the results
+ jQuery("<div />")
+ // inject the contents of the document in, removing the scripts
+ // to avoid any 'Permission Denied' errors in IE
+ .append(res.responseText.replace(rscript, ""))
+
+ // Locate the specified elements
+ .find(selector) :
+
+ // If not, just inject the full result
+ res.responseText );
+ }
+
+ if ( callback ) {
+ self.each( callback, [res.responseText, status, res] );
+ }
+ }
+ });
+
+ return this;
+ },
+
+ serialize: function() {
+ return jQuery.param(this.serializeArray());
+ },
+ serializeArray: function() {
+ return this.map(function() {
+ return this.elements ? jQuery.makeArray(this.elements) : this;
+ })
+ .filter(function() {
+ return this.name && !this.disabled &&
+ (this.checked || rselectTextarea.test(this.nodeName) ||
+ rinput.test(this.type));
+ })
+ .map(function( i, elem ) {
+ var val = jQuery(this).val();
+
+ return val == null ?
+ null :
+ jQuery.isArray(val) ?
+ jQuery.map( val, function( val, i ) {
+ return { name: elem.name, value: val };
+ }) :
+ { name: elem.name, value: val };
+ }).get();
+ }
+});
+
+// Attach a bunch of functions for handling common AJAX events
+jQuery.each( "ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "), function( i, o ) {
+ jQuery.fn[o] = function( f ) {
+ return this.bind(o, f);
+ };
+});
+
+jQuery.extend({
+
+ get: function( url, data, callback, type ) {
+ // shift arguments if data argument was omited
+ if ( jQuery.isFunction( data ) ) {
+ type = type || callback;
+ callback = data;
+ data = null;
+ }
+
+ return jQuery.ajax({
+ type: "GET",
+ url: url,
+ data: data,
+ success: callback,
+ dataType: type
+ });
+ },
+
+ getScript: function( url, callback ) {
+ return jQuery.get(url, null, callback, "script");
+ },
+
+ getJSON: function( url, data, callback ) {
+ return jQuery.get(url, data, callback, "json");
+ },
+
+ post: function( url, data, callback, type ) {
+ // shift arguments if data argument was omited
+ if ( jQuery.isFunction( data ) ) {
+ type = type || callback;
+ callback = data;
+ data = {};
+ }
+
+ return jQuery.ajax({
+ type: "POST",
+ url: url,
+ data: data,
+ success: callback,
+ dataType: type
+ });
+ },
+
+ ajaxSetup: function( settings ) {
+ jQuery.extend( jQuery.ajaxSettings, settings );
+ },
+
+ ajaxSettings: {
+ url: location.href,
+ global: true,
+ type: "GET",
+ contentType: "application/x-www-form-urlencoded",
+ processData: true,
+ async: true,
+ /*
+ timeout: 0,
+ data: null,
+ username: null,
+ password: null,
+ traditional: false,
+ */
+ // Create the request object; Microsoft failed to properly
+ // implement the XMLHttpRequest in IE7 (can't request local files),
+ // so we use the ActiveXObject when it is available
+ // This function can be overriden by calling jQuery.ajaxSetup
+ xhr: window.XMLHttpRequest && (window.location.protocol !== "file:" || !window.ActiveXObject) ?
+ function() {
+ return new window.XMLHttpRequest();
+ } :
+ function() {
+ try {
+ return new window.ActiveXObject("Microsoft.XMLHTTP");
+ } catch(e) {}
+ },
+ accepts: {
+ xml: "application/xml, text/xml",
+ html: "text/html",
+ script: "text/javascript, application/javascript",
+ json: "application/json, text/javascript",
+ text: "text/plain",
+ _default: "*/*"
+ }
+ },
+
+ // Last-Modified header cache for next request
+ lastModified: {},
+ etag: {},
+
+ ajax: function( origSettings ) {
+ var s = jQuery.extend(true, {}, jQuery.ajaxSettings, origSettings);
+
+ var jsonp, status, data,
+ callbackContext = origSettings && origSettings.context || s,
+ type = s.type.toUpperCase();
+
+ // convert data if not already a string
+ if ( s.data && s.processData && typeof s.data !== "string" ) {
+ s.data = jQuery.param( s.data, s.traditional );
+ }
+
+ // Handle JSONP Parameter Callbacks
+ if ( s.dataType === "jsonp" ) {
+ if ( type === "GET" ) {
+ if ( !jsre.test( s.url ) ) {
+ s.url += (rquery.test( s.url ) ? "&" : "?") + (s.jsonp || "callback") + "=?";
+ }
+ } else if ( !s.data || !jsre.test(s.data) ) {
+ s.data = (s.data ? s.data + "&" : "") + (s.jsonp || "callback") + "=?";
+ }
+ s.dataType = "json";
+ }
+
+ // Build temporary JSONP function
+ if ( s.dataType === "json" && (s.data && jsre.test(s.data) || jsre.test(s.url)) ) {
+ jsonp = s.jsonpCallback || ("jsonp" + jsc++);
+
+ // Replace the =? sequence both in the query string and the data
+ if ( s.data ) {
+ s.data = (s.data + "").replace(jsre, "=" + jsonp + "$1");
+ }
+
+ s.url = s.url.replace(jsre, "=" + jsonp + "$1");
+
+ // We need to make sure
+ // that a JSONP style response is executed properly
+ s.dataType = "script";
+
+ // Handle JSONP-style loading
+ window[ jsonp ] = window[ jsonp ] || function( tmp ) {
+ data = tmp;
+ success();
+ complete();
+ // Garbage collect
+ window[ jsonp ] = undefined;
+
+ try {
+ delete window[ jsonp ];
+ } catch(e) {}
+
+ if ( head ) {
+ head.removeChild( script );
+ }
+ };
+ }
+
+ if ( s.dataType === "script" && s.cache === null ) {
+ s.cache = false;
+ }
+
+ if ( s.cache === false && type === "GET" ) {
+ var ts = now();
+
+ // try replacing _= if it is there
+ var ret = s.url.replace(rts, "$1_=" + ts + "$2");
+
+ // if nothing was replaced, add timestamp to the end
+ s.url = ret + ((ret === s.url) ? (rquery.test(s.url) ? "&" : "?") + "_=" + ts : "");
+ }
+
+ // If data is available, append data to url for get requests
+ if ( s.data && type === "GET" ) {
+ s.url += (rquery.test(s.url) ? "&" : "?") + s.data;
+ }
+
+ // Watch for a new set of requests
+ if ( s.global && ! jQuery.active++ ) {
+ jQuery.event.trigger( "ajaxStart" );
+ }
+
+ // Matches an absolute URL, and saves the domain
+ var parts = rurl.exec( s.url ),
+ remote = parts && (parts[1] && parts[1] !== location.protocol || parts[2] !== location.host);
+
+ // If we're requesting a remote document
+ // and trying to load JSON or Script with a GET
+ if ( s.dataType === "script" && type === "GET" && remote ) {
+ var head = document.getElementsByTagName("head")[0] || document.documentElement;
+ var script = document.createElement("script");
+ script.src = s.url;
+ if ( s.scriptCharset ) {
+ script.charset = s.scriptCharset;
+ }
+
+ // Handle Script loading
+ if ( !jsonp ) {
+ var done = false;
+
+ // Attach handlers for all browsers
+ script.onload = script.onreadystatechange = function() {
+ if ( !done && (!this.readyState ||
+ this.readyState === "loaded" || this.readyState === "complete") ) {
+ done = true;
+ success();
+ complete();
+
+ // Handle memory leak in IE
+ script.onload = script.onreadystatechange = null;
+ if ( head && script.parentNode ) {
+ head.removeChild( script );
+ }
+ }
+ };
+ }
+
+ // Use insertBefore instead of appendChild to circumvent an IE6 bug.
+ // This arises when a base node is used (#2709 and #4378).
+ head.insertBefore( script, head.firstChild );
+
+ // We handle everything using the script element injection
+ return undefined;
+ }
+
+ var requestDone = false;
+
+ // Create the request object
+ var xhr = s.xhr();
+
+ if ( !xhr ) {
+ return;
+ }
+
+ // Open the socket
+ // Passing null username, generates a login popup on Opera (#2865)
+ if ( s.username ) {
+ xhr.open(type, s.url, s.async, s.username, s.password);
+ } else {
+ xhr.open(type, s.url, s.async);
+ }
+
+ // Need an extra try/catch for cross domain requests in Firefox 3
+ try {
+ // Set the correct header, if data is being sent
+ if ( s.data || origSettings && origSettings.contentType ) {
+ xhr.setRequestHeader("Content-Type", s.contentType);
+ }
+
+ // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
+ if ( s.ifModified ) {
+ if ( jQuery.lastModified[s.url] ) {
+ xhr.setRequestHeader("If-Modified-Since", jQuery.lastModified[s.url]);
+ }
+
+ if ( jQuery.etag[s.url] ) {
+ xhr.setRequestHeader("If-None-Match", jQuery.etag[s.url]);
+ }
+ }
+
+ // Set header so the called script knows that it's an XMLHttpRequest
+ // Only send the header if it's not a remote XHR
+ if ( !remote ) {
+ xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest");
+ }
+
+ // Set the Accepts header for the server, depending on the dataType
+ xhr.setRequestHeader("Accept", s.dataType && s.accepts[ s.dataType ] ?
+ s.accepts[ s.dataType ] + ", */*" :
+ s.accepts._default );
+ } catch(e) {}
+
+ // Allow custom headers/mimetypes and early abort
+ if ( s.beforeSend && s.beforeSend.call(callbackContext, xhr, s) === false ) {
+ // Handle the global AJAX counter
+ if ( s.global && ! --jQuery.active ) {
+ jQuery.event.trigger( "ajaxStop" );
+ }
+
+ // close opended socket
+ xhr.abort();
+ return false;
+ }
+
+ if ( s.global ) {
+ trigger("ajaxSend", [xhr, s]);
+ }
+
+ // Wait for a response to come back
+ var onreadystatechange = xhr.onreadystatechange = function( isTimeout ) {
+ // The request was aborted
+ if ( !xhr || xhr.readyState === 0 || isTimeout === "abort" ) {
+ // Opera doesn't call onreadystatechange before this point
+ // so we simulate the call
+ if ( !requestDone ) {
+ complete();
+ }
+
+ requestDone = true;
+ if ( xhr ) {
+ xhr.onreadystatechange = jQuery.noop;
+ }
+
+ // The transfer is complete and the data is available, or the request timed out
+ } else if ( !requestDone && xhr && (xhr.readyState === 4 || isTimeout === "timeout") ) {
+ requestDone = true;
+ xhr.onreadystatechange = jQuery.noop;
+
+ status = isTimeout === "timeout" ?
+ "timeout" :
+ !jQuery.httpSuccess( xhr ) ?
+ "error" :
+ s.ifModified && jQuery.httpNotModified( xhr, s.url ) ?
+ "notmodified" :
+ "success";
+
+ var errMsg;
+
+ if ( status === "success" ) {
+ // Watch for, and catch, XML document parse errors
+ try {
+ // process the data (runs the xml through httpData regardless of callback)
+ data = jQuery.httpData( xhr, s.dataType, s );
+ } catch(err) {
+ status = "parsererror";
+ errMsg = err;
+ }
+ }
+
+ // Make sure that the request was successful or notmodified
+ if ( status === "success" || status === "notmodified" ) {
+ // JSONP handles its own success callback
+ if ( !jsonp ) {
+ success();
+ }
+ } else {
+ jQuery.handleError(s, xhr, status, errMsg);
+ }
+
+ // Fire the complete handlers
+ complete();
+
+ if ( isTimeout === "timeout" ) {
+ xhr.abort();
+ }
+
+ // Stop memory leaks
+ if ( s.async ) {
+ xhr = null;
+ }
+ }
+ };
+
+ // Override the abort handler, if we can (IE doesn't allow it, but that's OK)
+ // Opera doesn't fire onreadystatechange at all on abort
+ try {
+ var oldAbort = xhr.abort;
+ xhr.abort = function() {
+ if ( xhr ) {
+ oldAbort.call( xhr );
+ }
+
+ onreadystatechange( "abort" );
+ };
+ } catch(e) { }
+
+ // Timeout checker
+ if ( s.async && s.timeout > 0 ) {
+ setTimeout(function() {
+ // Check to see if the request is still happening
+ if ( xhr && !requestDone ) {
+ onreadystatechange( "timeout" );
+ }
+ }, s.timeout);
+ }
+
+ // Send the data
+ try {
+ xhr.send( type === "POST" || type === "PUT" || type === "DELETE" ? s.data : null );
+ } catch(e) {
+ jQuery.handleError(s, xhr, null, e);
+ // Fire the complete handlers
+ complete();
+ }
+
+ // firefox 1.5 doesn't fire statechange for sync requests
+ if ( !s.async ) {
+ onreadystatechange();
+ }
+
+ function success() {
+ // If a local callback was specified, fire it and pass it the data
+ if ( s.success ) {
+ s.success.call( callbackContext, data, status, xhr );
+ }
+
+ // Fire the global callback
+ if ( s.global ) {
+ trigger( "ajaxSuccess", [xhr, s] );
+ }
+ }
+
+ function complete() {
+ // Process result
+ if ( s.complete ) {
+ s.complete.call( callbackContext, xhr, status);
+ }
+
+ // The request was completed
+ if ( s.global ) {
+ trigger( "ajaxComplete", [xhr, s] );
+ }
+
+ // Handle the global AJAX counter
+ if ( s.global && ! --jQuery.active ) {
+ jQuery.event.trigger( "ajaxStop" );
+ }
+ }
+
+ function trigger(type, args) {
+ (s.context ? jQuery(s.context) : jQuery.event).trigger(type, args);
+ }
+
+ // return XMLHttpRequest to allow aborting the request etc.
+ return xhr;
+ },
+
+ handleError: function( s, xhr, status, e ) {
+ // If a local callback was specified, fire it
+ if ( s.error ) {
+ s.error.call( s.context || s, xhr, status, e );
+ }
+
+ // Fire the global callback
+ if ( s.global ) {
+ (s.context ? jQuery(s.context) : jQuery.event).trigger( "ajaxError", [xhr, s, e] );
+ }
+ },
+
+ // Counter for holding the number of active queries
+ active: 0,
+
+ // Determines if an XMLHttpRequest was successful or not
+ httpSuccess: function( xhr ) {
+ try {
+ // IE error sometimes returns 1223 when it should be 204 so treat it as success, see #1450
+ return !xhr.status && location.protocol === "file:" ||
+ // Opera returns 0 when status is 304
+ ( xhr.status >= 200 && xhr.status < 300 ) ||
+ xhr.status === 304 || xhr.status === 1223 || xhr.status === 0;
+ } catch(e) {}
+
+ return false;
+ },
+
+ // Determines if an XMLHttpRequest returns NotModified
+ httpNotModified: function( xhr, url ) {
+ var lastModified = xhr.getResponseHeader("Last-Modified"),
+ etag = xhr.getResponseHeader("Etag");
+
+ if ( lastModified ) {
+ jQuery.lastModified[url] = lastModified;
+ }
+
+ if ( etag ) {
+ jQuery.etag[url] = etag;
+ }
+
+ // Opera returns 0 when status is 304
+ return xhr.status === 304 || xhr.status === 0;
+ },
+
+ httpData: function( xhr, type, s ) {
+ var ct = xhr.getResponseHeader("content-type") || "",
+ xml = type === "xml" || !type && ct.indexOf("xml") >= 0,
+ data = xml ? xhr.responseXML : xhr.responseText;
+
+ if ( xml && data.documentElement.nodeName === "parsererror" ) {
+ jQuery.error( "parsererror" );
+ }
+
+ // Allow a pre-filtering function to sanitize the response
+ // s is checked to keep backwards compatibility
+ if ( s && s.dataFilter ) {
+ data = s.dataFilter( data, type );
+ }
+
+ // The filter can actually parse the response
+ if ( typeof data === "string" ) {
+ // Get the JavaScript object, if JSON is used.
+ if ( type === "json" || !type && ct.indexOf("json") >= 0 ) {
+ data = jQuery.parseJSON( data );
+
+ // If the type is "script", eval it in global context
+ } else if ( type === "script" || !type && ct.indexOf("javascript") >= 0 ) {
+ jQuery.globalEval( data );
+ }
+ }
+
+ return data;
+ },
+
+ // Serialize an array of form elements or a set of
+ // key/values into a query string
+ param: function( a, traditional ) {
+ var s = [];
+
+ // Set traditional to true for jQuery <= 1.3.2 behavior.
+ if ( traditional === undefined ) {
+ traditional = jQuery.ajaxSettings.traditional;
+ }
+
+ // If an array was passed in, assume that it is an array of form elements.
+ if ( jQuery.isArray(a) || a.jquery ) {
+ // Serialize the form elements
+ jQuery.each( a, function() {
+ add( this.name, this.value );
+ });
+
+ } else {
+ // If traditional, encode the "old" way (the way 1.3.2 or older
+ // did it), otherwise encode params recursively.
+ for ( var prefix in a ) {
+ buildParams( prefix, a[prefix] );
+ }
+ }
+
+ // Return the resulting serialization
+ return s.join("&").replace(r20, "+");
+
+ function buildParams( prefix, obj ) {
+ if ( jQuery.isArray(obj) ) {
+ // Serialize array item.
+ jQuery.each( obj, function( i, v ) {
+ if ( traditional || /\[\]$/.test( prefix ) ) {
+ // Treat each array item as a scalar.
+ add( prefix, v );
+ } else {
+ // If array item is non-scalar (array or object), encode its
+ // numeric index to resolve deserialization ambiguity issues.
+ // Note that rack (as of 1.0.0) can't currently deserialize
+ // nested arrays properly, and attempting to do so may cause
+ // a server error. Possible fixes are to modify rack's
+ // deserialization algorithm or to provide an option or flag
+ // to force array serialization to be shallow.
+ buildParams( prefix + "[" + ( typeof v === "object" || jQuery.isArray(v) ? i : "" ) + "]", v );
+ }
+ });
+
+ } else if ( !traditional && obj != null && typeof obj === "object" ) {
+ // Serialize object item.
+ jQuery.each( obj, function( k, v ) {
+ buildParams( prefix + "[" + k + "]", v );
+ });
+
+ } else {
+ // Serialize scalar item.
+ add( prefix, obj );
+ }
+ }
+
+ function add( key, value ) {
+ // If value is a function, invoke it and return its value
+ value = jQuery.isFunction(value) ? value() : value;
+ s[ s.length ] = encodeURIComponent(key) + "=" + encodeURIComponent(value);
+ }
+ }
+});
+var elemdisplay = {},
+ rfxtypes = /toggle|show|hide/,
+ rfxnum = /^([+-]=)?([\d+-.]+)(.*)$/,
+ timerId,
+ fxAttrs = [
+ // height animations
+ [ "height", "marginTop", "marginBottom", "paddingTop", "paddingBottom" ],
+ // width animations
+ [ "width", "marginLeft", "marginRight", "paddingLeft", "paddingRight" ],
+ // opacity animations
+ [ "opacity" ]
+ ];
+
+jQuery.fn.extend({
+ show: function( speed, callback ) {
+ if ( speed || speed === 0) {
+ return this.animate( genFx("show", 3), speed, callback);
+
+ } else {
+ for ( var i = 0, l = this.length; i < l; i++ ) {
+ var old = jQuery.data(this[i], "olddisplay");
+
+ this[i].style.display = old || "";
+
+ if ( jQuery.css(this[i], "display") === "none" ) {
+ var nodeName = this[i].nodeName, display;
+
+ if ( elemdisplay[ nodeName ] ) {
+ display = elemdisplay[ nodeName ];
+
+ } else {
+ var elem = jQuery("<" + nodeName + " />").appendTo("body");
+
+ display = elem.css("display");
+
+ if ( display === "none" ) {
+ display = "block";
+ }
+
+ elem.remove();
+
+ elemdisplay[ nodeName ] = display;
+ }
+
+ jQuery.data(this[i], "olddisplay", display);
+ }
+ }
+
+ // Set the display of the elements in a second loop
+ // to avoid the constant reflow
+ for ( var j = 0, k = this.length; j < k; j++ ) {
+ this[j].style.display = jQuery.data(this[j], "olddisplay") || "";
+ }
+
+ return this;
+ }
+ },
+
+ hide: function( speed, callback ) {
+ if ( speed || speed === 0 ) {
+ return this.animate( genFx("hide", 3), speed, callback);
+
+ } else {
+ for ( var i = 0, l = this.length; i < l; i++ ) {
+ var old = jQuery.data(this[i], "olddisplay");
+ if ( !old && old !== "none" ) {
+ jQuery.data(this[i], "olddisplay", jQuery.css(this[i], "display"));
+ }
+ }
+
+ // Set the display of the elements in a second loop
+ // to avoid the constant reflow
+ for ( var j = 0, k = this.length; j < k; j++ ) {
+ this[j].style.display = "none";
+ }
+
+ return this;
+ }
+ },
+
+ // Save the old toggle function
+ _toggle: jQuery.fn.toggle,
+
+ toggle: function( fn, fn2 ) {
+ var bool = typeof fn === "boolean";
+
+ if ( jQuery.isFunction(fn) && jQuery.isFunction(fn2) ) {
+ this._toggle.apply( this, arguments );
+
+ } else if ( fn == null || bool ) {
+ this.each(function() {
+ var state = bool ? fn : jQuery(this).is(":hidden");
+ jQuery(this)[ state ? "show" : "hide" ]();
+ });
+
+ } else {
+ this.animate(genFx("toggle", 3), fn, fn2);
+ }
+
+ return this;
+ },
+
+ fadeTo: function( speed, to, callback ) {
+ return this.filter(":hidden").css("opacity", 0).show().end()
+ .animate({opacity: to}, speed, callback);
+ },
+
+ animate: function( prop, speed, easing, callback ) {
+ var optall = jQuery.speed(speed, easing, callback);
+
+ if ( jQuery.isEmptyObject( prop ) ) {
+ return this.each( optall.complete );
+ }
+
+ return this[ optall.queue === false ? "each" : "queue" ](function() {
+ var opt = jQuery.extend({}, optall), p,
+ hidden = this.nodeType === 1 && jQuery(this).is(":hidden"),
+ self = this;
+
+ for ( p in prop ) {
+ var name = p.replace(rdashAlpha, fcamelCase);
+
+ if ( p !== name ) {
+ prop[ name ] = prop[ p ];
+ delete prop[ p ];
+ p = name;
+ }
+
+ if ( prop[p] === "hide" && hidden || prop[p] === "show" && !hidden ) {
+ return opt.complete.call(this);
+ }
+
+ if ( ( p === "height" || p === "width" ) && this.style ) {
+ // Store display property
+ opt.display = jQuery.css(this, "display");
+
+ // Make sure that nothing sneaks out
+ opt.overflow = this.style.overflow;
+ }
+
+ if ( jQuery.isArray( prop[p] ) ) {
+ // Create (if needed) and add to specialEasing
+ (opt.specialEasing = opt.specialEasing || {})[p] = prop[p][1];
+ prop[p] = prop[p][0];
+ }
+ }
+
+ if ( opt.overflow != null ) {
+ this.style.overflow = "hidden";
+ }
+
+ opt.curAnim = jQuery.extend({}, prop);
+
+ jQuery.each( prop, function( name, val ) {
+ var e = new jQuery.fx( self, opt, name );
+
+ if ( rfxtypes.test(val) ) {
+ e[ val === "toggle" ? hidden ? "show" : "hide" : val ]( prop );
+
+ } else {
+ var parts = rfxnum.exec(val),
+ start = e.cur(true) || 0;
+
+ if ( parts ) {
+ var end = parseFloat( parts[2] ),
+ unit = parts[3] || "px";
+
+ // We need to compute starting value
+ if ( unit !== "px" ) {
+ self.style[ name ] = (end || 1) + unit;
+ start = ((end || 1) / e.cur(true)) * start;
+ self.style[ name ] = start + unit;
+ }
+
+ // If a +=/-= token was provided, we're doing a relative animation
+ if ( parts[1] ) {
+ end = ((parts[1] === "-=" ? -1 : 1) * end) + start;
+ }
+
+ e.custom( start, end, unit );
+
+ } else {
+ e.custom( start, val, "" );
+ }
+ }
+ });
+
+ // For JS strict compliance
+ return true;
+ });
+ },
+
+ stop: function( clearQueue, gotoEnd ) {
+ var timers = jQuery.timers;
+
+ if ( clearQueue ) {
+ this.queue([]);
+ }
+
+ this.each(function() {
+ // go in reverse order so anything added to the queue during the loop is ignored
+ for ( var i = timers.length - 1; i >= 0; i-- ) {
+ if ( timers[i].elem === this ) {
+ if (gotoEnd) {
+ // force the next step to be the last
+ timers[i](true);
+ }
+
+ timers.splice(i, 1);
+ }
+ }
+ });
+
+ // start the next in the queue if the last step wasn't forced
+ if ( !gotoEnd ) {
+ this.dequeue();
+ }
+
+ return this;
+ }
+
+});
+
+// Generate shortcuts for custom animations
+jQuery.each({
+ slideDown: genFx("show", 1),
+ slideUp: genFx("hide", 1),
+ slideToggle: genFx("toggle", 1),
+ fadeIn: { opacity: "show" },
+ fadeOut: { opacity: "hide" }
+}, function( name, props ) {
+ jQuery.fn[ name ] = function( speed, callback ) {
+ return this.animate( props, speed, callback );
+ };
+});
+
+jQuery.extend({
+ speed: function( speed, easing, fn ) {
+ var opt = speed && typeof speed === "object" ? speed : {
+ complete: fn || !fn && easing ||
+ jQuery.isFunction( speed ) && speed,
+ duration: speed,
+ easing: fn && easing || easing && !jQuery.isFunction(easing) && easing
+ };
+
+ opt.duration = jQuery.fx.off ? 0 : typeof opt.duration === "number" ? opt.duration :
+ jQuery.fx.speeds[opt.duration] || jQuery.fx.speeds._default;
+
+ // Queueing
+ opt.old = opt.complete;
+ opt.complete = function() {
+ if ( opt.queue !== false ) {
+ jQuery(this).dequeue();
+ }
+ if ( jQuery.isFunction( opt.old ) ) {
+ opt.old.call( this );
+ }
+ };
+
+ return opt;
+ },
+
+ easing: {
+ linear: function( p, n, firstNum, diff ) {
+ return firstNum + diff * p;
+ },
+ swing: function( p, n, firstNum, diff ) {
+ return ((-Math.cos(p*Math.PI)/2) + 0.5) * diff + firstNum;
+ }
+ },
+
+ timers: [],
+
+ fx: function( elem, options, prop ) {
+ this.options = options;
+ this.elem = elem;
+ this.prop = prop;
+
+ if ( !options.orig ) {
+ options.orig = {};
+ }
+ }
+
+});
+
+jQuery.fx.prototype = {
+ // Simple function for setting a style value
+ update: function() {
+ if ( this.options.step ) {
+ this.options.step.call( this.elem, this.now, this );
+ }
+
+ (jQuery.fx.step[this.prop] || jQuery.fx.step._default)( this );
+
+ // Set display property to block for height/width animations
+ if ( ( this.prop === "height" || this.prop === "width" ) && this.elem.style ) {
+ this.elem.style.display = "block";
+ }
+ },
+
+ // Get the current size
+ cur: function( force ) {
+ if ( this.elem[this.prop] != null && (!this.elem.style || this.elem.style[this.prop] == null) ) {
+ return this.elem[ this.prop ];
+ }
+
+ var r = parseFloat(jQuery.css(this.elem, this.prop, force));
+ return r && r > -10000 ? r : parseFloat(jQuery.curCSS(this.elem, this.prop)) || 0;
+ },
+
+ // Start an animation from one number to another
+ custom: function( from, to, unit ) {
+ this.startTime = now();
+ this.start = from;
+ this.end = to;
+ this.unit = unit || this.unit || "px";
+ this.now = this.start;
+ this.pos = this.state = 0;
+
+ var self = this;
+ function t( gotoEnd ) {
+ return self.step(gotoEnd);
+ }
+
+ t.elem = this.elem;
+
+ if ( t() && jQuery.timers.push(t) && !timerId ) {
+ timerId = setInterval(jQuery.fx.tick, 13);
+ }
+ },
+
+ // Simple 'show' function
+ show: function() {
+ // Remember where we started, so that we can go back to it later
+ this.options.orig[this.prop] = jQuery.style( this.elem, this.prop );
+ this.options.show = true;
+
+ // Begin the animation
+ // Make sure that we start at a small width/height to avoid any
+ // flash of content
+ this.custom(this.prop === "width" || this.prop === "height" ? 1 : 0, this.cur());
+
+ // Start by showing the element
+ jQuery( this.elem ).show();
+ },
+
+ // Simple 'hide' function
+ hide: function() {
+ // Remember where we started, so that we can go back to it later
+ this.options.orig[this.prop] = jQuery.style( this.elem, this.prop );
+ this.options.hide = true;
+
+ // Begin the animation
+ this.custom(this.cur(), 0);
+ },
+
+ // Each step of an animation
+ step: function( gotoEnd ) {
+ var t = now(), done = true;
+
+ if ( gotoEnd || t >= this.options.duration + this.startTime ) {
+ this.now = this.end;
+ this.pos = this.state = 1;
+ this.update();
+
+ this.options.curAnim[ this.prop ] = true;
+
+ for ( var i in this.options.curAnim ) {
+ if ( this.options.curAnim[i] !== true ) {
+ done = false;
+ }
+ }
+
+ if ( done ) {
+ if ( this.options.display != null ) {
+ // Reset the overflow
+ this.elem.style.overflow = this.options.overflow;
+
+ // Reset the display
+ var old = jQuery.data(this.elem, "olddisplay");
+ this.elem.style.display = old ? old : this.options.display;
+
+ if ( jQuery.css(this.elem, "display") === "none" ) {
+ this.elem.style.display = "block";
+ }
+ }
+
+ // Hide the element if the "hide" operation was done
+ if ( this.options.hide ) {
+ jQuery(this.elem).hide();
+ }
+
+ // Reset the properties, if the item has been hidden or shown
+ if ( this.options.hide || this.options.show ) {
+ for ( var p in this.options.curAnim ) {
+ jQuery.style(this.elem, p, this.options.orig[p]);
+ }
+ }
+
+ // Execute the complete function
+ this.options.complete.call( this.elem );
+ }
+
+ return false;
+
+ } else {
+ var n = t - this.startTime;
+ this.state = n / this.options.duration;
+
+ // Perform the easing function, defaults to swing
+ var specialEasing = this.options.specialEasing && this.options.specialEasing[this.prop];
+ var defaultEasing = this.options.easing || (jQuery.easing.swing ? "swing" : "linear");
+ this.pos = jQuery.easing[specialEasing || defaultEasing](this.state, n, 0, 1, this.options.duration);
+ this.now = this.start + ((this.end - this.start) * this.pos);
+
+ // Perform the next step of the animation
+ this.update();
+ }
+
+ return true;
+ }
+};
+
+jQuery.extend( jQuery.fx, {
+ tick: function() {
+ var timers = jQuery.timers;
+
+ for ( var i = 0; i < timers.length; i++ ) {
+ if ( !timers[i]() ) {
+ timers.splice(i--, 1);
+ }
+ }
+
+ if ( !timers.length ) {
+ jQuery.fx.stop();
+ }
+ },
+
+ stop: function() {
+ clearInterval( timerId );
+ timerId = null;
+ },
+
+ speeds: {
+ slow: 600,
+ fast: 200,
+ // Default speed
+ _default: 400
+ },
+
+ step: {
+ opacity: function( fx ) {
+ jQuery.style(fx.elem, "opacity", fx.now);
+ },
+
+ _default: function( fx ) {
+ if ( fx.elem.style && fx.elem.style[ fx.prop ] != null ) {
+ fx.elem.style[ fx.prop ] = (fx.prop === "width" || fx.prop === "height" ? Math.max(0, fx.now) : fx.now) + fx.unit;
+ } else {
+ fx.elem[ fx.prop ] = fx.now;
+ }
+ }
+ }
+});
+
+if ( jQuery.expr && jQuery.expr.filters ) {
+ jQuery.expr.filters.animated = function( elem ) {
+ return jQuery.grep(jQuery.timers, function( fn ) {
+ return elem === fn.elem;
+ }).length;
+ };
+}
+
+function genFx( type, num ) {
+ var obj = {};
+
+ jQuery.each( fxAttrs.concat.apply([], fxAttrs.slice(0,num)), function() {
+ obj[ this ] = type;
+ });
+
+ return obj;
+}
+if ( "getBoundingClientRect" in document.documentElement ) {
+ jQuery.fn.offset = function( options ) {
+ var elem = this[0];
+
+ if ( options ) {
+ return this.each(function( i ) {
+ jQuery.offset.setOffset( this, options, i );
+ });
+ }
+
+ if ( !elem || !elem.ownerDocument ) {
+ return null;
+ }
+
+ if ( elem === elem.ownerDocument.body ) {
+ return jQuery.offset.bodyOffset( elem );
+ }
+
+ var box = elem.getBoundingClientRect(), doc = elem.ownerDocument, body = doc.body, docElem = doc.documentElement,
+ clientTop = docElem.clientTop || body.clientTop || 0, clientLeft = docElem.clientLeft || body.clientLeft || 0,
+ top = box.top + (self.pageYOffset || jQuery.support.boxModel && docElem.scrollTop || body.scrollTop ) - clientTop,
+ left = box.left + (self.pageXOffset || jQuery.support.boxModel && docElem.scrollLeft || body.scrollLeft) - clientLeft;
+
+ return { top: top, left: left };
+ };
+
+} else {
+ jQuery.fn.offset = function( options ) {
+ var elem = this[0];
+
+ if ( options ) {
+ return this.each(function( i ) {
+ jQuery.offset.setOffset( this, options, i );
+ });
+ }
+
+ if ( !elem || !elem.ownerDocument ) {
+ return null;
+ }
+
+ if ( elem === elem.ownerDocument.body ) {
+ return jQuery.offset.bodyOffset( elem );
+ }
+
+ jQuery.offset.initialize();
+
+ var offsetParent = elem.offsetParent, prevOffsetParent = elem,
+ doc = elem.ownerDocument, computedStyle, docElem = doc.documentElement,
+ body = doc.body, defaultView = doc.defaultView,
+ prevComputedStyle = defaultView ? defaultView.getComputedStyle( elem, null ) : elem.currentStyle,
+ top = elem.offsetTop, left = elem.offsetLeft;
+
+ while ( (elem = elem.parentNode) && elem !== body && elem !== docElem ) {
+ if ( jQuery.offset.supportsFixedPosition && prevComputedStyle.position === "fixed" ) {
+ break;
+ }
+
+ computedStyle = defaultView ? defaultView.getComputedStyle(elem, null) : elem.currentStyle;
+ top -= elem.scrollTop;
+ left -= elem.scrollLeft;
+
+ if ( elem === offsetParent ) {
+ top += elem.offsetTop;
+ left += elem.offsetLeft;
+
+ if ( jQuery.offset.doesNotAddBorder && !(jQuery.offset.doesAddBorderForTableAndCells && /^t(able|d|h)$/i.test(elem.nodeName)) ) {
+ top += parseFloat( computedStyle.borderTopWidth ) || 0;
+ left += parseFloat( computedStyle.borderLeftWidth ) || 0;
+ }
+
+ prevOffsetParent = offsetParent, offsetParent = elem.offsetParent;
+ }
+
+ if ( jQuery.offset.subtractsBorderForOverflowNotVisible && computedStyle.overflow !== "visible" ) {
+ top += parseFloat( computedStyle.borderTopWidth ) || 0;
+ left += parseFloat( computedStyle.borderLeftWidth ) || 0;
+ }
+
+ prevComputedStyle = computedStyle;
+ }
+
+ if ( prevComputedStyle.position === "relative" || prevComputedStyle.position === "static" ) {
+ top += body.offsetTop;
+ left += body.offsetLeft;
+ }
+
+ if ( jQuery.offset.supportsFixedPosition && prevComputedStyle.position === "fixed" ) {
+ top += Math.max( docElem.scrollTop, body.scrollTop );
+ left += Math.max( docElem.scrollLeft, body.scrollLeft );
+ }
+
+ return { top: top, left: left };
+ };
+}
+
+jQuery.offset = {
+ initialize: function() {
+ var body = document.body, container = document.createElement("div"), innerDiv, checkDiv, table, td, bodyMarginTop = parseFloat( jQuery.curCSS(body, "marginTop", true) ) || 0,
+ html = "<div style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;'><div></div></div><table style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;' cellpadding='0' cellspacing='0'><tr><td></td></tr></table>";
+
+ jQuery.extend( container.style, { position: "absolute", top: 0, left: 0, margin: 0, border: 0, width: "1px", height: "1px", visibility: "hidden" } );
+
+ container.innerHTML = html;
+ body.insertBefore( container, body.firstChild );
+ innerDiv = container.firstChild;
+ checkDiv = innerDiv.firstChild;
+ td = innerDiv.nextSibling.firstChild.firstChild;
+
+ this.doesNotAddBorder = (checkDiv.offsetTop !== 5);
+ this.doesAddBorderForTableAndCells = (td.offsetTop === 5);
+
+ checkDiv.style.position = "fixed", checkDiv.style.top = "20px";
+ // safari subtracts parent border width here which is 5px
+ this.supportsFixedPosition = (checkDiv.offsetTop === 20 || checkDiv.offsetTop === 15);
+ checkDiv.style.position = checkDiv.style.top = "";
+
+ innerDiv.style.overflow = "hidden", innerDiv.style.position = "relative";
+ this.subtractsBorderForOverflowNotVisible = (checkDiv.offsetTop === -5);
+
+ this.doesNotIncludeMarginInBodyOffset = (body.offsetTop !== bodyMarginTop);
+
+ body.removeChild( container );
+ body = container = innerDiv = checkDiv = table = td = null;
+ jQuery.offset.initialize = jQuery.noop;
+ },
+
+ bodyOffset: function( body ) {
+ var top = body.offsetTop, left = body.offsetLeft;
+
+ jQuery.offset.initialize();
+
+ if ( jQuery.offset.doesNotIncludeMarginInBodyOffset ) {
+ top += parseFloat( jQuery.curCSS(body, "marginTop", true) ) || 0;
+ left += parseFloat( jQuery.curCSS(body, "marginLeft", true) ) || 0;
+ }
+
+ return { top: top, left: left };
+ },
+
+ setOffset: function( elem, options, i ) {
+ // set position first, in-case top/left are set even on static elem
+ if ( /static/.test( jQuery.curCSS( elem, "position" ) ) ) {
+ elem.style.position = "relative";
+ }
+ var curElem = jQuery( elem ),
+ curOffset = curElem.offset(),
+ curTop = parseInt( jQuery.curCSS( elem, "top", true ), 10 ) || 0,
+ curLeft = parseInt( jQuery.curCSS( elem, "left", true ), 10 ) || 0;
+
+ if ( jQuery.isFunction( options ) ) {
+ options = options.call( elem, i, curOffset );
+ }
+
+ var props = {
+ top: (options.top - curOffset.top) + curTop,
+ left: (options.left - curOffset.left) + curLeft
+ };
+
+ if ( "using" in options ) {
+ options.using.call( elem, props );
+ } else {
+ curElem.css( props );
+ }
+ }
+};
+
+
+jQuery.fn.extend({
+ position: function() {
+ if ( !this[0] ) {
+ return null;
+ }
+
+ var elem = this[0],
+
+ // Get *real* offsetParent
+ offsetParent = this.offsetParent(),
+
+ // Get correct offsets
+ offset = this.offset(),
+ parentOffset = /^body|html$/i.test(offsetParent[0].nodeName) ? { top: 0, left: 0 } : offsetParent.offset();
+
+ // Subtract element margins
+ // note: when an element has margin: auto the offsetLeft and marginLeft
+ // are the same in Safari causing offset.left to incorrectly be 0
+ offset.top -= parseFloat( jQuery.curCSS(elem, "marginTop", true) ) || 0;
+ offset.left -= parseFloat( jQuery.curCSS(elem, "marginLeft", true) ) || 0;
+
+ // Add offsetParent borders
+ parentOffset.top += parseFloat( jQuery.curCSS(offsetParent[0], "borderTopWidth", true) ) || 0;
+ parentOffset.left += parseFloat( jQuery.curCSS(offsetParent[0], "borderLeftWidth", true) ) || 0;
+
+ // Subtract the two offsets
+ return {
+ top: offset.top - parentOffset.top,
+ left: offset.left - parentOffset.left
+ };
+ },
+
+ offsetParent: function() {
+ return this.map(function() {
+ var offsetParent = this.offsetParent || document.body;
+ while ( offsetParent && (!/^body|html$/i.test(offsetParent.nodeName) && jQuery.css(offsetParent, "position") === "static") ) {
+ offsetParent = offsetParent.offsetParent;
+ }
+ return offsetParent;
+ });
+ }
+});
+
+
+// Create scrollLeft and scrollTop methods
+jQuery.each( ["Left", "Top"], function( i, name ) {
+ var method = "scroll" + name;
+
+ jQuery.fn[ method ] = function(val) {
+ var elem = this[0], win;
+
+ if ( !elem ) {
+ return null;
+ }
+
+ if ( val !== undefined ) {
+ // Set the scroll offset
+ return this.each(function() {
+ win = getWindow( this );
+
+ if ( win ) {
+ win.scrollTo(
+ !i ? val : jQuery(win).scrollLeft(),
+ i ? val : jQuery(win).scrollTop()
+ );
+
+ } else {
+ this[ method ] = val;
+ }
+ });
+ } else {
+ win = getWindow( elem );
+
+ // Return the scroll offset
+ return win ? ("pageXOffset" in win) ? win[ i ? "pageYOffset" : "pageXOffset" ] :
+ jQuery.support.boxModel && win.document.documentElement[ method ] ||
+ win.document.body[ method ] :
+ elem[ method ];
+ }
+ };
+});
+
+function getWindow( elem ) {
+ return ("scrollTo" in elem && elem.document) ?
+ elem :
+ elem.nodeType === 9 ?
+ elem.defaultView || elem.parentWindow :
+ false;
+}
+// Create innerHeight, innerWidth, outerHeight and outerWidth methods
+jQuery.each([ "Height", "Width" ], function( i, name ) {
+
+ var type = name.toLowerCase();
+
+ // innerHeight and innerWidth
+ jQuery.fn["inner" + name] = function() {
+ return this[0] ?
+ jQuery.css( this[0], type, false, "padding" ) :
+ null;
+ };
+
+ // outerHeight and outerWidth
+ jQuery.fn["outer" + name] = function( margin ) {
+ return this[0] ?
+ jQuery.css( this[0], type, false, margin ? "margin" : "border" ) :
+ null;
+ };
+
+ jQuery.fn[ type ] = function( size ) {
+ // Get window width or height
+ var elem = this[0];
+ if ( !elem ) {
+ return size == null ? null : this;
+ }
+
+ if ( jQuery.isFunction( size ) ) {
+ return this.each(function( i ) {
+ var self = jQuery( this );
+ self[ type ]( size.call( this, i, self[ type ]() ) );
+ });
+ }
+
+ return ("scrollTo" in elem && elem.document) ? // does it walk and quack like a window?
+ // Everyone else use document.documentElement or document.body depending on Quirks vs Standards mode
+ elem.document.compatMode === "CSS1Compat" && elem.document.documentElement[ "client" + name ] ||
+ elem.document.body[ "client" + name ] :
+
+ // Get document width or height
+ (elem.nodeType === 9) ? // is it a document
+ // Either scroll[Width/Height] or offset[Width/Height], whichever is greater
+ Math.max(
+ elem.documentElement["client" + name],
+ elem.body["scroll" + name], elem.documentElement["scroll" + name],
+ elem.body["offset" + name], elem.documentElement["offset" + name]
+ ) :
+
+ // Get or set width or height on the element
+ size === undefined ?
+ // Get width or height on the element
+ jQuery.css( elem, type ) :
+
+ // Set the width or height on the element (default to pixels if value is unitless)
+ this.css( type, typeof size === "string" ? size : size + "px" );
+ };
+
+});
+// Expose jQuery to the global object
+window.jQuery = window.$ = jQuery;
+
+})(window);
diff --git a/bug/bug/jquery-validation-1.8.1/lib/jquery-1.4.4.js b/bug/bug/jquery-validation-1.8.1/lib/jquery-1.4.4.js
new file mode 100644
index 0000000..2ddcf99
--- /dev/null
+++ b/bug/bug/jquery-validation-1.8.1/lib/jquery-1.4.4.js
@@ -0,0 +1,7179 @@
+/*!
+ * jQuery JavaScript Library v1.4.4
+ * http://jquery.com/
+ *
+ * Copyright 2010, John Resig
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * Includes Sizzle.js
+ * http://sizzlejs.com/
+ * Copyright 2010, The Dojo Foundation
+ * Released under the MIT, BSD, and GPL Licenses.
+ *
+ * Date: Thu Nov 11 19:04:53 2010 -0500
+ */
+(function( window, undefined ) {
+
+// Use the correct document accordingly with window argument (sandbox)
+var document = window.document;
+var jQuery = (function() {
+
+// Define a local copy of jQuery
+var jQuery = function( selector, context ) {
+ // The jQuery object is actually just the init constructor 'enhanced'
+ return new jQuery.fn.init( selector, context );
+ },
+
+ // Map over jQuery in case of overwrite
+ _jQuery = window.jQuery,
+
+ // Map over the $ in case of overwrite
+ _$ = window.$,
+
+ // A central reference to the root jQuery(document)
+ rootjQuery,
+
+ // A simple way to check for HTML strings or ID strings
+ // (both of which we optimize for)
+ quickExpr = /^(?:[^<]*(<[\w\W]+>)[^>]*$|#([\w\-]+)$)/,
+
+ // Is it a simple selector
+ isSimple = /^.[^:#\[\.,]*$/,
+
+ // Check if a string has a non-whitespace character in it
+ rnotwhite = /\S/,
+ rwhite = /\s/,
+
+ // Used for trimming whitespace
+ trimLeft = /^\s+/,
+ trimRight = /\s+$/,
+
+ // Check for non-word characters
+ rnonword = /\W/,
+
+ // Check for digits
+ rdigit = /\d/,
+
+ // Match a standalone tag
+ rsingleTag = /^<(\w+)\s*\/?>(?:<\/\1>)?$/,
+
+ // JSON RegExp
+ rvalidchars = /^[\],:{}\s]*$/,
+ rvalidescape = /\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,
+ rvalidtokens = /"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,
+ rvalidbraces = /(?:^|:|,)(?:\s*\[)+/g,
+
+ // Useragent RegExp
+ rwebkit = /(webkit)[ \/]([\w.]+)/,
+ ropera = /(opera)(?:.*version)?[ \/]([\w.]+)/,
+ rmsie = /(msie) ([\w.]+)/,
+ rmozilla = /(mozilla)(?:.*? rv:([\w.]+))?/,
+
+ // Keep a UserAgent string for use with jQuery.browser
+ userAgent = navigator.userAgent,
+
+ // For matching the engine and version of the browser
+ browserMatch,
+
+ // Has the ready events already been bound?
+ readyBound = false,
+
+ // The functions to execute on DOM ready
+ readyList = [],
+
+ // The ready event handler
+ DOMContentLoaded,
+
+ // Save a reference to some core methods
+ toString = Object.prototype.toString,
+ hasOwn = Object.prototype.hasOwnProperty,
+ push = Array.prototype.push,
+ slice = Array.prototype.slice,
+ trim = String.prototype.trim,
+ indexOf = Array.prototype.indexOf,
+
+ // [[Class]] -> type pairs
+ class2type = {};
+
+jQuery.fn = jQuery.prototype = {
+ init: function( selector, context ) {
+ var match, elem, ret, doc;
+
+ // Handle $(""), $(null), or $(undefined)
+ if ( !selector ) {
+ return this;
+ }
+
+ // Handle $(DOMElement)
+ if ( selector.nodeType ) {
+ this.context = this[0] = selector;
+ this.length = 1;
+ return this;
+ }
+
+ // The body element only exists once, optimize finding it
+ if ( selector === "body" && !context && document.body ) {
+ this.context = document;
+ this[0] = document.body;
+ this.selector = "body";
+ this.length = 1;
+ return this;
+ }
+
+ // Handle HTML strings
+ if ( typeof selector === "string" ) {
+ // Are we dealing with HTML string or an ID?
+ match = quickExpr.exec( selector );
+
+ // Verify a match, and that no context was specified for #id
+ if ( match && (match[1] || !context) ) {
+
+ // HANDLE: $(html) -> $(array)
+ if ( match[1] ) {
+ doc = (context ? context.ownerDocument || context : document);
+
+ // If a single string is passed in and it's a single tag
+ // just do a createElement and skip the rest
+ ret = rsingleTag.exec( selector );
+
+ if ( ret ) {
+ if ( jQuery.isPlainObject( context ) ) {
+ selector = [ document.createElement( ret[1] ) ];
+ jQuery.fn.attr.call( selector, context, true );
+
+ } else {
+ selector = [ doc.createElement( ret[1] ) ];
+ }
+
+ } else {
+ ret = jQuery.buildFragment( [ match[1] ], [ doc ] );
+ selector = (ret.cacheable ? ret.fragment.cloneNode(true) : ret.fragment).childNodes;
+ }
+
+ return jQuery.merge( this, selector );
+
+ // HANDLE: $("#id")
+ } else {
+ elem = document.getElementById( match[2] );
+
+ // Check parentNode to catch when Blackberry 4.6 returns
+ // nodes that are no longer in the document #6963
+ if ( elem && elem.parentNode ) {
+ // Handle the case where IE and Opera return items
+ // by name instead of ID
+ if ( elem.id !== match[2] ) {
+ return rootjQuery.find( selector );
+ }
+
+ // Otherwise, we inject the element directly into the jQuery object
+ this.length = 1;
+ this[0] = elem;
+ }
+
+ this.context = document;
+ this.selector = selector;
+ return this;
+ }
+
+ // HANDLE: $("TAG")
+ } else if ( !context && !rnonword.test( selector ) ) {
+ this.selector = selector;
+ this.context = document;
+ selector = document.getElementsByTagName( selector );
+ return jQuery.merge( this, selector );
+
+ // HANDLE: $(expr, $(...))
+ } else if ( !context || context.jquery ) {
+ return (context || rootjQuery).find( selector );
+
+ // HANDLE: $(expr, context)
+ // (which is just equivalent to: $(context).find(expr)
+ } else {
+ return jQuery( context ).find( selector );
+ }
+
+ // HANDLE: $(function)
+ // Shortcut for document ready
+ } else if ( jQuery.isFunction( selector ) ) {
+ return rootjQuery.ready( selector );
+ }
+
+ if (selector.selector !== undefined) {
+ this.selector = selector.selector;
+ this.context = selector.context;
+ }
+
+ return jQuery.makeArray( selector, this );
+ },
+
+ // Start with an empty selector
+ selector: "",
+
+ // The current version of jQuery being used
+ jquery: "1.4.4",
+
+ // The default length of a jQuery object is 0
+ length: 0,
+
+ // The number of elements contained in the matched element set
+ size: function() {
+ return this.length;
+ },
+
+ toArray: function() {
+ return slice.call( this, 0 );
+ },
+
+ // Get the Nth element in the matched element set OR
+ // Get the whole matched element set as a clean array
+ get: function( num ) {
+ return num == null ?
+
+ // Return a 'clean' array
+ this.toArray() :
+
+ // Return just the object
+ ( num < 0 ? this.slice(num)[ 0 ] : this[ num ] );
+ },
+
+ // Take an array of elements and push it onto the stack
+ // (returning the new matched element set)
+ pushStack: function( elems, name, selector ) {
+ // Build a new jQuery matched element set
+ var ret = jQuery();
+
+ if ( jQuery.isArray( elems ) ) {
+ push.apply( ret, elems );
+
+ } else {
+ jQuery.merge( ret, elems );
+ }
+
+ // Add the old object onto the stack (as a reference)
+ ret.prevObject = this;
+
+ ret.context = this.context;
+
+ if ( name === "find" ) {
+ ret.selector = this.selector + (this.selector ? " " : "") + selector;
+ } else if ( name ) {
+ ret.selector = this.selector + "." + name + "(" + selector + ")";
+ }
+
+ // Return the newly-formed element set
+ return ret;
+ },
+
+ // Execute a callback for every element in the matched set.
+ // (You can seed the arguments with an array of args, but this is
+ // only used internally.)
+ each: function( callback, args ) {
+ return jQuery.each( this, callback, args );
+ },
+
+ ready: function( fn ) {
+ // Attach the listeners
+ jQuery.bindReady();
+
+ // If the DOM is already ready
+ if ( jQuery.isReady ) {
+ // Execute the function immediately
+ fn.call( document, jQuery );
+
+ // Otherwise, remember the function for later
+ } else if ( readyList ) {
+ // Add the function to the wait list
+ readyList.push( fn );
+ }
+
+ return this;
+ },
+
+ eq: function( i ) {
+ return i === -1 ?
+ this.slice( i ) :
+ this.slice( i, +i + 1 );
+ },
+
+ first: function() {
+ return this.eq( 0 );
+ },
+
+ last: function() {
+ return this.eq( -1 );
+ },
+
+ slice: function() {
+ return this.pushStack( slice.apply( this, arguments ),
+ "slice", slice.call(arguments).join(",") );
+ },
+
+ map: function( callback ) {
+ return this.pushStack( jQuery.map(this, function( elem, i ) {
+ return callback.call( elem, i, elem );
+ }));
+ },
+
+ end: function() {
+ return this.prevObject || jQuery(null);
+ },
+
+ // For internal use only.
+ // Behaves like an Array's method, not like a jQuery method.
+ push: push,
+ sort: [].sort,
+ splice: [].splice
+};
+
+// Give the init function the jQuery prototype for later instantiation
+jQuery.fn.init.prototype = jQuery.fn;
+
+jQuery.extend = jQuery.fn.extend = function() {
+ var options, name, src, copy, copyIsArray, clone,
+ target = arguments[0] || {},
+ i = 1,
+ length = arguments.length,
+ deep = false;
+
+ // Handle a deep copy situation
+ if ( typeof target === "boolean" ) {
+ deep = target;
+ target = arguments[1] || {};
+ // skip the boolean and the target
+ i = 2;
+ }
+
+ // Handle case when target is a string or something (possible in deep copy)
+ if ( typeof target !== "object" && !jQuery.isFunction(target) ) {
+ target = {};
+ }
+
+ // extend jQuery itself if only one argument is passed
+ if ( length === i ) {
+ target = this;
+ --i;
+ }
+
+ for ( ; i < length; i++ ) {
+ // Only deal with non-null/undefined values
+ if ( (options = arguments[ i ]) != null ) {
+ // Extend the base object
+ for ( name in options ) {
+ src = target[ name ];
+ copy = options[ name ];
+
+ // Prevent never-ending loop
+ if ( target === copy ) {
+ continue;
+ }
+
+ // Recurse if we're merging plain objects or arrays
+ if ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) {
+ if ( copyIsArray ) {
+ copyIsArray = false;
+ clone = src && jQuery.isArray(src) ? src : [];
+
+ } else {
+ clone = src && jQuery.isPlainObject(src) ? src : {};
+ }
+
+ // Never move original objects, clone them
+ target[ name ] = jQuery.extend( deep, clone, copy );
+
+ // Don't bring in undefined values
+ } else if ( copy !== undefined ) {
+ target[ name ] = copy;
+ }
+ }
+ }
+ }
+
+ // Return the modified object
+ return target;
+};
+
+jQuery.extend({
+ noConflict: function( deep ) {
+ window.$ = _$;
+
+ if ( deep ) {
+ window.jQuery = _jQuery;
+ }
+
+ return jQuery;
+ },
+
+ // Is the DOM ready to be used? Set to true once it occurs.
+ isReady: false,
+
+ // A counter to track how many items to wait for before
+ // the ready event fires. See #6781
+ readyWait: 1,
+
+ // Handle when the DOM is ready
+ ready: function( wait ) {
+ // A third-party is pushing the ready event forwards
+ if ( wait === true ) {
+ jQuery.readyWait--;
+ }
+
+ // Make sure that the DOM is not already loaded
+ if ( !jQuery.readyWait || (wait !== true && !jQuery.isReady) ) {
+ // Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).
+ if ( !document.body ) {
+ return setTimeout( jQuery.ready, 1 );
+ }
+
+ // Remember that the DOM is ready
+ jQuery.isReady = true;
+
+ // If a normal DOM Ready event fired, decrement, and wait if need be
+ if ( wait !== true && --jQuery.readyWait > 0 ) {
+ return;
+ }
+
+ // If there are functions bound, to execute
+ if ( readyList ) {
+ // Execute all of them
+ var fn,
+ i = 0,
+ ready = readyList;
+
+ // Reset the list of functions
+ readyList = null;
+
+ while ( (fn = ready[ i++ ]) ) {
+ fn.call( document, jQuery );
+ }
+
+ // Trigger any bound ready events
+ if ( jQuery.fn.trigger ) {
+ jQuery( document ).trigger( "ready" ).unbind( "ready" );
+ }
+ }
+ }
+ },
+
+ bindReady: function() {
+ if ( readyBound ) {
+ return;
+ }
+
+ readyBound = true;
+
+ // Catch cases where $(document).ready() is called after the
+ // browser event has already occurred.
+ if ( document.readyState === "complete" ) {
+ // Handle it asynchronously to allow scripts the opportunity to delay ready
+ return setTimeout( jQuery.ready, 1 );
+ }
+
+ // Mozilla, Opera and webkit nightlies currently support this event
+ if ( document.addEventListener ) {
+ // Use the handy event callback
+ document.addEventListener( "DOMContentLoaded", DOMContentLoaded, false );
+
+ // A fallback to window.onload, that will always work
+ window.addEventListener( "load", jQuery.ready, false );
+
+ // If IE event model is used
+ } else if ( document.attachEvent ) {
+ // ensure firing before onload,
+ // maybe late but safe also for iframes
+ document.attachEvent("onreadystatechange", DOMContentLoaded);
+
+ // A fallback to window.onload, that will always work
+ window.attachEvent( "onload", jQuery.ready );
+
+ // If IE and not a frame
+ // continually check to see if the document is ready
+ var toplevel = false;
+
+ try {
+ toplevel = window.frameElement == null;
+ } catch(e) {}
+
+ if ( document.documentElement.doScroll && toplevel ) {
+ doScrollCheck();
+ }
+ }
+ },
+
+ // See test/unit/core.js for details concerning isFunction.
+ // Since version 1.3, DOM methods and functions like alert
+ // aren't supported. They return false on IE (#2968).
+ isFunction: function( obj ) {
+ return jQuery.type(obj) === "function";
+ },
+
+ isArray: Array.isArray || function( obj ) {
+ return jQuery.type(obj) === "array";
+ },
+
+ // A crude way of determining if an object is a window
+ isWindow: function( obj ) {
+ return obj && typeof obj === "object" && "setInterval" in obj;
+ },
+
+ isNaN: function( obj ) {
+ return obj == null || !rdigit.test( obj ) || isNaN( obj );
+ },
+
+ type: function( obj ) {
+ return obj == null ?
+ String( obj ) :
+ class2type[ toString.call(obj) ] || "object";
+ },
+
+ isPlainObject: function( obj ) {
+ // Must be an Object.
+ // Because of IE, we also have to check the presence of the constructor property.
+ // Make sure that DOM nodes and window objects don't pass through, as well
+ if ( !obj || jQuery.type(obj) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) {
+ return false;
+ }
+
+ // Not own constructor property must be Object
+ if ( obj.constructor &&
+ !hasOwn.call(obj, "constructor") &&
+ !hasOwn.call(obj.constructor.prototype, "isPrototypeOf") ) {
+ return false;
+ }
+
+ // Own properties are enumerated firstly, so to speed up,
+ // if last one is own, then all properties are own.
+
+ var key;
+ for ( key in obj ) {}
+
+ return key === undefined || hasOwn.call( obj, key );
+ },
+
+ isEmptyObject: function( obj ) {
+ for ( var name in obj ) {
+ return false;
+ }
+ return true;
+ },
+
+ error: function( msg ) {
+ throw msg;
+ },
+
+ parseJSON: function( data ) {
+ if ( typeof data !== "string" || !data ) {
+ return null;
+ }
+
+ // Make sure leading/trailing whitespace is removed (IE can't handle it)
+ data = jQuery.trim( data );
+
+ // Make sure the incoming data is actual JSON
+ // Logic borrowed from http://json.org/json2.js
+ if ( rvalidchars.test(data.replace(rvalidescape, "@")
+ .replace(rvalidtokens, "]")
+ .replace(rvalidbraces, "")) ) {
+
+ // Try to use the native JSON parser first
+ return window.JSON && window.JSON.parse ?
+ window.JSON.parse( data ) :
+ (new Function("return " + data))();
+
+ } else {
+ jQuery.error( "Invalid JSON: " + data );
+ }
+ },
+
+ noop: function() {},
+
+ // Evalulates a script in a global context
+ globalEval: function( data ) {
+ if ( data && rnotwhite.test(data) ) {
+ // Inspired by code by Andrea Giammarchi
+ // http://webreflection.blogspot.com/2007/08/global-scope-evaluation-and-dom.html
+ var head = document.getElementsByTagName("head")[0] || document.documentElement,
+ script = document.createElement("script");
+
+ script.type = "text/javascript";
+
+ if ( jQuery.support.scriptEval ) {
+ script.appendChild( document.createTextNode( data ) );
+ } else {
+ script.text = data;
+ }
+
+ // Use insertBefore instead of appendChild to circumvent an IE6 bug.
+ // This arises when a base node is used (#2709).
+ head.insertBefore( script, head.firstChild );
+ head.removeChild( script );
+ }
+ },
+
+ nodeName: function( elem, name ) {
+ return elem.nodeName && elem.nodeName.toUpperCase() === name.toUpperCase();
+ },
+
+ // args is for internal usage only
+ each: function( object, callback, args ) {
+ var name, i = 0,
+ length = object.length,
+ isObj = length === undefined || jQuery.isFunction(object);
+
+ if ( args ) {
+ if ( isObj ) {
+ for ( name in object ) {
+ if ( callback.apply( object[ name ], args ) === false ) {
+ break;
+ }
+ }
+ } else {
+ for ( ; i < length; ) {
+ if ( callback.apply( object[ i++ ], args ) === false ) {
+ break;
+ }
+ }
+ }
+
+ // A special, fast, case for the most common use of each
+ } else {
+ if ( isObj ) {
+ for ( name in object ) {
+ if ( callback.call( object[ name ], name, object[ name ] ) === false ) {
+ break;
+ }
+ }
+ } else {
+ for ( var value = object[0];
+ i < length && callback.call( value, i, value ) !== false; value = object[++i] ) {}
+ }
+ }
+
+ return object;
+ },
+
+ // Use native String.trim function wherever possible
+ trim: trim ?
+ function( text ) {
+ return text == null ?
+ "" :
+ trim.call( text );
+ } :
+
+ // Otherwise use our own trimming functionality
+ function( text ) {
+ return text == null ?
+ "" :
+ text.toString().replace( trimLeft, "" ).replace( trimRight, "" );
+ },
+
+ // results is for internal usage only
+ makeArray: function( array, results ) {
+ var ret = results || [];
+
+ if ( array != null ) {
+ // The window, strings (and functions) also have 'length'
+ // The extra typeof function check is to prevent crashes
+ // in Safari 2 (See: #3039)
+ // Tweaked logic slightly to handle Blackberry 4.7 RegExp issues #6930
+ var type = jQuery.type(array);
+
+ if ( array.length == null || type === "string" || type === "function" || type === "regexp" || jQuery.isWindow( array ) ) {
+ push.call( ret, array );
+ } else {
+ jQuery.merge( ret, array );
+ }
+ }
+
+ return ret;
+ },
+
+ inArray: function( elem, array ) {
+ if ( array.indexOf ) {
+ return array.indexOf( elem );
+ }
+
+ for ( var i = 0, length = array.length; i < length; i++ ) {
+ if ( array[ i ] === elem ) {
+ return i;
+ }
+ }
+
+ return -1;
+ },
+
+ merge: function( first, second ) {
+ var i = first.length,
+ j = 0;
+
+ if ( typeof second.length === "number" ) {
+ for ( var l = second.length; j < l; j++ ) {
+ first[ i++ ] = second[ j ];
+ }
+
+ } else {
+ while ( second[j] !== undefined ) {
+ first[ i++ ] = second[ j++ ];
+ }
+ }
+
+ first.length = i;
+
+ return first;
+ },
+
+ grep: function( elems, callback, inv ) {
+ var ret = [], retVal;
+ inv = !!inv;
+
+ // Go through the array, only saving the items
+ // that pass the validator function
+ for ( var i = 0, length = elems.length; i < length; i++ ) {
+ retVal = !!callback( elems[ i ], i );
+ if ( inv !== retVal ) {
+ ret.push( elems[ i ] );
+ }
+ }
+
+ return ret;
+ },
+
+ // arg is for internal usage only
+ map: function( elems, callback, arg ) {
+ var ret = [], value;
+
+ // Go through the array, translating each of the items to their
+ // new value (or values).
+ for ( var i = 0, length = elems.length; i < length; i++ ) {
+ value = callback( elems[ i ], i, arg );
+
+ if ( value != null ) {
+ ret[ ret.length ] = value;
+ }
+ }
+
+ return ret.concat.apply( [], ret );
+ },
+
+ // A global GUID counter for objects
+ guid: 1,
+
+ proxy: function( fn, proxy, thisObject ) {
+ if ( arguments.length === 2 ) {
+ if ( typeof proxy === "string" ) {
+ thisObject = fn;
+ fn = thisObject[ proxy ];
+ proxy = undefined;
+
+ } else if ( proxy && !jQuery.isFunction( proxy ) ) {
+ thisObject = proxy;
+ proxy = undefined;
+ }
+ }
+
+ if ( !proxy && fn ) {
+ proxy = function() {
+ return fn.apply( thisObject || this, arguments );
+ };
+ }
+
+ // Set the guid of unique handler to the same of original handler, so it can be removed
+ if ( fn ) {
+ proxy.guid = fn.guid = fn.guid || proxy.guid || jQuery.guid++;
+ }
+
+ // So proxy can be declared as an argument
+ return proxy;
+ },
+
+ // Mutifunctional method to get and set values to a collection
+ // The value/s can be optionally by executed if its a function
+ access: function( elems, key, value, exec, fn, pass ) {
+ var length = elems.length;
+
+ // Setting many attributes
+ if ( typeof key === "object" ) {
+ for ( var k in key ) {
+ jQuery.access( elems, k, key[k], exec, fn, value );
+ }
+ return elems;
+ }
+
+ // Setting one attribute
+ if ( value !== undefined ) {
+ // Optionally, function values get executed if exec is true
+ exec = !pass && exec && jQuery.isFunction(value);
+
+ for ( var i = 0; i < length; i++ ) {
+ fn( elems[i], key, exec ? value.call( elems[i], i, fn( elems[i], key ) ) : value, pass );
+ }
+
+ return elems;
+ }
+
+ // Getting an attribute
+ return length ? fn( elems[0], key ) : undefined;
+ },
+
+ now: function() {
+ return (new Date()).getTime();
+ },
+
+ // Use of jQuery.browser is frowned upon.
+ // More details: http://docs.jquery.com/Utilities/jQuery.browser
+ uaMatch: function( ua ) {
+ ua = ua.toLowerCase();
+
+ var match = rwebkit.exec( ua ) ||
+ ropera.exec( ua ) ||
+ rmsie.exec( ua ) ||
+ ua.indexOf("compatible") < 0 && rmozilla.exec( ua ) ||
+ [];
+
+ return { browser: match[1] || "", version: match[2] || "0" };
+ },
+
+ browser: {}
+});
+
+// Populate the class2type map
+jQuery.each("Boolean Number String Function Array Date RegExp Object".split(" "), function(i, name) {
+ class2type[ "[object " + name + "]" ] = name.toLowerCase();
+});
+
+browserMatch = jQuery.uaMatch( userAgent );
+if ( browserMatch.browser ) {
+ jQuery.browser[ browserMatch.browser ] = true;
+ jQuery.browser.version = browserMatch.version;
+}
+
+// Deprecated, use jQuery.browser.webkit instead
+if ( jQuery.browser.webkit ) {
+ jQuery.browser.safari = true;
+}
+
+if ( indexOf ) {
+ jQuery.inArray = function( elem, array ) {
+ return indexOf.call( array, elem );
+ };
+}
+
+// Verify that \s matches non-breaking spaces
+// (IE fails on this test)
+if ( !rwhite.test( "\xA0" ) ) {
+ trimLeft = /^[\s\xA0]+/;
+ trimRight = /[\s\xA0]+$/;
+}
+
+// All jQuery objects should point back to these
+rootjQuery = jQuery(document);
+
+// Cleanup functions for the document ready method
+if ( document.addEventListener ) {
+ DOMContentLoaded = function() {
+ document.removeEventListener( "DOMContentLoaded", DOMContentLoaded, false );
+ jQuery.ready();
+ };
+
+} else if ( document.attachEvent ) {
+ DOMContentLoaded = function() {
+ // Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).
+ if ( document.readyState === "complete" ) {
+ document.detachEvent( "onreadystatechange", DOMContentLoaded );
+ jQuery.ready();
+ }
+ };
+}
+
+// The DOM ready check for Internet Explorer
+function doScrollCheck() {
+ if ( jQuery.isReady ) {
+ return;
+ }
+
+ try {
+ // If IE is used, use the trick by Diego Perini
+ // http://javascript.nwbox.com/IEContentLoaded/
+ document.documentElement.doScroll("left");
+ } catch(e) {
+ setTimeout( doScrollCheck, 1 );
+ return;
+ }
+
+ // and execute any waiting functions
+ jQuery.ready();
+}
+
+// Expose jQuery to the global object
+return (window.jQuery = window.$ = jQuery);
+
+})();
+
+
+(function() {
+
+ jQuery.support = {};
+
+ var root = document.documentElement,
+ script = document.createElement("script"),
+ div = document.createElement("div"),
+ id = "script" + jQuery.now();
+
+ div.style.display = "none";
+ div.innerHTML = " <link/><table></table><a href='/a' style='color:red;float:left;opacity:.55;'>a</a><input type='checkbox'/>";
+
+ var all = div.getElementsByTagName("*"),
+ a = div.getElementsByTagName("a")[0],
+ select = document.createElement("select"),
+ opt = select.appendChild( document.createElement("option") );
+
+ // Can't get basic test support
+ if ( !all || !all.length || !a ) {
+ return;
+ }
+
+ jQuery.support = {
+ // IE strips leading whitespace when .innerHTML is used
+ leadingWhitespace: div.firstChild.nodeType === 3,
+
+ // Make sure that tbody elements aren't automatically inserted
+ // IE will insert them into empty tables
+ tbody: !div.getElementsByTagName("tbody").length,
+
+ // Make sure that link elements get serialized correctly by innerHTML
+ // This requires a wrapper element in IE
+ htmlSerialize: !!div.getElementsByTagName("link").length,
+
+ // Get the style information from getAttribute
+ // (IE uses .cssText insted)
+ style: /red/.test( a.getAttribute("style") ),
+
+ // Make sure that URLs aren't manipulated
+ // (IE normalizes it by default)
+ hrefNormalized: a.getAttribute("href") === "/a",
+
+ // Make sure that element opacity exists
+ // (IE uses filter instead)
+ // Use a regex to work around a WebKit issue. See #5145
+ opacity: /^0.55$/.test( a.style.opacity ),
+
+ // Verify style float existence
+ // (IE uses styleFloat instead of cssFloat)
+ cssFloat: !!a.style.cssFloat,
+
+ // Make sure that if no value is specified for a checkbox
+ // that it defaults to "on".
+ // (WebKit defaults to "" instead)
+ checkOn: div.getElementsByTagName("input")[0].value === "on",
+
+ // Make sure that a selected-by-default option has a working selected property.
+ // (WebKit defaults to false instead of true, IE too, if it's in an optgroup)
+ optSelected: opt.selected,
+
+ // Will be defined later
+ deleteExpando: true,
+ optDisabled: false,
+ checkClone: false,
+ scriptEval: false,
+ noCloneEvent: true,
+ boxModel: null,
+ inlineBlockNeedsLayout: false,
+ shrinkWrapBlocks: false,
+ reliableHiddenOffsets: true
+ };
+
+ // Make sure that the options inside disabled selects aren't marked as disabled
+ // (WebKit marks them as diabled)
+ select.disabled = true;
+ jQuery.support.optDisabled = !opt.disabled;
+
+ script.type = "text/javascript";
+ try {
+ script.appendChild( document.createTextNode( "window." + id + "=1;" ) );
+ } catch(e) {}
+
+ root.insertBefore( script, root.firstChild );
+
+ // Make sure that the execution of code works by injecting a script
+ // tag with appendChild/createTextNode
+ // (IE doesn't support this, fails, and uses .text instead)
+ if ( window[ id ] ) {
+ jQuery.support.scriptEval = true;
+ delete window[ id ];
+ }
+
+ // Test to see if it's possible to delete an expando from an element
+ // Fails in Internet Explorer
+ try {
+ delete script.test;
+
+ } catch(e) {
+ jQuery.support.deleteExpando = false;
+ }
+
+ root.removeChild( script );
+
+ if ( div.attachEvent && div.fireEvent ) {
+ div.attachEvent("onclick", function click() {
+ // Cloning a node shouldn't copy over any
+ // bound event handlers (IE does this)
+ jQuery.support.noCloneEvent = false;
+ div.detachEvent("onclick", click);
+ });
+ div.cloneNode(true).fireEvent("onclick");
+ }
+
+ div = document.createElement("div");
+ div.innerHTML = "<input type='radio' name='radiotest' checked='checked'/>";
+
+ var fragment = document.createDocumentFragment();
+ fragment.appendChild( div.firstChild );
+
+ // WebKit doesn't clone checked state correctly in fragments
+ jQuery.support.checkClone = fragment.cloneNode(true).cloneNode(true).lastChild.checked;
+
+ // Figure out if the W3C box model works as expected
+ // document.body must exist before we can do this
+ jQuery(function() {
+ var div = document.createElement("div");
+ div.style.width = div.style.paddingLeft = "1px";
+
+ document.body.appendChild( div );
+ jQuery.boxModel = jQuery.support.boxModel = div.offsetWidth === 2;
+
+ if ( "zoom" in div.style ) {
+ // Check if natively block-level elements act like inline-block
+ // elements when setting their display to 'inline' and giving
+ // them layout
+ // (IE < 8 does this)
+ div.style.display = "inline";
+ div.style.zoom = 1;
+ jQuery.support.inlineBlockNeedsLayout = div.offsetWidth === 2;
+
+ // Check if elements with layout shrink-wrap their children
+ // (IE 6 does this)
+ div.style.display = "";
+ div.innerHTML = "<div style='width:4px;'></div>";
+ jQuery.support.shrinkWrapBlocks = div.offsetWidth !== 2;
+ }
+
+ div.innerHTML = "<table><tr><td style='padding:0;display:none'></td><td>t</td></tr></table>";
+ var tds = div.getElementsByTagName("td");
+
+ // Check if table cells still have offsetWidth/Height when they are set
+ // to display:none and there are still other visible table cells in a
+ // table row; if so, offsetWidth/Height are not reliable for use when
+ // determining if an element has been hidden directly using
+ // display:none (it is still safe to use offsets if a parent element is
+ // hidden; don safety goggles and see bug #4512 for more information).
+ // (only IE 8 fails this test)
+ jQuery.support.reliableHiddenOffsets = tds[0].offsetHeight === 0;
+
+ tds[0].style.display = "";
+ tds[1].style.display = "none";
+
+ // Check if empty table cells still have offsetWidth/Height
+ // (IE < 8 fail this test)
+ jQuery.support.reliableHiddenOffsets = jQuery.support.reliableHiddenOffsets && tds[0].offsetHeight === 0;
+ div.innerHTML = "";
+
+ document.body.removeChild( div ).style.display = "none";
+ div = tds = null;
+ });
+
+ // Technique from Juriy Zaytsev
+ // http://thinkweb2.com/projects/prototype/detecting-event-support-without-browser-sniffing/
+ var eventSupported = function( eventName ) {
+ var el = document.createElement("div");
+ eventName = "on" + eventName;
+
+ var isSupported = (eventName in el);
+ if ( !isSupported ) {
+ el.setAttribute(eventName, "return;");
+ isSupported = typeof el[eventName] === "function";
+ }
+ el = null;
+
+ return isSupported;
+ };
+
+ jQuery.support.submitBubbles = eventSupported("submit");
+ jQuery.support.changeBubbles = eventSupported("change");
+
+ // release memory in IE
+ root = script = div = all = a = null;
+})();
+
+
+
+var windowData = {},
+ rbrace = /^(?:\{.*\}|\[.*\])$/;
+
+jQuery.extend({
+ cache: {},
+
+ // Please use with caution
+ uuid: 0,
+
+ // Unique for each copy of jQuery on the page
+ expando: "jQuery" + jQuery.now(),
+
+ // The following elements throw uncatchable exceptions if you
+ // attempt to add expando properties to them.
+ noData: {
+ "embed": true,
+ // Ban all objects except for Flash (which handle expandos)
+ "object": "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",
+ "applet": true
+ },
+
+ data: function( elem, name, data ) {
+ if ( !jQuery.acceptData( elem ) ) {
+ return;
+ }
+
+ elem = elem == window ?
+ windowData :
+ elem;
+
+ var isNode = elem.nodeType,
+ id = isNode ? elem[ jQuery.expando ] : null,
+ cache = jQuery.cache, thisCache;
+
+ if ( isNode && !id && typeof name === "string" && data === undefined ) {
+ return;
+ }
+
+ // Get the data from the object directly
+ if ( !isNode ) {
+ cache = elem;
+
+ // Compute a unique ID for the element
+ } else if ( !id ) {
+ elem[ jQuery.expando ] = id = ++jQuery.uuid;
+ }
+
+ // Avoid generating a new cache unless none exists and we
+ // want to manipulate it.
+ if ( typeof name === "object" ) {
+ if ( isNode ) {
+ cache[ id ] = jQuery.extend(cache[ id ], name);
+
+ } else {
+ jQuery.extend( cache, name );
+ }
+
+ } else if ( isNode && !cache[ id ] ) {
+ cache[ id ] = {};
+ }
+
+ thisCache = isNode ? cache[ id ] : cache;
+
+ // Prevent overriding the named cache with undefined values
+ if ( data !== undefined ) {
+ thisCache[ name ] = data;
+ }
+
+ return typeof name === "string" ? thisCache[ name ] : thisCache;
+ },
+
+ removeData: function( elem, name ) {
+ if ( !jQuery.acceptData( elem ) ) {
+ return;
+ }
+
+ elem = elem == window ?
+ windowData :
+ elem;
+
+ var isNode = elem.nodeType,
+ id = isNode ? elem[ jQuery.expando ] : elem,
+ cache = jQuery.cache,
+ thisCache = isNode ? cache[ id ] : id;
+
+ // If we want to remove a specific section of the element's data
+ if ( name ) {
+ if ( thisCache ) {
+ // Remove the section of cache data
+ delete thisCache[ name ];
+
+ // If we've removed all the data, remove the element's cache
+ if ( isNode && jQuery.isEmptyObject(thisCache) ) {
+ jQuery.removeData( elem );
+ }
+ }
+
+ // Otherwise, we want to remove all of the element's data
+ } else {
+ if ( isNode && jQuery.support.deleteExpando ) {
+ delete elem[ jQuery.expando ];
+
+ } else if ( elem.removeAttribute ) {
+ elem.removeAttribute( jQuery.expando );
+
+ // Completely remove the data cache
+ } else if ( isNode ) {
+ delete cache[ id ];
+
+ // Remove all fields from the object
+ } else {
+ for ( var n in elem ) {
+ delete elem[ n ];
+ }
+ }
+ }
+ },
+
+ // A method for determining if a DOM node can handle the data expando
+ acceptData: function( elem ) {
+ if ( elem.nodeName ) {
+ var match = jQuery.noData[ elem.nodeName.toLowerCase() ];
+
+ if ( match ) {
+ return !(match === true || elem.getAttribute("classid") !== match);
+ }
+ }
+
+ return true;
+ }
+});
+
+jQuery.fn.extend({
+ data: function( key, value ) {
+ var data = null;
+
+ if ( typeof key === "undefined" ) {
+ if ( this.length ) {
+ var attr = this[0].attributes, name;
+ data = jQuery.data( this[0] );
+
+ for ( var i = 0, l = attr.length; i < l; i++ ) {
+ name = attr[i].name;
+
+ if ( name.indexOf( "data-" ) === 0 ) {
+ name = name.substr( 5 );
+ dataAttr( this[0], name, data[ name ] );
+ }
+ }
+ }
+
+ return data;
+
+ } else if ( typeof key === "object" ) {
+ return this.each(function() {
+ jQuery.data( this, key );
+ });
+ }
+
+ var parts = key.split(".");
+ parts[1] = parts[1] ? "." + parts[1] : "";
+
+ if ( value === undefined ) {
+ data = this.triggerHandler("getData" + parts[1] + "!", [parts[0]]);
+
+ // Try to fetch any internally stored data first
+ if ( data === undefined && this.length ) {
+ data = jQuery.data( this[0], key );
+ data = dataAttr( this[0], key, data );
+ }
+
+ return data === undefined && parts[1] ?
+ this.data( parts[0] ) :
+ data;
+
+ } else {
+ return this.each(function() {
+ var $this = jQuery( this ),
+ args = [ parts[0], value ];
+
+ $this.triggerHandler( "setData" + parts[1] + "!", args );
+ jQuery.data( this, key, value );
+ $this.triggerHandler( "changeData" + parts[1] + "!", args );
+ });
+ }
+ },
+
+ removeData: function( key ) {
+ return this.each(function() {
+ jQuery.removeData( this, key );
+ });
+ }
+});
+
+function dataAttr( elem, key, data ) {
+ // If nothing was found internally, try to fetch any
+ // data from the HTML5 data-* attribute
+ if ( data === undefined && elem.nodeType === 1 ) {
+ data = elem.getAttribute( "data-" + key );
+
+ if ( typeof data === "string" ) {
+ try {
+ data = data === "true" ? true :
+ data === "false" ? false :
+ data === "null" ? null :
+ !jQuery.isNaN( data ) ? parseFloat( data ) :
+ rbrace.test( data ) ? jQuery.parseJSON( data ) :
+ data;
+ } catch( e ) {}
+
+ // Make sure we set the data so it isn't changed later
+ jQuery.data( elem, key, data );
+
+ } else {
+ data = undefined;
+ }
+ }
+
+ return data;
+}
+
+
+
+
+jQuery.extend({
+ queue: function( elem, type, data ) {
+ if ( !elem ) {
+ return;
+ }
+
+ type = (type || "fx") + "queue";
+ var q = jQuery.data( elem, type );
+
+ // Speed up dequeue by getting out quickly if this is just a lookup
+ if ( !data ) {
+ return q || [];
+ }
+
+ if ( !q || jQuery.isArray(data) ) {
+ q = jQuery.data( elem, type, jQuery.makeArray(data) );
+
+ } else {
+ q.push( data );
+ }
+
+ return q;
+ },
+
+ dequeue: function( elem, type ) {
+ type = type || "fx";
+
+ var queue = jQuery.queue( elem, type ),
+ fn = queue.shift();
+
+ // If the fx queue is dequeued, always remove the progress sentinel
+ if ( fn === "inprogress" ) {
+ fn = queue.shift();
+ }
+
+ if ( fn ) {
+ // Add a progress sentinel to prevent the fx queue from being
+ // automatically dequeued
+ if ( type === "fx" ) {
+ queue.unshift("inprogress");
+ }
+
+ fn.call(elem, function() {
+ jQuery.dequeue(elem, type);
+ });
+ }
+ }
+});
+
+jQuery.fn.extend({
+ queue: function( type, data ) {
+ if ( typeof type !== "string" ) {
+ data = type;
+ type = "fx";
+ }
+
+ if ( data === undefined ) {
+ return jQuery.queue( this[0], type );
+ }
+ return this.each(function( i ) {
+ var queue = jQuery.queue( this, type, data );
+
+ if ( type === "fx" && queue[0] !== "inprogress" ) {
+ jQuery.dequeue( this, type );
+ }
+ });
+ },
+ dequeue: function( type ) {
+ return this.each(function() {
+ jQuery.dequeue( this, type );
+ });
+ },
+
+ // Based off of the plugin by Clint Helfers, with permission.
+ // http://blindsignals.com/index.php/2009/07/jquery-delay/
+ delay: function( time, type ) {
+ time = jQuery.fx ? jQuery.fx.speeds[time] || time : time;
+ type = type || "fx";
+
+ return this.queue( type, function() {
+ var elem = this;
+ setTimeout(function() {
+ jQuery.dequeue( elem, type );
+ }, time );
+ });
+ },
+
+ clearQueue: function( type ) {
+ return this.queue( type || "fx", [] );
+ }
+});
+
+
+
+
+var rclass = /[\n\t]/g,
+ rspaces = /\s+/,
+ rreturn = /\r/g,
+ rspecialurl = /^(?:href|src|style)$/,
+ rtype = /^(?:button|input)$/i,
+ rfocusable = /^(?:button|input|object|select|textarea)$/i,
+ rclickable = /^a(?:rea)?$/i,
+ rradiocheck = /^(?:radio|checkbox)$/i;
+
+jQuery.props = {
+ "for": "htmlFor",
+ "class": "className",
+ readonly: "readOnly",
+ maxlength: "maxLength",
+ cellspacing: "cellSpacing",
+ rowspan: "rowSpan",
+ colspan: "colSpan",
+ tabindex: "tabIndex",
+ usemap: "useMap",
+ frameborder: "frameBorder"
+};
+
+jQuery.fn.extend({
+ attr: function( name, value ) {
+ return jQuery.access( this, name, value, true, jQuery.attr );
+ },
+
+ removeAttr: function( name, fn ) {
+ return this.each(function(){
+ jQuery.attr( this, name, "" );
+ if ( this.nodeType === 1 ) {
+ this.removeAttribute( name );
+ }
+ });
+ },
+
+ addClass: function( value ) {
+ if ( jQuery.isFunction(value) ) {
+ return this.each(function(i) {
+ var self = jQuery(this);
+ self.addClass( value.call(this, i, self.attr("class")) );
+ });
+ }
+
+ if ( value && typeof value === "string" ) {
+ var classNames = (value || "").split( rspaces );
+
+ for ( var i = 0, l = this.length; i < l; i++ ) {
+ var elem = this[i];
+
+ if ( elem.nodeType === 1 ) {
+ if ( !elem.className ) {
+ elem.className = value;
+
+ } else {
+ var className = " " + elem.className + " ",
+ setClass = elem.className;
+
+ for ( var c = 0, cl = classNames.length; c < cl; c++ ) {
+ if ( className.indexOf( " " + classNames[c] + " " ) < 0 ) {
+ setClass += " " + classNames[c];
+ }
+ }
+ elem.className = jQuery.trim( setClass );
+ }
+ }
+ }
+ }
+
+ return this;
+ },
+
+ removeClass: function( value ) {
+ if ( jQuery.isFunction(value) ) {
+ return this.each(function(i) {
+ var self = jQuery(this);
+ self.removeClass( value.call(this, i, self.attr("class")) );
+ });
+ }
+
+ if ( (value && typeof value === "string") || value === undefined ) {
+ var classNames = (value || "").split( rspaces );
+
+ for ( var i = 0, l = this.length; i < l; i++ ) {
+ var elem = this[i];
+
+ if ( elem.nodeType === 1 && elem.className ) {
+ if ( value ) {
+ var className = (" " + elem.className + " ").replace(rclass, " ");
+ for ( var c = 0, cl = classNames.length; c < cl; c++ ) {
+ className = className.replace(" " + classNames[c] + " ", " ");
+ }
+ elem.className = jQuery.trim( className );
+
+ } else {
+ elem.className = "";
+ }
+ }
+ }
+ }
+
+ return this;
+ },
+
+ toggleClass: function( value, stateVal ) {
+ var type = typeof value,
+ isBool = typeof stateVal === "boolean";
+
+ if ( jQuery.isFunction( value ) ) {
+ return this.each(function(i) {
+ var self = jQuery(this);
+ self.toggleClass( value.call(this, i, self.attr("class"), stateVal), stateVal );
+ });
+ }
+
+ return this.each(function() {
+ if ( type === "string" ) {
+ // toggle individual class names
+ var className,
+ i = 0,
+ self = jQuery( this ),
+ state = stateVal,
+ classNames = value.split( rspaces );
+
+ while ( (className = classNames[ i++ ]) ) {
+ // check each className given, space seperated list
+ state = isBool ? state : !self.hasClass( className );
+ self[ state ? "addClass" : "removeClass" ]( className );
+ }
+
+ } else if ( type === "undefined" || type === "boolean" ) {
+ if ( this.className ) {
+ // store className if set
+ jQuery.data( this, "__className__", this.className );
+ }
+
+ // toggle whole className
+ this.className = this.className || value === false ? "" : jQuery.data( this, "__className__" ) || "";
+ }
+ });
+ },
+
+ hasClass: function( selector ) {
+ var className = " " + selector + " ";
+ for ( var i = 0, l = this.length; i < l; i++ ) {
+ if ( (" " + this[i].className + " ").replace(rclass, " ").indexOf( className ) > -1 ) {
+ return true;
+ }
+ }
+
+ return false;
+ },
+
+ val: function( value ) {
+ if ( !arguments.length ) {
+ var elem = this[0];
+
+ if ( elem ) {
+ if ( jQuery.nodeName( elem, "option" ) ) {
+ // attributes.value is undefined in Blackberry 4.7 but
+ // uses .value. See #6932
+ var val = elem.attributes.value;
+ return !val || val.specified ? elem.value : elem.text;
+ }
+
+ // We need to handle select boxes special
+ if ( jQuery.nodeName( elem, "select" ) ) {
+ var index = elem.selectedIndex,
+ values = [],
+ options = elem.options,
+ one = elem.type === "select-one";
+
+ // Nothing was selected
+ if ( index < 0 ) {
+ return null;
+ }
+
+ // Loop through all the selected options
+ for ( var i = one ? index : 0, max = one ? index + 1 : options.length; i < max; i++ ) {
+ var option = options[ i ];
+
+ // Don't return options that are disabled or in a disabled optgroup
+ if ( option.selected && (jQuery.support.optDisabled ? !option.disabled : option.getAttribute("disabled") === null) &&
+ (!option.parentNode.disabled || !jQuery.nodeName( option.parentNode, "optgroup" )) ) {
+
+ // Get the specific value for the option
+ value = jQuery(option).val();
+
+ // We don't need an array for one selects
+ if ( one ) {
+ return value;
+ }
+
+ // Multi-Selects return an array
+ values.push( value );
+ }
+ }
+
+ return values;
+ }
+
+ // Handle the case where in Webkit "" is returned instead of "on" if a value isn't specified
+ if ( rradiocheck.test( elem.type ) && !jQuery.support.checkOn ) {
+ return elem.getAttribute("value") === null ? "on" : elem.value;
+ }
+
+
+ // Everything else, we just grab the value
+ return (elem.value || "").replace(rreturn, "");
+
+ }
+
+ return undefined;
+ }
+
+ var isFunction = jQuery.isFunction(value);
+
+ return this.each(function(i) {
+ var self = jQuery(this), val = value;
+
+ if ( this.nodeType !== 1 ) {
+ return;
+ }
+
+ if ( isFunction ) {
+ val = value.call(this, i, self.val());
+ }
+
+ // Treat null/undefined as ""; convert numbers to string
+ if ( val == null ) {
+ val = "";
+ } else if ( typeof val === "number" ) {
+ val += "";
+ } else if ( jQuery.isArray(val) ) {
+ val = jQuery.map(val, function (value) {
+ return value == null ? "" : value + "";
+ });
+ }
+
+ if ( jQuery.isArray(val) && rradiocheck.test( this.type ) ) {
+ this.checked = jQuery.inArray( self.val(), val ) >= 0;
+
+ } else if ( jQuery.nodeName( this, "select" ) ) {
+ var values = jQuery.makeArray(val);
+
+ jQuery( "option", this ).each(function() {
+ this.selected = jQuery.inArray( jQuery(this).val(), values ) >= 0;
+ });
+
+ if ( !values.length ) {
+ this.selectedIndex = -1;
+ }
+
+ } else {
+ this.value = val;
+ }
+ });
+ }
+});
+
+jQuery.extend({
+ attrFn: {
+ val: true,
+ css: true,
+ html: true,
+ text: true,
+ data: true,
+ width: true,
+ height: true,
+ offset: true
+ },
+
+ attr: function( elem, name, value, pass ) {
+ // don't set attributes on text and comment nodes
+ if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 ) {
+ return undefined;
+ }
+
+ if ( pass && name in jQuery.attrFn ) {
+ return jQuery(elem)[name](value);
+ }
+
+ var notxml = elem.nodeType !== 1 || !jQuery.isXMLDoc( elem ),
+ // Whether we are setting (or getting)
+ set = value !== undefined;
+
+ // Try to normalize/fix the name
+ name = notxml && jQuery.props[ name ] || name;
+
+ // These attributes require special treatment
+ var special = rspecialurl.test( name );
+
+ // Safari mis-reports the default selected property of an option
+ // Accessing the parent's selectedIndex property fixes it
+ if ( name === "selected" && !jQuery.support.optSelected ) {
+ var parent = elem.parentNode;
+ if ( parent ) {
+ parent.selectedIndex;
+
+ // Make sure that it also works with optgroups, see #5701
+ if ( parent.parentNode ) {
+ parent.parentNode.selectedIndex;
+ }
+ }
+ }
+
+ // If applicable, access the attribute via the DOM 0 way
+ // 'in' checks fail in Blackberry 4.7 #6931
+ if ( (name in elem || elem[ name ] !== undefined) && notxml && !special ) {
+ if ( set ) {
+ // We can't allow the type property to be changed (since it causes problems in IE)
+ if ( name === "type" && rtype.test( elem.nodeName ) && elem.parentNode ) {
+ jQuery.error( "type property can't be changed" );
+ }
+
+ if ( value === null ) {
+ if ( elem.nodeType === 1 ) {
+ elem.removeAttribute( name );
+ }
+
+ } else {
+ elem[ name ] = value;
+ }
+ }
+
+ // browsers index elements by id/name on forms, give priority to attributes.
+ if ( jQuery.nodeName( elem, "form" ) && elem.getAttributeNode(name) ) {
+ return elem.getAttributeNode( name ).nodeValue;
+ }
+
+ // elem.tabIndex doesn't always return the correct value when it hasn't been explicitly set
+ // http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/
+ if ( name === "tabIndex" ) {
+ var attributeNode = elem.getAttributeNode( "tabIndex" );
+
+ return attributeNode && attributeNode.specified ?
+ attributeNode.value :
+ rfocusable.test( elem.nodeName ) || rclickable.test( elem.nodeName ) && elem.href ?
+ 0 :
+ undefined;
+ }
+
+ return elem[ name ];
+ }
+
+ if ( !jQuery.support.style && notxml && name === "style" ) {
+ if ( set ) {
+ elem.style.cssText = "" + value;
+ }
+
+ return elem.style.cssText;
+ }
+
+ if ( set ) {
+ // convert the value to a string (all browsers do this but IE) see #1070
+ elem.setAttribute( name, "" + value );
+ }
+
+ // Ensure that missing attributes return undefined
+ // Blackberry 4.7 returns "" from getAttribute #6938
+ if ( !elem.attributes[ name ] && (elem.hasAttribute && !elem.hasAttribute( name )) ) {
+ return undefined;
+ }
+
+ var attr = !jQuery.support.hrefNormalized && notxml && special ?
+ // Some attributes require a special call on IE
+ elem.getAttribute( name, 2 ) :
+ elem.getAttribute( name );
+
+ // Non-existent attributes return null, we normalize to undefined
+ return attr === null ? undefined : attr;
+ }
+});
+
+
+
+
+var rnamespaces = /\.(.*)$/,
+ rformElems = /^(?:textarea|input|select)$/i,
+ rperiod = /\./g,
+ rspace = / /g,
+ rescape = /[^\w\s.|`]/g,
+ fcleanup = function( nm ) {
+ return nm.replace(rescape, "\\$&");
+ },
+ focusCounts = { focusin: 0, focusout: 0 };
+
+/*
+ * A number of helper functions used for managing events.
+ * Many of the ideas behind this code originated from
+ * Dean Edwards' addEvent library.
+ */
+jQuery.event = {
+
+ // Bind an event to an element
+ // Original by Dean Edwards
+ add: function( elem, types, handler, data ) {
+ if ( elem.nodeType === 3 || elem.nodeType === 8 ) {
+ return;
+ }
+
+ // For whatever reason, IE has trouble passing the window object
+ // around, causing it to be cloned in the process
+ if ( jQuery.isWindow( elem ) && ( elem !== window && !elem.frameElement ) ) {
+ elem = window;
+ }
+
+ if ( handler === false ) {
+ handler = returnFalse;
+ } else if ( !handler ) {
+ // Fixes bug #7229. Fix recommended by jdalton
+ return;
+ }
+
+ var handleObjIn, handleObj;
+
+ if ( handler.handler ) {
+ handleObjIn = handler;
+ handler = handleObjIn.handler;
+ }
+
+ // Make sure that the function being executed has a unique ID
+ if ( !handler.guid ) {
+ handler.guid = jQuery.guid++;
+ }
+
+ // Init the element's event structure
+ var elemData = jQuery.data( elem );
+
+ // If no elemData is found then we must be trying to bind to one of the
+ // banned noData elements
+ if ( !elemData ) {
+ return;
+ }
+
+ // Use a key less likely to result in collisions for plain JS objects.
+ // Fixes bug #7150.
+ var eventKey = elem.nodeType ? "events" : "__events__",
+ events = elemData[ eventKey ],
+ eventHandle = elemData.handle;
+
+ if ( typeof events === "function" ) {
+ // On plain objects events is a fn that holds the the data
+ // which prevents this data from being JSON serialized
+ // the function does not need to be called, it just contains the data
+ eventHandle = events.handle;
+ events = events.events;
+
+ } else if ( !events ) {
+ if ( !elem.nodeType ) {
+ // On plain objects, create a fn that acts as the holder
+ // of the values to avoid JSON serialization of event data
+ elemData[ eventKey ] = elemData = function(){};
+ }
+
+ elemData.events = events = {};
+ }
+
+ if ( !eventHandle ) {
+ elemData.handle = eventHandle = function() {
+ // Handle the second event of a trigger and when
+ // an event is called after a page has unloaded
+ return typeof jQuery !== "undefined" && !jQuery.event.triggered ?
+ jQuery.event.handle.apply( eventHandle.elem, arguments ) :
+ undefined;
+ };
+ }
+
+ // Add elem as a property of the handle function
+ // This is to prevent a memory leak with non-native events in IE.
+ eventHandle.elem = elem;
+
+ // Handle multiple events separated by a space
+ // jQuery(...).bind("mouseover mouseout", fn);
+ types = types.split(" ");
+
+ var type, i = 0, namespaces;
+
+ while ( (type = types[ i++ ]) ) {
+ handleObj = handleObjIn ?
+ jQuery.extend({}, handleObjIn) :
+ { handler: handler, data: data };
+
+ // Namespaced event handlers
+ if ( type.indexOf(".") > -1 ) {
+ namespaces = type.split(".");
+ type = namespaces.shift();
+ handleObj.namespace = namespaces.slice(0).sort().join(".");
+
+ } else {
+ namespaces = [];
+ handleObj.namespace = "";
+ }
+
+ handleObj.type = type;
+ if ( !handleObj.guid ) {
+ handleObj.guid = handler.guid;
+ }
+
+ // Get the current list of functions bound to this event
+ var handlers = events[ type ],
+ special = jQuery.event.special[ type ] || {};
+
+ // Init the event handler queue
+ if ( !handlers ) {
+ handlers = events[ type ] = [];
+
+ // Check for a special event handler
+ // Only use addEventListener/attachEvent if the special
+ // events handler returns false
+ if ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) {
+ // Bind the global event handler to the element
+ if ( elem.addEventListener ) {
+ elem.addEventListener( type, eventHandle, false );
+
+ } else if ( elem.attachEvent ) {
+ elem.attachEvent( "on" + type, eventHandle );
+ }
+ }
+ }
+
+ if ( special.add ) {
+ special.add.call( elem, handleObj );
+
+ if ( !handleObj.handler.guid ) {
+ handleObj.handler.guid = handler.guid;
+ }
+ }
+
+ // Add the function to the element's handler list
+ handlers.push( handleObj );
+
+ // Keep track of which events have been used, for global triggering
+ jQuery.event.global[ type ] = true;
+ }
+
+ // Nullify elem to prevent memory leaks in IE
+ elem = null;
+ },
+
+ global: {},
+
+ // Detach an event or set of events from an element
+ remove: function( elem, types, handler, pos ) {
+ // don't do events on text and comment nodes
+ if ( elem.nodeType === 3 || elem.nodeType === 8 ) {
+ return;
+ }
+
+ if ( handler === false ) {
+ handler = returnFalse;
+ }
+
+ var ret, type, fn, j, i = 0, all, namespaces, namespace, special, eventType, handleObj, origType,
+ eventKey = elem.nodeType ? "events" : "__events__",
+ elemData = jQuery.data( elem ),
+ events = elemData && elemData[ eventKey ];
+
+ if ( !elemData || !events ) {
+ return;
+ }
+
+ if ( typeof events === "function" ) {
+ elemData = events;
+ events = events.events;
+ }
+
+ // types is actually an event object here
+ if ( types && types.type ) {
+ handler = types.handler;
+ types = types.type;
+ }
+
+ // Unbind all events for the element
+ if ( !types || typeof types === "string" && types.charAt(0) === "." ) {
+ types = types || "";
+
+ for ( type in events ) {
+ jQuery.event.remove( elem, type + types );
+ }
+
+ return;
+ }
+
+ // Handle multiple events separated by a space
+ // jQuery(...).unbind("mouseover mouseout", fn);
+ types = types.split(" ");
+
+ while ( (type = types[ i++ ]) ) {
+ origType = type;
+ handleObj = null;
+ all = type.indexOf(".") < 0;
+ namespaces = [];
+
+ if ( !all ) {
+ // Namespaced event handlers
+ namespaces = type.split(".");
+ type = namespaces.shift();
+
+ namespace = new RegExp("(^|\\.)" +
+ jQuery.map( namespaces.slice(0).sort(), fcleanup ).join("\\.(?:.*\\.)?") + "(\\.|$)");
+ }
+
+ eventType = events[ type ];
+
+ if ( !eventType ) {
+ continue;
+ }
+
+ if ( !handler ) {
+ for ( j = 0; j < eventType.length; j++ ) {
+ handleObj = eventType[ j ];
+
+ if ( all || namespace.test( handleObj.namespace ) ) {
+ jQuery.event.remove( elem, origType, handleObj.handler, j );
+ eventType.splice( j--, 1 );
+ }
+ }
+
+ continue;
+ }
+
+ special = jQuery.event.special[ type ] || {};
+
+ for ( j = pos || 0; j < eventType.length; j++ ) {
+ handleObj = eventType[ j ];
+
+ if ( handler.guid === handleObj.guid ) {
+ // remove the given handler for the given type
+ if ( all || namespace.test( handleObj.namespace ) ) {
+ if ( pos == null ) {
+ eventType.splice( j--, 1 );
+ }
+
+ if ( special.remove ) {
+ special.remove.call( elem, handleObj );
+ }
+ }
+
+ if ( pos != null ) {
+ break;
+ }
+ }
+ }
+
+ // remove generic event handler if no more handlers exist
+ if ( eventType.length === 0 || pos != null && eventType.length === 1 ) {
+ if ( !special.teardown || special.teardown.call( elem, namespaces ) === false ) {
+ jQuery.removeEvent( elem, type, elemData.handle );
+ }
+
+ ret = null;
+ delete events[ type ];
+ }
+ }
+
+ // Remove the expando if it's no longer used
+ if ( jQuery.isEmptyObject( events ) ) {
+ var handle = elemData.handle;
+ if ( handle ) {
+ handle.elem = null;
+ }
+
+ delete elemData.events;
+ delete elemData.handle;
+
+ if ( typeof elemData === "function" ) {
+ jQuery.removeData( elem, eventKey );
+
+ } else if ( jQuery.isEmptyObject( elemData ) ) {
+ jQuery.removeData( elem );
+ }
+ }
+ },
+
+ // bubbling is internal
+ trigger: function( event, data, elem /*, bubbling */ ) {
+ // Event object or event type
+ var type = event.type || event,
+ bubbling = arguments[3];
+
+ if ( !bubbling ) {
+ event = typeof event === "object" ?
+ // jQuery.Event object
+ event[ jQuery.expando ] ? event :
+ // Object literal
+ jQuery.extend( jQuery.Event(type), event ) :
+ // Just the event type (string)
+ jQuery.Event(type);
+
+ if ( type.indexOf("!") >= 0 ) {
+ event.type = type = type.slice(0, -1);
+ event.exclusive = true;
+ }
+
+ // Handle a global trigger
+ if ( !elem ) {
+ // Don't bubble custom events when global (to avoid too much overhead)
+ event.stopPropagation();
+
+ // Only trigger if we've ever bound an event for it
+ if ( jQuery.event.global[ type ] ) {
+ jQuery.each( jQuery.cache, function() {
+ if ( this.events && this.events[type] ) {
+ jQuery.event.trigger( event, data, this.handle.elem );
+ }
+ });
+ }
+ }
+
+ // Handle triggering a single element
+
+ // don't do events on text and comment nodes
+ if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 ) {
+ return undefined;
+ }
+
+ // Clean up in case it is reused
+ event.result = undefined;
+ event.target = elem;
+
+ // Clone the incoming data, if any
+ data = jQuery.makeArray( data );
+ data.unshift( event );
+ }
+
+ event.currentTarget = elem;
+
+ // Trigger the event, it is assumed that "handle" is a function
+ var handle = elem.nodeType ?
+ jQuery.data( elem, "handle" ) :
+ (jQuery.data( elem, "__events__" ) || {}).handle;
+
+ if ( handle ) {
+ handle.apply( elem, data );
+ }
+
+ var parent = elem.parentNode || elem.ownerDocument;
+
+ // Trigger an inline bound script
+ try {
+ if ( !(elem && elem.nodeName && jQuery.noData[elem.nodeName.toLowerCase()]) ) {
+ if ( elem[ "on" + type ] && elem[ "on" + type ].apply( elem, data ) === false ) {
+ event.result = false;
+ event.preventDefault();
+ }
+ }
+
+ // prevent IE from throwing an error for some elements with some event types, see #3533
+ } catch (inlineError) {}
+
+ if ( !event.isPropagationStopped() && parent ) {
+ jQuery.event.trigger( event, data, parent, true );
+
+ } else if ( !event.isDefaultPrevented() ) {
+ var old,
+ target = event.target,
+ targetType = type.replace( rnamespaces, "" ),
+ isClick = jQuery.nodeName( target, "a" ) && targetType === "click",
+ special = jQuery.event.special[ targetType ] || {};
+
+ if ( (!special._default || special._default.call( elem, event ) === false) &&
+ !isClick && !(target && target.nodeName && jQuery.noData[target.nodeName.toLowerCase()]) ) {
+
+ try {
+ if ( target[ targetType ] ) {
+ // Make sure that we don't accidentally re-trigger the onFOO events
+ old = target[ "on" + targetType ];
+
+ if ( old ) {
+ target[ "on" + targetType ] = null;
+ }
+
+ jQuery.event.triggered = true;
+ target[ targetType ]();
+ }
+
+ // prevent IE from throwing an error for some elements with some event types, see #3533
+ } catch (triggerError) {}
+
+ if ( old ) {
+ target[ "on" + targetType ] = old;
+ }
+
+ jQuery.event.triggered = false;
+ }
+ }
+ },
+
+ handle: function( event ) {
+ var all, handlers, namespaces, namespace_re, events,
+ namespace_sort = [],
+ args = jQuery.makeArray( arguments );
+
+ event = args[0] = jQuery.event.fix( event || window.event );
+ event.currentTarget = this;
+
+ // Namespaced event handlers
+ all = event.type.indexOf(".") < 0 && !event.exclusive;
+
+ if ( !all ) {
+ namespaces = event.type.split(".");
+ event.type = namespaces.shift();
+ namespace_sort = namespaces.slice(0).sort();
+ namespace_re = new RegExp("(^|\\.)" + namespace_sort.join("\\.(?:.*\\.)?") + "(\\.|$)");
+ }
+
+ event.namespace = event.namespace || namespace_sort.join(".");
+
+ events = jQuery.data(this, this.nodeType ? "events" : "__events__");
+
+ if ( typeof events === "function" ) {
+ events = events.events;
+ }
+
+ handlers = (events || {})[ event.type ];
+
+ if ( events && handlers ) {
+ // Clone the handlers to prevent manipulation
+ handlers = handlers.slice(0);
+
+ for ( var j = 0, l = handlers.length; j < l; j++ ) {
+ var handleObj = handlers[ j ];
+
+ // Filter the functions by class
+ if ( all || namespace_re.test( handleObj.namespace ) ) {
+ // Pass in a reference to the handler function itself
+ // So that we can later remove it
+ event.handler = handleObj.handler;
+ event.data = handleObj.data;
+ event.handleObj = handleObj;
+
+ var ret = handleObj.handler.apply( this, args );
+
+ if ( ret !== undefined ) {
+ event.result = ret;
+ if ( ret === false ) {
+ event.preventDefault();
+ event.stopPropagation();
+ }
+ }
+
+ if ( event.isImmediatePropagationStopped() ) {
+ break;
+ }
+ }
+ }
+ }
+
+ return event.result;
+ },
+
+ props: "altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode layerX layerY metaKey newValue offsetX offsetY pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),
+
+ fix: function( event ) {
+ if ( event[ jQuery.expando ] ) {
+ return event;
+ }
+
+ // store a copy of the original event object
+ // and "clone" to set read-only properties
+ var originalEvent = event;
+ event = jQuery.Event( originalEvent );
+
+ for ( var i = this.props.length, prop; i; ) {
+ prop = this.props[ --i ];
+ event[ prop ] = originalEvent[ prop ];
+ }
+
+ // Fix target property, if necessary
+ if ( !event.target ) {
+ // Fixes #1925 where srcElement might not be defined either
+ event.target = event.srcElement || document;
+ }
+
+ // check if target is a textnode (safari)
+ if ( event.target.nodeType === 3 ) {
+ event.target = event.target.parentNode;
+ }
+
+ // Add relatedTarget, if necessary
+ if ( !event.relatedTarget && event.fromElement ) {
+ event.relatedTarget = event.fromElement === event.target ? event.toElement : event.fromElement;
+ }
+
+ // Calculate pageX/Y if missing and clientX/Y available
+ if ( event.pageX == null && event.clientX != null ) {
+ var doc = document.documentElement,
+ body = document.body;
+
+ event.pageX = event.clientX + (doc && doc.scrollLeft || body && body.scrollLeft || 0) - (doc && doc.clientLeft || body && body.clientLeft || 0);
+ event.pageY = event.clientY + (doc && doc.scrollTop || body && body.scrollTop || 0) - (doc && doc.clientTop || body && body.clientTop || 0);
+ }
+
+ // Add which for key events
+ if ( event.which == null && (event.charCode != null || event.keyCode != null) ) {
+ event.which = event.charCode != null ? event.charCode : event.keyCode;
+ }
+
+ // Add metaKey to non-Mac browsers (use ctrl for PC's and Meta for Macs)
+ if ( !event.metaKey && event.ctrlKey ) {
+ event.metaKey = event.ctrlKey;
+ }
+
+ // Add which for click: 1 === left; 2 === middle; 3 === right
+ // Note: button is not normalized, so don't use it
+ if ( !event.which && event.button !== undefined ) {
+ event.which = (event.button & 1 ? 1 : ( event.button & 2 ? 3 : ( event.button & 4 ? 2 : 0 ) ));
+ }
+
+ return event;
+ },
+
+ // Deprecated, use jQuery.guid instead
+ guid: 1E8,
+
+ // Deprecated, use jQuery.proxy instead
+ proxy: jQuery.proxy,
+
+ special: {
+ ready: {
+ // Make sure the ready event is setup
+ setup: jQuery.bindReady,
+ teardown: jQuery.noop
+ },
+
+ live: {
+ add: function( handleObj ) {
+ jQuery.event.add( this,
+ liveConvert( handleObj.origType, handleObj.selector ),
+ jQuery.extend({}, handleObj, {handler: liveHandler, guid: handleObj.handler.guid}) );
+ },
+
+ remove: function( handleObj ) {
+ jQuery.event.remove( this, liveConvert( handleObj.origType, handleObj.selector ), handleObj );
+ }
+ },
+
+ beforeunload: {
+ setup: function( data, namespaces, eventHandle ) {
+ // We only want to do this special case on windows
+ if ( jQuery.isWindow( this ) ) {
+ this.onbeforeunload = eventHandle;
+ }
+ },
+
+ teardown: function( namespaces, eventHandle ) {
+ if ( this.onbeforeunload === eventHandle ) {
+ this.onbeforeunload = null;
+ }
+ }
+ }
+ }
+};
+
+jQuery.removeEvent = document.removeEventListener ?
+ function( elem, type, handle ) {
+ if ( elem.removeEventListener ) {
+ elem.removeEventListener( type, handle, false );
+ }
+ } :
+ function( elem, type, handle ) {
+ if ( elem.detachEvent ) {
+ elem.detachEvent( "on" + type, handle );
+ }
+ };
+
+jQuery.Event = function( src ) {
+ // Allow instantiation without the 'new' keyword
+ if ( !this.preventDefault ) {
+ return new jQuery.Event( src );
+ }
+
+ // Event object
+ if ( src && src.type ) {
+ this.originalEvent = src;
+ this.type = src.type;
+ // Event type
+ } else {
+ this.type = src;
+ }
+
+ // timeStamp is buggy for some events on Firefox(#3843)
+ // So we won't rely on the native value
+ this.timeStamp = jQuery.now();
+
+ // Mark it as fixed
+ this[ jQuery.expando ] = true;
+};
+
+function returnFalse() {
+ return false;
+}
+function returnTrue() {
+ return true;
+}
+
+// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding
+// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html
+jQuery.Event.prototype = {
+ preventDefault: function() {
+ this.isDefaultPrevented = returnTrue;
+
+ var e = this.originalEvent;
+ if ( !e ) {
+ return;
+ }
+
+ // if preventDefault exists run it on the original event
+ if ( e.preventDefault ) {
+ e.preventDefault();
+
+ // otherwise set the returnValue property of the original event to false (IE)
+ } else {
+ e.returnValue = false;
+ }
+ },
+ stopPropagation: function() {
+ this.isPropagationStopped = returnTrue;
+
+ var e = this.originalEvent;
+ if ( !e ) {
+ return;
+ }
+ // if stopPropagation exists run it on the original event
+ if ( e.stopPropagation ) {
+ e.stopPropagation();
+ }
+ // otherwise set the cancelBubble property of the original event to true (IE)
+ e.cancelBubble = true;
+ },
+ stopImmediatePropagation: function() {
+ this.isImmediatePropagationStopped = returnTrue;
+ this.stopPropagation();
+ },
+ isDefaultPrevented: returnFalse,
+ isPropagationStopped: returnFalse,
+ isImmediatePropagationStopped: returnFalse
+};
+
+// Checks if an event happened on an element within another element
+// Used in jQuery.event.special.mouseenter and mouseleave handlers
+var withinElement = function( event ) {
+ // Check if mouse(over|out) are still within the same parent element
+ var parent = event.relatedTarget;
+
+ // Firefox sometimes assigns relatedTarget a XUL element
+ // which we cannot access the parentNode property of
+ try {
+ // Traverse up the tree
+ while ( parent && parent !== this ) {
+ parent = parent.parentNode;
+ }
+
+ if ( parent !== this ) {
+ // set the correct event type
+ event.type = event.data;
+
+ // handle event if we actually just moused on to a non sub-element
+ jQuery.event.handle.apply( this, arguments );
+ }
+
+ // assuming we've left the element since we most likely mousedover a xul element
+ } catch(e) { }
+},
+
+// In case of event delegation, we only need to rename the event.type,
+// liveHandler will take care of the rest.
+delegate = function( event ) {
+ event.type = event.data;
+ jQuery.event.handle.apply( this, arguments );
+};
+
+// Create mouseenter and mouseleave events
+jQuery.each({
+ mouseenter: "mouseover",
+ mouseleave: "mouseout"
+}, function( orig, fix ) {
+ jQuery.event.special[ orig ] = {
+ setup: function( data ) {
+ jQuery.event.add( this, fix, data && data.selector ? delegate : withinElement, orig );
+ },
+ teardown: function( data ) {
+ jQuery.event.remove( this, fix, data && data.selector ? delegate : withinElement );
+ }
+ };
+});
+
+// submit delegation
+if ( !jQuery.support.submitBubbles ) {
+
+ jQuery.event.special.submit = {
+ setup: function( data, namespaces ) {
+ if ( this.nodeName.toLowerCase() !== "form" ) {
+ jQuery.event.add(this, "click.specialSubmit", function( e ) {
+ var elem = e.target,
+ type = elem.type;
+
+ if ( (type === "submit" || type === "image") && jQuery( elem ).closest("form").length ) {
+ e.liveFired = undefined;
+ return trigger( "submit", this, arguments );
+ }
+ });
+
+ jQuery.event.add(this, "keypress.specialSubmit", function( e ) {
+ var elem = e.target,
+ type = elem.type;
+
+ if ( (type === "text" || type === "password") && jQuery( elem ).closest("form").length && e.keyCode === 13 ) {
+ e.liveFired = undefined;
+ return trigger( "submit", this, arguments );
+ }
+ });
+
+ } else {
+ return false;
+ }
+ },
+
+ teardown: function( namespaces ) {
+ jQuery.event.remove( this, ".specialSubmit" );
+ }
+ };
+
+}
+
+// change delegation, happens here so we have bind.
+if ( !jQuery.support.changeBubbles ) {
+
+ var changeFilters,
+
+ getVal = function( elem ) {
+ var type = elem.type, val = elem.value;
+
+ if ( type === "radio" || type === "checkbox" ) {
+ val = elem.checked;
+
+ } else if ( type === "select-multiple" ) {
+ val = elem.selectedIndex > -1 ?
+ jQuery.map( elem.options, function( elem ) {
+ return elem.selected;
+ }).join("-") :
+ "";
+
+ } else if ( elem.nodeName.toLowerCase() === "select" ) {
+ val = elem.selectedIndex;
+ }
+
+ return val;
+ },
+
+ testChange = function testChange( e ) {
+ var elem = e.target, data, val;
+
+ if ( !rformElems.test( elem.nodeName ) || elem.readOnly ) {
+ return;
+ }
+
+ data = jQuery.data( elem, "_change_data" );
+ val = getVal(elem);
+
+ // the current data will be also retrieved by beforeactivate
+ if ( e.type !== "focusout" || elem.type !== "radio" ) {
+ jQuery.data( elem, "_change_data", val );
+ }
+
+ if ( data === undefined || val === data ) {
+ return;
+ }
+
+ if ( data != null || val ) {
+ e.type = "change";
+ e.liveFired = undefined;
+ return jQuery.event.trigger( e, arguments[1], elem );
+ }
+ };
+
+ jQuery.event.special.change = {
+ filters: {
+ focusout: testChange,
+
+ beforedeactivate: testChange,
+
+ click: function( e ) {
+ var elem = e.target, type = elem.type;
+
+ if ( type === "radio" || type === "checkbox" || elem.nodeName.toLowerCase() === "select" ) {
+ return testChange.call( this, e );
+ }
+ },
+
+ // Change has to be called before submit
+ // Keydown will be called before keypress, which is used in submit-event delegation
+ keydown: function( e ) {
+ var elem = e.target, type = elem.type;
+
+ if ( (e.keyCode === 13 && elem.nodeName.toLowerCase() !== "textarea") ||
+ (e.keyCode === 32 && (type === "checkbox" || type === "radio")) ||
+ type === "select-multiple" ) {
+ return testChange.call( this, e );
+ }
+ },
+
+ // Beforeactivate happens also before the previous element is blurred
+ // with this event you can't trigger a change event, but you can store
+ // information
+ beforeactivate: function( e ) {
+ var elem = e.target;
+ jQuery.data( elem, "_change_data", getVal(elem) );
+ }
+ },
+
+ setup: function( data, namespaces ) {
+ if ( this.type === "file" ) {
+ return false;
+ }
+
+ for ( var type in changeFilters ) {
+ jQuery.event.add( this, type + ".specialChange", changeFilters[type] );
+ }
+
+ return rformElems.test( this.nodeName );
+ },
+
+ teardown: function( namespaces ) {
+ jQuery.event.remove( this, ".specialChange" );
+
+ return rformElems.test( this.nodeName );
+ }
+ };
+
+ changeFilters = jQuery.event.special.change.filters;
+
+ // Handle when the input is .focus()'d
+ changeFilters.focus = changeFilters.beforeactivate;
+}
+
+function trigger( type, elem, args ) {
+ args[0].type = type;
+ return jQuery.event.handle.apply( elem, args );
+}
+
+// Create "bubbling" focus and blur events
+if ( document.addEventListener ) {
+ jQuery.each({ focus: "focusin", blur: "focusout" }, function( orig, fix ) {
+ jQuery.event.special[ fix ] = {
+ setup: function() {
+ if ( focusCounts[fix]++ === 0 ) {
+ document.addEventListener( orig, handler, true );
+ }
+ },
+ teardown: function() {
+ if ( --focusCounts[fix] === 0 ) {
+ document.removeEventListener( orig, handler, true );
+ }
+ }
+ };
+
+ function handler( e ) {
+ e = jQuery.event.fix( e );
+ e.type = fix;
+ return jQuery.event.trigger( e, null, e.target );
+ }
+ });
+}
+
+jQuery.each(["bind", "one"], function( i, name ) {
+ jQuery.fn[ name ] = function( type, data, fn ) {
+ // Handle object literals
+ if ( typeof type === "object" ) {
+ for ( var key in type ) {
+ this[ name ](key, data, type[key], fn);
+ }
+ return this;
+ }
+
+ if ( jQuery.isFunction( data ) || data === false ) {
+ fn = data;
+ data = undefined;
+ }
+
+ var handler = name === "one" ? jQuery.proxy( fn, function( event ) {
+ jQuery( this ).unbind( event, handler );
+ return fn.apply( this, arguments );
+ }) : fn;
+
+ if ( type === "unload" && name !== "one" ) {
+ this.one( type, data, fn );
+
+ } else {
+ for ( var i = 0, l = this.length; i < l; i++ ) {
+ jQuery.event.add( this[i], type, handler, data );
+ }
+ }
+
+ return this;
+ };
+});
+
+jQuery.fn.extend({
+ unbind: function( type, fn ) {
+ // Handle object literals
+ if ( typeof type === "object" && !type.preventDefault ) {
+ for ( var key in type ) {
+ this.unbind(key, type[key]);
+ }
+
+ } else {
+ for ( var i = 0, l = this.length; i < l; i++ ) {
+ jQuery.event.remove( this[i], type, fn );
+ }
+ }
+
+ return this;
+ },
+
+ delegate: function( selector, types, data, fn ) {
+ return this.live( types, data, fn, selector );
+ },
+
+ undelegate: function( selector, types, fn ) {
+ if ( arguments.length === 0 ) {
+ return this.unbind( "live" );
+
+ } else {
+ return this.die( types, null, fn, selector );
+ }
+ },
+
+ trigger: function( type, data ) {
+ return this.each(function() {
+ jQuery.event.trigger( type, data, this );
+ });
+ },
+
+ triggerHandler: function( type, data ) {
+ if ( this[0] ) {
+ var event = jQuery.Event( type );
+ event.preventDefault();
+ event.stopPropagation();
+ jQuery.event.trigger( event, data, this[0] );
+ return event.result;
+ }
+ },
+
+ toggle: function( fn ) {
+ // Save reference to arguments for access in closure
+ var args = arguments,
+ i = 1;
+
+ // link all the functions, so any of them can unbind this click handler
+ while ( i < args.length ) {
+ jQuery.proxy( fn, args[ i++ ] );
+ }
+
+ return this.click( jQuery.proxy( fn, function( event ) {
+ // Figure out which function to execute
+ var lastToggle = ( jQuery.data( this, "lastToggle" + fn.guid ) || 0 ) % i;
+ jQuery.data( this, "lastToggle" + fn.guid, lastToggle + 1 );
+
+ // Make sure that clicks stop
+ event.preventDefault();
+
+ // and execute the function
+ return args[ lastToggle ].apply( this, arguments ) || false;
+ }));
+ },
+
+ hover: function( fnOver, fnOut ) {
+ return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );
+ }
+});
+
+var liveMap = {
+ focus: "focusin",
+ blur: "focusout",
+ mouseenter: "mouseover",
+ mouseleave: "mouseout"
+};
+
+jQuery.each(["live", "die"], function( i, name ) {
+ jQuery.fn[ name ] = function( types, data, fn, origSelector /* Internal Use Only */ ) {
+ var type, i = 0, match, namespaces, preType,
+ selector = origSelector || this.selector,
+ context = origSelector ? this : jQuery( this.context );
+
+ if ( typeof types === "object" && !types.preventDefault ) {
+ for ( var key in types ) {
+ context[ name ]( key, data, types[key], selector );
+ }
+
+ return this;
+ }
+
+ if ( jQuery.isFunction( data ) ) {
+ fn = data;
+ data = undefined;
+ }
+
+ types = (types || "").split(" ");
+
+ while ( (type = types[ i++ ]) != null ) {
+ match = rnamespaces.exec( type );
+ namespaces = "";
+
+ if ( match ) {
+ namespaces = match[0];
+ type = type.replace( rnamespaces, "" );
+ }
+
+ if ( type === "hover" ) {
+ types.push( "mouseenter" + namespaces, "mouseleave" + namespaces );
+ continue;
+ }
+
+ preType = type;
+
+ if ( type === "focus" || type === "blur" ) {
+ types.push( liveMap[ type ] + namespaces );
+ type = type + namespaces;
+
+ } else {
+ type = (liveMap[ type ] || type) + namespaces;
+ }
+
+ if ( name === "live" ) {
+ // bind live handler
+ for ( var j = 0, l = context.length; j < l; j++ ) {
+ jQuery.event.add( context[j], "live." + liveConvert( type, selector ),
+ { data: data, selector: selector, handler: fn, origType: type, origHandler: fn, preType: preType } );
+ }
+
+ } else {
+ // unbind live handler
+ context.unbind( "live." + liveConvert( type, selector ), fn );
+ }
+ }
+
+ return this;
+ };
+});
+
+function liveHandler( event ) {
+ var stop, maxLevel, related, match, handleObj, elem, j, i, l, data, close, namespace, ret,
+ elems = [],
+ selectors = [],
+ events = jQuery.data( this, this.nodeType ? "events" : "__events__" );
+
+ if ( typeof events === "function" ) {
+ events = events.events;
+ }
+
+ // Make sure we avoid non-left-click bubbling in Firefox (#3861)
+ if ( event.liveFired === this || !events || !events.live || event.button && event.type === "click" ) {
+ return;
+ }
+
+ if ( event.namespace ) {
+ namespace = new RegExp("(^|\\.)" + event.namespace.split(".").join("\\.(?:.*\\.)?") + "(\\.|$)");
+ }
+
+ event.liveFired = this;
+
+ var live = events.live.slice(0);
+
+ for ( j = 0; j < live.length; j++ ) {
+ handleObj = live[j];
+
+ if ( handleObj.origType.replace( rnamespaces, "" ) === event.type ) {
+ selectors.push( handleObj.selector );
+
+ } else {
+ live.splice( j--, 1 );
+ }
+ }
+
+ match = jQuery( event.target ).closest( selectors, event.currentTarget );
+
+ for ( i = 0, l = match.length; i < l; i++ ) {
+ close = match[i];
+
+ for ( j = 0; j < live.length; j++ ) {
+ handleObj = live[j];
+
+ if ( close.selector === handleObj.selector && (!namespace || namespace.test( handleObj.namespace )) ) {
+ elem = close.elem;
+ related = null;
+
+ // Those two events require additional checking
+ if ( handleObj.preType === "mouseenter" || handleObj.preType === "mouseleave" ) {
+ event.type = handleObj.preType;
+ related = jQuery( event.relatedTarget ).closest( handleObj.selector )[0];
+ }
+
+ if ( !related || related !== elem ) {
+ elems.push({ elem: elem, handleObj: handleObj, level: close.level });
+ }
+ }
+ }
+ }
+
+ for ( i = 0, l = elems.length; i < l; i++ ) {
+ match = elems[i];
+
+ if ( maxLevel && match.level > maxLevel ) {
+ break;
+ }
+
+ event.currentTarget = match.elem;
+ event.data = match.handleObj.data;
+ event.handleObj = match.handleObj;
+
+ ret = match.handleObj.origHandler.apply( match.elem, arguments );
+
+ if ( ret === false || event.isPropagationStopped() ) {
+ maxLevel = match.level;
+
+ if ( ret === false ) {
+ stop = false;
+ }
+ if ( event.isImmediatePropagationStopped() ) {
+ break;
+ }
+ }
+ }
+
+ return stop;
+}
+
+function liveConvert( type, selector ) {
+ return (type && type !== "*" ? type + "." : "") + selector.replace(rperiod, "`").replace(rspace, "&");
+}
+
+jQuery.each( ("blur focus focusin focusout load resize scroll unload click dblclick " +
+ "mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " +
+ "change select submit keydown keypress keyup error").split(" "), function( i, name ) {
+
+ // Handle event binding
+ jQuery.fn[ name ] = function( data, fn ) {
+ if ( fn == null ) {
+ fn = data;
+ data = null;
+ }
+
+ return arguments.length > 0 ?
+ this.bind( name, data, fn ) :
+ this.trigger( name );
+ };
+
+ if ( jQuery.attrFn ) {
+ jQuery.attrFn[ name ] = true;
+ }
+});
+
+// Prevent memory leaks in IE
+// Window isn't included so as not to unbind existing unload events
+// More info:
+// - http://isaacschlueter.com/2006/10/msie-memory-leaks/
+if ( window.attachEvent && !window.addEventListener ) {
+ jQuery(window).bind("unload", function() {
+ for ( var id in jQuery.cache ) {
+ if ( jQuery.cache[ id ].handle ) {
+ // Try/Catch is to handle iframes being unloaded, see #4280
+ try {
+ jQuery.event.remove( jQuery.cache[ id ].handle.elem );
+ } catch(e) {}
+ }
+ }
+ });
+}
+
+
+/*!
+ * Sizzle CSS Selector Engine - v1.0
+ * Copyright 2009, The Dojo Foundation
+ * Released under the MIT, BSD, and GPL Licenses.
+ * More information: http://sizzlejs.com/
+ */
+(function(){
+
+var chunker = /((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,
+ done = 0,
+ toString = Object.prototype.toString,
+ hasDuplicate = false,
+ baseHasDuplicate = true;
+
+// Here we check if the JavaScript engine is using some sort of
+// optimization where it does not always call our comparision
+// function. If that is the case, discard the hasDuplicate value.
+// Thus far that includes Google Chrome.
+[0, 0].sort(function() {
+ baseHasDuplicate = false;
+ return 0;
+});
+
+var Sizzle = function( selector, context, results, seed ) {
+ results = results || [];
+ context = context || document;
+
+ var origContext = context;
+
+ if ( context.nodeType !== 1 && context.nodeType !== 9 ) {
+ return [];
+ }
+
+ if ( !selector || typeof selector !== "string" ) {
+ return results;
+ }
+
+ var m, set, checkSet, extra, ret, cur, pop, i,
+ prune = true,
+ contextXML = Sizzle.isXML( context ),
+ parts = [],
+ soFar = selector;
+
+ // Reset the position of the chunker regexp (start from head)
+ do {
+ chunker.exec( "" );
+ m = chunker.exec( soFar );
+
+ if ( m ) {
+ soFar = m[3];
+
+ parts.push( m[1] );
+
+ if ( m[2] ) {
+ extra = m[3];
+ break;
+ }
+ }
+ } while ( m );
+
+ if ( parts.length > 1 && origPOS.exec( selector ) ) {
+
+ if ( parts.length === 2 && Expr.relative[ parts[0] ] ) {
+ set = posProcess( parts[0] + parts[1], context );
+
+ } else {
+ set = Expr.relative[ parts[0] ] ?
+ [ context ] :
+ Sizzle( parts.shift(), context );
+
+ while ( parts.length ) {
+ selector = parts.shift();
+
+ if ( Expr.relative[ selector ] ) {
+ selector += parts.shift();
+ }
+
+ set = posProcess( selector, set );
+ }
+ }
+
+ } else {
+ // Take a shortcut and set the context if the root selector is an ID
+ // (but not if it'll be faster if the inner selector is an ID)
+ if ( !seed && parts.length > 1 && context.nodeType === 9 && !contextXML &&
+ Expr.match.ID.test(parts[0]) && !Expr.match.ID.test(parts[parts.length - 1]) ) {
+
+ ret = Sizzle.find( parts.shift(), context, contextXML );
+ context = ret.expr ?
+ Sizzle.filter( ret.expr, ret.set )[0] :
+ ret.set[0];
+ }
+
+ if ( context ) {
+ ret = seed ?
+ { expr: parts.pop(), set: makeArray(seed) } :
+ Sizzle.find( parts.pop(), parts.length === 1 && (parts[0] === "~" || parts[0] === "+") && context.parentNode ? context.parentNode : context, contextXML );
+
+ set = ret.expr ?
+ Sizzle.filter( ret.expr, ret.set ) :
+ ret.set;
+
+ if ( parts.length > 0 ) {
+ checkSet = makeArray( set );
+
+ } else {
+ prune = false;
+ }
+
+ while ( parts.length ) {
+ cur = parts.pop();
+ pop = cur;
+
+ if ( !Expr.relative[ cur ] ) {
+ cur = "";
+ } else {
+ pop = parts.pop();
+ }
+
+ if ( pop == null ) {
+ pop = context;
+ }
+
+ Expr.relative[ cur ]( checkSet, pop, contextXML );
+ }
+
+ } else {
+ checkSet = parts = [];
+ }
+ }
+
+ if ( !checkSet ) {
+ checkSet = set;
+ }
+
+ if ( !checkSet ) {
+ Sizzle.error( cur || selector );
+ }
+
+ if ( toString.call(checkSet) === "[object Array]" ) {
+ if ( !prune ) {
+ results.push.apply( results, checkSet );
+
+ } else if ( context && context.nodeType === 1 ) {
+ for ( i = 0; checkSet[i] != null; i++ ) {
+ if ( checkSet[i] && (checkSet[i] === true || checkSet[i].nodeType === 1 && Sizzle.contains(context, checkSet[i])) ) {
+ results.push( set[i] );
+ }
+ }
+
+ } else {
+ for ( i = 0; checkSet[i] != null; i++ ) {
+ if ( checkSet[i] && checkSet[i].nodeType === 1 ) {
+ results.push( set[i] );
+ }
+ }
+ }
+
+ } else {
+ makeArray( checkSet, results );
+ }
+
+ if ( extra ) {
+ Sizzle( extra, origContext, results, seed );
+ Sizzle.uniqueSort( results );
+ }
+
+ return results;
+};
+
+Sizzle.uniqueSort = function( results ) {
+ if ( sortOrder ) {
+ hasDuplicate = baseHasDuplicate;
+ results.sort( sortOrder );
+
+ if ( hasDuplicate ) {
+ for ( var i = 1; i < results.length; i++ ) {
+ if ( results[i] === results[ i - 1 ] ) {
+ results.splice( i--, 1 );
+ }
+ }
+ }
+ }
+
+ return results;
+};
+
+Sizzle.matches = function( expr, set ) {
+ return Sizzle( expr, null, null, set );
+};
+
+Sizzle.matchesSelector = function( node, expr ) {
+ return Sizzle( expr, null, null, [node] ).length > 0;
+};
+
+Sizzle.find = function( expr, context, isXML ) {
+ var set;
+
+ if ( !expr ) {
+ return [];
+ }
+
+ for ( var i = 0, l = Expr.order.length; i < l; i++ ) {
+ var match,
+ type = Expr.order[i];
+
+ if ( (match = Expr.leftMatch[ type ].exec( expr )) ) {
+ var left = match[1];
+ match.splice( 1, 1 );
+
+ if ( left.substr( left.length - 1 ) !== "\\" ) {
+ match[1] = (match[1] || "").replace(/\\/g, "");
+ set = Expr.find[ type ]( match, context, isXML );
+
+ if ( set != null ) {
+ expr = expr.replace( Expr.match[ type ], "" );
+ break;
+ }
+ }
+ }
+ }
+
+ if ( !set ) {
+ set = context.getElementsByTagName( "*" );
+ }
+
+ return { set: set, expr: expr };
+};
+
+Sizzle.filter = function( expr, set, inplace, not ) {
+ var match, anyFound,
+ old = expr,
+ result = [],
+ curLoop = set,
+ isXMLFilter = set && set[0] && Sizzle.isXML( set[0] );
+
+ while ( expr && set.length ) {
+ for ( var type in Expr.filter ) {
+ if ( (match = Expr.leftMatch[ type ].exec( expr )) != null && match[2] ) {
+ var found, item,
+ filter = Expr.filter[ type ],
+ left = match[1];
+
+ anyFound = false;
+
+ match.splice(1,1);
+
+ if ( left.substr( left.length - 1 ) === "\\" ) {
+ continue;
+ }
+
+ if ( curLoop === result ) {
+ result = [];
+ }
+
+ if ( Expr.preFilter[ type ] ) {
+ match = Expr.preFilter[ type ]( match, curLoop, inplace, result, not, isXMLFilter );
+
+ if ( !match ) {
+ anyFound = found = true;
+
+ } else if ( match === true ) {
+ continue;
+ }
+ }
+
+ if ( match ) {
+ for ( var i = 0; (item = curLoop[i]) != null; i++ ) {
+ if ( item ) {
+ found = filter( item, match, i, curLoop );
+ var pass = not ^ !!found;
+
+ if ( inplace && found != null ) {
+ if ( pass ) {
+ anyFound = true;
+
+ } else {
+ curLoop[i] = false;
+ }
+
+ } else if ( pass ) {
+ result.push( item );
+ anyFound = true;
+ }
+ }
+ }
+ }
+
+ if ( found !== undefined ) {
+ if ( !inplace ) {
+ curLoop = result;
+ }
+
+ expr = expr.replace( Expr.match[ type ], "" );
+
+ if ( !anyFound ) {
+ return [];
+ }
+
+ break;
+ }
+ }
+ }
+
+ // Improper expression
+ if ( expr === old ) {
+ if ( anyFound == null ) {
+ Sizzle.error( expr );
+
+ } else {
+ break;
+ }
+ }
+
+ old = expr;
+ }
+
+ return curLoop;
+};
+
+Sizzle.error = function( msg ) {
+ throw "Syntax error, unrecognized expression: " + msg;
+};
+
+var Expr = Sizzle.selectors = {
+ order: [ "ID", "NAME", "TAG" ],
+
+ match: {
+ ID: /#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,
+ CLASS: /\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,
+ NAME: /\[name=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*\]/,
+ ATTR: /\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/,
+ TAG: /^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/,
+ CHILD: /:(only|nth|last|first)-child(?:\((even|odd|[\dn+\-]*)\))?/,
+ POS: /:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/,
+ PSEUDO: /:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/
+ },
+
+ leftMatch: {},
+
+ attrMap: {
+ "class": "className",
+ "for": "htmlFor"
+ },
+
+ attrHandle: {
+ href: function( elem ) {
+ return elem.getAttribute( "href" );
+ }
+ },
+
+ relative: {
+ "+": function(checkSet, part){
+ var isPartStr = typeof part === "string",
+ isTag = isPartStr && !/\W/.test( part ),
+ isPartStrNotTag = isPartStr && !isTag;
+
+ if ( isTag ) {
+ part = part.toLowerCase();
+ }
+
+ for ( var i = 0, l = checkSet.length, elem; i < l; i++ ) {
+ if ( (elem = checkSet[i]) ) {
+ while ( (elem = elem.previousSibling) && elem.nodeType !== 1 ) {}
+
+ checkSet[i] = isPartStrNotTag || elem && elem.nodeName.toLowerCase() === part ?
+ elem || false :
+ elem === part;
+ }
+ }
+
+ if ( isPartStrNotTag ) {
+ Sizzle.filter( part, checkSet, true );
+ }
+ },
+
+ ">": function( checkSet, part ) {
+ var elem,
+ isPartStr = typeof part === "string",
+ i = 0,
+ l = checkSet.length;
+
+ if ( isPartStr && !/\W/.test( part ) ) {
+ part = part.toLowerCase();
+
+ for ( ; i < l; i++ ) {
+ elem = checkSet[i];
+
+ if ( elem ) {
+ var parent = elem.parentNode;
+ checkSet[i] = parent.nodeName.toLowerCase() === part ? parent : false;
+ }
+ }
+
+ } else {
+ for ( ; i < l; i++ ) {
+ elem = checkSet[i];
+
+ if ( elem ) {
+ checkSet[i] = isPartStr ?
+ elem.parentNode :
+ elem.parentNode === part;
+ }
+ }
+
+ if ( isPartStr ) {
+ Sizzle.filter( part, checkSet, true );
+ }
+ }
+ },
+
+ "": function(checkSet, part, isXML){
+ var nodeCheck,
+ doneName = done++,
+ checkFn = dirCheck;
+
+ if ( typeof part === "string" && !/\W/.test(part) ) {
+ part = part.toLowerCase();
+ nodeCheck = part;
+ checkFn = dirNodeCheck;
+ }
+
+ checkFn( "parentNode", part, doneName, checkSet, nodeCheck, isXML );
+ },
+
+ "~": function( checkSet, part, isXML ) {
+ var nodeCheck,
+ doneName = done++,
+ checkFn = dirCheck;
+
+ if ( typeof part === "string" && !/\W/.test( part ) ) {
+ part = part.toLowerCase();
+ nodeCheck = part;
+ checkFn = dirNodeCheck;
+ }
+
+ checkFn( "previousSibling", part, doneName, checkSet, nodeCheck, isXML );
+ }
+ },
+
+ find: {
+ ID: function( match, context, isXML ) {
+ if ( typeof context.getElementById !== "undefined" && !isXML ) {
+ var m = context.getElementById(match[1]);
+ // Check parentNode to catch when Blackberry 4.6 returns
+ // nodes that are no longer in the document #6963
+ return m && m.parentNode ? [m] : [];
+ }
+ },
+
+ NAME: function( match, context ) {
+ if ( typeof context.getElementsByName !== "undefined" ) {
+ var ret = [],
+ results = context.getElementsByName( match[1] );
+
+ for ( var i = 0, l = results.length; i < l; i++ ) {
+ if ( results[i].getAttribute("name") === match[1] ) {
+ ret.push( results[i] );
+ }
+ }
+
+ return ret.length === 0 ? null : ret;
+ }
+ },
+
+ TAG: function( match, context ) {
+ return context.getElementsByTagName( match[1] );
+ }
+ },
+ preFilter: {
+ CLASS: function( match, curLoop, inplace, result, not, isXML ) {
+ match = " " + match[1].replace(/\\/g, "") + " ";
+
+ if ( isXML ) {
+ return match;
+ }
+
+ for ( var i = 0, elem; (elem = curLoop[i]) != null; i++ ) {
+ if ( elem ) {
+ if ( not ^ (elem.className && (" " + elem.className + " ").replace(/[\t\n]/g, " ").indexOf(match) >= 0) ) {
+ if ( !inplace ) {
+ result.push( elem );
+ }
+
+ } else if ( inplace ) {
+ curLoop[i] = false;
+ }
+ }
+ }
+
+ return false;
+ },
+
+ ID: function( match ) {
+ return match[1].replace(/\\/g, "");
+ },
+
+ TAG: function( match, curLoop ) {
+ return match[1].toLowerCase();
+ },
+
+ CHILD: function( match ) {
+ if ( match[1] === "nth" ) {
+ // parse equations like 'even', 'odd', '5', '2n', '3n+2', '4n-1', '-n+6'
+ var test = /(-?)(\d*)n((?:\+|-)?\d*)/.exec(
+ match[2] === "even" && "2n" || match[2] === "odd" && "2n+1" ||
+ !/\D/.test( match[2] ) && "0n+" + match[2] || match[2]);
+
+ // calculate the numbers (first)n+(last) including if they are negative
+ match[2] = (test[1] + (test[2] || 1)) - 0;
+ match[3] = test[3] - 0;
+ }
+
+ // TODO: Move to normal caching system
+ match[0] = done++;
+
+ return match;
+ },
+
+ ATTR: function( match, curLoop, inplace, result, not, isXML ) {
+ var name = match[1].replace(/\\/g, "");
+
+ if ( !isXML && Expr.attrMap[name] ) {
+ match[1] = Expr.attrMap[name];
+ }
+
+ if ( match[2] === "~=" ) {
+ match[4] = " " + match[4] + " ";
+ }
+
+ return match;
+ },
+
+ PSEUDO: function( match, curLoop, inplace, result, not ) {
+ if ( match[1] === "not" ) {
+ // If we're dealing with a complex expression, or a simple one
+ if ( ( chunker.exec(match[3]) || "" ).length > 1 || /^\w/.test(match[3]) ) {
+ match[3] = Sizzle(match[3], null, null, curLoop);
+
+ } else {
+ var ret = Sizzle.filter(match[3], curLoop, inplace, true ^ not);
+
+ if ( !inplace ) {
+ result.push.apply( result, ret );
+ }
+
+ return false;
+ }
+
+ } else if ( Expr.match.POS.test( match[0] ) || Expr.match.CHILD.test( match[0] ) ) {
+ return true;
+ }
+
+ return match;
+ },
+
+ POS: function( match ) {
+ match.unshift( true );
+
+ return match;
+ }
+ },
+
+ filters: {
+ enabled: function( elem ) {
+ return elem.disabled === false && elem.type !== "hidden";
+ },
+
+ disabled: function( elem ) {
+ return elem.disabled === true;
+ },
+
+ checked: function( elem ) {
+ return elem.checked === true;
+ },
+
+ selected: function( elem ) {
+ // Accessing this property makes selected-by-default
+ // options in Safari work properly
+ elem.parentNode.selectedIndex;
+
+ return elem.selected === true;
+ },
+
+ parent: function( elem ) {
+ return !!elem.firstChild;
+ },
+
+ empty: function( elem ) {
+ return !elem.firstChild;
+ },
+
+ has: function( elem, i, match ) {
+ return !!Sizzle( match[3], elem ).length;
+ },
+
+ header: function( elem ) {
+ return (/h\d/i).test( elem.nodeName );
+ },
+
+ text: function( elem ) {
+ return "text" === elem.type;
+ },
+ radio: function( elem ) {
+ return "radio" === elem.type;
+ },
+
+ checkbox: function( elem ) {
+ return "checkbox" === elem.type;
+ },
+
+ file: function( elem ) {
+ return "file" === elem.type;
+ },
+ password: function( elem ) {
+ return "password" === elem.type;
+ },
+
+ submit: function( elem ) {
+ return "submit" === elem.type;
+ },
+
+ image: function( elem ) {
+ return "image" === elem.type;
+ },
+
+ reset: function( elem ) {
+ return "reset" === elem.type;
+ },
+
+ button: function( elem ) {
+ return "button" === elem.type || elem.nodeName.toLowerCase() === "button";
+ },
+
+ input: function( elem ) {
+ return (/input|select|textarea|button/i).test( elem.nodeName );
+ }
+ },
+ setFilters: {
+ first: function( elem, i ) {
+ return i === 0;
+ },
+
+ last: function( elem, i, match, array ) {
+ return i === array.length - 1;
+ },
+
+ even: function( elem, i ) {
+ return i % 2 === 0;
+ },
+
+ odd: function( elem, i ) {
+ return i % 2 === 1;
+ },
+
+ lt: function( elem, i, match ) {
+ return i < match[3] - 0;
+ },
+
+ gt: function( elem, i, match ) {
+ return i > match[3] - 0;
+ },
+
+ nth: function( elem, i, match ) {
+ return match[3] - 0 === i;
+ },
+
+ eq: function( elem, i, match ) {
+ return match[3] - 0 === i;
+ }
+ },
+ filter: {
+ PSEUDO: function( elem, match, i, array ) {
+ var name = match[1],
+ filter = Expr.filters[ name ];
+
+ if ( filter ) {
+ return filter( elem, i, match, array );
+
+ } else if ( name === "contains" ) {
+ return (elem.textContent || elem.innerText || Sizzle.getText([ elem ]) || "").indexOf(match[3]) >= 0;
+
+ } else if ( name === "not" ) {
+ var not = match[3];
+
+ for ( var j = 0, l = not.length; j < l; j++ ) {
+ if ( not[j] === elem ) {
+ return false;
+ }
+ }
+
+ return true;
+
+ } else {
+ Sizzle.error( "Syntax error, unrecognized expression: " + name );
+ }
+ },
+
+ CHILD: function( elem, match ) {
+ var type = match[1],
+ node = elem;
+
+ switch ( type ) {
+ case "only":
+ case "first":
+ while ( (node = node.previousSibling) ) {
+ if ( node.nodeType === 1 ) {
+ return false;
+ }
+ }
+
+ if ( type === "first" ) {
+ return true;
+ }
+
+ node = elem;
+
+ case "last":
+ while ( (node = node.nextSibling) ) {
+ if ( node.nodeType === 1 ) {
+ return false;
+ }
+ }
+
+ return true;
+
+ case "nth":
+ var first = match[2],
+ last = match[3];
+
+ if ( first === 1 && last === 0 ) {
+ return true;
+ }
+
+ var doneName = match[0],
+ parent = elem.parentNode;
+
+ if ( parent && (parent.sizcache !== doneName || !elem.nodeIndex) ) {
+ var count = 0;
+
+ for ( node = parent.firstChild; node; node = node.nextSibling ) {
+ if ( node.nodeType === 1 ) {
+ node.nodeIndex = ++count;
+ }
+ }
+
+ parent.sizcache = doneName;
+ }
+
+ var diff = elem.nodeIndex - last;
+
+ if ( first === 0 ) {
+ return diff === 0;
+
+ } else {
+ return ( diff % first === 0 && diff / first >= 0 );
+ }
+ }
+ },
+
+ ID: function( elem, match ) {
+ return elem.nodeType === 1 && elem.getAttribute("id") === match;
+ },
+
+ TAG: function( elem, match ) {
+ return (match === "*" && elem.nodeType === 1) || elem.nodeName.toLowerCase() === match;
+ },
+
+ CLASS: function( elem, match ) {
+ return (" " + (elem.className || elem.getAttribute("class")) + " ")
+ .indexOf( match ) > -1;
+ },
+
+ ATTR: function( elem, match ) {
+ var name = match[1],
+ result = Expr.attrHandle[ name ] ?
+ Expr.attrHandle[ name ]( elem ) :
+ elem[ name ] != null ?
+ elem[ name ] :
+ elem.getAttribute( name ),
+ value = result + "",
+ type = match[2],
+ check = match[4];
+
+ return result == null ?
+ type === "!=" :
+ type === "=" ?
+ value === check :
+ type === "*=" ?
+ value.indexOf(check) >= 0 :
+ type === "~=" ?
+ (" " + value + " ").indexOf(check) >= 0 :
+ !check ?
+ value && result !== false :
+ type === "!=" ?
+ value !== check :
+ type === "^=" ?
+ value.indexOf(check) === 0 :
+ type === "$=" ?
+ value.substr(value.length - check.length) === check :
+ type === "|=" ?
+ value === check || value.substr(0, check.length + 1) === check + "-" :
+ false;
+ },
+
+ POS: function( elem, match, i, array ) {
+ var name = match[2],
+ filter = Expr.setFilters[ name ];
+
+ if ( filter ) {
+ return filter( elem, i, match, array );
+ }
+ }
+ }
+};
+
+var origPOS = Expr.match.POS,
+ fescape = function(all, num){
+ return "\\" + (num - 0 + 1);
+ };
+
+for ( var type in Expr.match ) {
+ Expr.match[ type ] = new RegExp( Expr.match[ type ].source + (/(?![^\[]*\])(?![^\(]*\))/.source) );
+ Expr.leftMatch[ type ] = new RegExp( /(^(?:.|\r|\n)*?)/.source + Expr.match[ type ].source.replace(/\\(\d+)/g, fescape) );
+}
+
+var makeArray = function( array, results ) {
+ array = Array.prototype.slice.call( array, 0 );
+
+ if ( results ) {
+ results.push.apply( results, array );
+ return results;
+ }
+
+ return array;
+};
+
+// Perform a simple check to determine if the browser is capable of
+// converting a NodeList to an array using builtin methods.
+// Also verifies that the returned array holds DOM nodes
+// (which is not the case in the Blackberry browser)
+try {
+ Array.prototype.slice.call( document.documentElement.childNodes, 0 )[0].nodeType;
+
+// Provide a fallback method if it does not work
+} catch( e ) {
+ makeArray = function( array, results ) {
+ var i = 0,
+ ret = results || [];
+
+ if ( toString.call(array) === "[object Array]" ) {
+ Array.prototype.push.apply( ret, array );
+
+ } else {
+ if ( typeof array.length === "number" ) {
+ for ( var l = array.length; i < l; i++ ) {
+ ret.push( array[i] );
+ }
+
+ } else {
+ for ( ; array[i]; i++ ) {
+ ret.push( array[i] );
+ }
+ }
+ }
+
+ return ret;
+ };
+}
+
+var sortOrder, siblingCheck;
+
+if ( document.documentElement.compareDocumentPosition ) {
+ sortOrder = function( a, b ) {
+ if ( a === b ) {
+ hasDuplicate = true;
+ return 0;
+ }
+
+ if ( !a.compareDocumentPosition || !b.compareDocumentPosition ) {
+ return a.compareDocumentPosition ? -1 : 1;
+ }
+
+ return a.compareDocumentPosition(b) & 4 ? -1 : 1;
+ };
+
+} else {
+ sortOrder = function( a, b ) {
+ var al, bl,
+ ap = [],
+ bp = [],
+ aup = a.parentNode,
+ bup = b.parentNode,
+ cur = aup;
+
+ // The nodes are identical, we can exit early
+ if ( a === b ) {
+ hasDuplicate = true;
+ return 0;
+
+ // If the nodes are siblings (or identical) we can do a quick check
+ } else if ( aup === bup ) {
+ return siblingCheck( a, b );
+
+ // If no parents were found then the nodes are disconnected
+ } else if ( !aup ) {
+ return -1;
+
+ } else if ( !bup ) {
+ return 1;
+ }
+
+ // Otherwise they're somewhere else in the tree so we need
+ // to build up a full list of the parentNodes for comparison
+ while ( cur ) {
+ ap.unshift( cur );
+ cur = cur.parentNode;
+ }
+
+ cur = bup;
+
+ while ( cur ) {
+ bp.unshift( cur );
+ cur = cur.parentNode;
+ }
+
+ al = ap.length;
+ bl = bp.length;
+
+ // Start walking down the tree looking for a discrepancy
+ for ( var i = 0; i < al && i < bl; i++ ) {
+ if ( ap[i] !== bp[i] ) {
+ return siblingCheck( ap[i], bp[i] );
+ }
+ }
+
+ // We ended someplace up the tree so do a sibling check
+ return i === al ?
+ siblingCheck( a, bp[i], -1 ) :
+ siblingCheck( ap[i], b, 1 );
+ };
+
+ siblingCheck = function( a, b, ret ) {
+ if ( a === b ) {
+ return ret;
+ }
+
+ var cur = a.nextSibling;
+
+ while ( cur ) {
+ if ( cur === b ) {
+ return -1;
+ }
+
+ cur = cur.nextSibling;
+ }
+
+ return 1;
+ };
+}
+
+// Utility function for retreiving the text value of an array of DOM nodes
+Sizzle.getText = function( elems ) {
+ var ret = "", elem;
+
+ for ( var i = 0; elems[i]; i++ ) {
+ elem = elems[i];
+
+ // Get the text from text nodes and CDATA nodes
+ if ( elem.nodeType === 3 || elem.nodeType === 4 ) {
+ ret += elem.nodeValue;
+
+ // Traverse everything else, except comment nodes
+ } else if ( elem.nodeType !== 8 ) {
+ ret += Sizzle.getText( elem.childNodes );
+ }
+ }
+
+ return ret;
+};
+
+// Check to see if the browser returns elements by name when
+// querying by getElementById (and provide a workaround)
+(function(){
+ // We're going to inject a fake input element with a specified name
+ var form = document.createElement("div"),
+ id = "script" + (new Date()).getTime(),
+ root = document.documentElement;
+
+ form.innerHTML = "<a name='" + id + "'/>";
+
+ // Inject it into the root element, check its status, and remove it quickly
+ root.insertBefore( form, root.firstChild );
+
+ // The workaround has to do additional checks after a getElementById
+ // Which slows things down for other browsers (hence the branching)
+ if ( document.getElementById( id ) ) {
+ Expr.find.ID = function( match, context, isXML ) {
+ if ( typeof context.getElementById !== "undefined" && !isXML ) {
+ var m = context.getElementById(match[1]);
+
+ return m ?
+ m.id === match[1] || typeof m.getAttributeNode !== "undefined" && m.getAttributeNode("id").nodeValue === match[1] ?
+ [m] :
+ undefined :
+ [];
+ }
+ };
+
+ Expr.filter.ID = function( elem, match ) {
+ var node = typeof elem.getAttributeNode !== "undefined" && elem.getAttributeNode("id");
+
+ return elem.nodeType === 1 && node && node.nodeValue === match;
+ };
+ }
+
+ root.removeChild( form );
+
+ // release memory in IE
+ root = form = null;
+})();
+
+(function(){
+ // Check to see if the browser returns only elements
+ // when doing getElementsByTagName("*")
+
+ // Create a fake element
+ var div = document.createElement("div");
+ div.appendChild( document.createComment("") );
+
+ // Make sure no comments are found
+ if ( div.getElementsByTagName("*").length > 0 ) {
+ Expr.find.TAG = function( match, context ) {
+ var results = context.getElementsByTagName( match[1] );
+
+ // Filter out possible comments
+ if ( match[1] === "*" ) {
+ var tmp = [];
+
+ for ( var i = 0; results[i]; i++ ) {
+ if ( results[i].nodeType === 1 ) {
+ tmp.push( results[i] );
+ }
+ }
+
+ results = tmp;
+ }
+
+ return results;
+ };
+ }
+
+ // Check to see if an attribute returns normalized href attributes
+ div.innerHTML = "<a href='#'></a>";
+
+ if ( div.firstChild && typeof div.firstChild.getAttribute !== "undefined" &&
+ div.firstChild.getAttribute("href") !== "#" ) {
+
+ Expr.attrHandle.href = function( elem ) {
+ return elem.getAttribute( "href", 2 );
+ };
+ }
+
+ // release memory in IE
+ div = null;
+})();
+
+if ( document.querySelectorAll ) {
+ (function(){
+ var oldSizzle = Sizzle,
+ div = document.createElement("div"),
+ id = "__sizzle__";
+
+ div.innerHTML = "<p class='TEST'></p>";
+
+ // Safari can't handle uppercase or unicode characters when
+ // in quirks mode.
+ if ( div.querySelectorAll && div.querySelectorAll(".TEST").length === 0 ) {
+ return;
+ }
+
+ Sizzle = function( query, context, extra, seed ) {
+ context = context || document;
+
+ // Make sure that attribute selectors are quoted
+ query = query.replace(/\=\s*([^'"\]]*)\s*\]/g, "='$1']");
+
+ // Only use querySelectorAll on non-XML documents
+ // (ID selectors don't work in non-HTML documents)
+ if ( !seed && !Sizzle.isXML(context) ) {
+ if ( context.nodeType === 9 ) {
+ try {
+ return makeArray( context.querySelectorAll(query), extra );
+ } catch(qsaError) {}
+
+ // qSA works strangely on Element-rooted queries
+ // We can work around this by specifying an extra ID on the root
+ // and working up from there (Thanks to Andrew Dupont for the technique)
+ // IE 8 doesn't work on object elements
+ } else if ( context.nodeType === 1 && context.nodeName.toLowerCase() !== "object" ) {
+ var old = context.getAttribute( "id" ),
+ nid = old || id;
+
+ if ( !old ) {
+ context.setAttribute( "id", nid );
+ }
+
+ try {
+ return makeArray( context.querySelectorAll( "#" + nid + " " + query ), extra );
+
+ } catch(pseudoError) {
+ } finally {
+ if ( !old ) {
+ context.removeAttribute( "id" );
+ }
+ }
+ }
+ }
+
+ return oldSizzle(query, context, extra, seed);
+ };
+
+ for ( var prop in oldSizzle ) {
+ Sizzle[ prop ] = oldSizzle[ prop ];
+ }
+
+ // release memory in IE
+ div = null;
+ })();
+}
+
+(function(){
+ var html = document.documentElement,
+ matches = html.matchesSelector || html.mozMatchesSelector || html.webkitMatchesSelector || html.msMatchesSelector,
+ pseudoWorks = false;
+
+ try {
+ // This should fail with an exception
+ // Gecko does not error, returns false instead
+ matches.call( document.documentElement, "[test!='']:sizzle" );
+
+ } catch( pseudoError ) {
+ pseudoWorks = true;
+ }
+
+ if ( matches ) {
+ Sizzle.matchesSelector = function( node, expr ) {
+ // Make sure that attribute selectors are quoted
+ expr = expr.replace(/\=\s*([^'"\]]*)\s*\]/g, "='$1']");
+
+ if ( !Sizzle.isXML( node ) ) {
+ try {
+ if ( pseudoWorks || !Expr.match.PSEUDO.test( expr ) && !/!=/.test( expr ) ) {
+ return matches.call( node, expr );
+ }
+ } catch(e) {}
+ }
+
+ return Sizzle(expr, null, null, [node]).length > 0;
+ };
+ }
+})();
+
+(function(){
+ var div = document.createElement("div");
+
+ div.innerHTML = "<div class='test e'></div><div class='test'></div>";
+
+ // Opera can't find a second classname (in 9.6)
+ // Also, make sure that getElementsByClassName actually exists
+ if ( !div.getElementsByClassName || div.getElementsByClassName("e").length === 0 ) {
+ return;
+ }
+
+ // Safari caches class attributes, doesn't catch changes (in 3.2)
+ div.lastChild.className = "e";
+
+ if ( div.getElementsByClassName("e").length === 1 ) {
+ return;
+ }
+
+ Expr.order.splice(1, 0, "CLASS");
+ Expr.find.CLASS = function( match, context, isXML ) {
+ if ( typeof context.getElementsByClassName !== "undefined" && !isXML ) {
+ return context.getElementsByClassName(match[1]);
+ }
+ };
+
+ // release memory in IE
+ div = null;
+})();
+
+function dirNodeCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {
+ for ( var i = 0, l = checkSet.length; i < l; i++ ) {
+ var elem = checkSet[i];
+
+ if ( elem ) {
+ var match = false;
+
+ elem = elem[dir];
+
+ while ( elem ) {
+ if ( elem.sizcache === doneName ) {
+ match = checkSet[elem.sizset];
+ break;
+ }
+
+ if ( elem.nodeType === 1 && !isXML ){
+ elem.sizcache = doneName;
+ elem.sizset = i;
+ }
+
+ if ( elem.nodeName.toLowerCase() === cur ) {
+ match = elem;
+ break;
+ }
+
+ elem = elem[dir];
+ }
+
+ checkSet[i] = match;
+ }
+ }
+}
+
+function dirCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {
+ for ( var i = 0, l = checkSet.length; i < l; i++ ) {
+ var elem = checkSet[i];
+
+ if ( elem ) {
+ var match = false;
+
+ elem = elem[dir];
+
+ while ( elem ) {
+ if ( elem.sizcache === doneName ) {
+ match = checkSet[elem.sizset];
+ break;
+ }
+
+ if ( elem.nodeType === 1 ) {
+ if ( !isXML ) {
+ elem.sizcache = doneName;
+ elem.sizset = i;
+ }
+
+ if ( typeof cur !== "string" ) {
+ if ( elem === cur ) {
+ match = true;
+ break;
+ }
+
+ } else if ( Sizzle.filter( cur, [elem] ).length > 0 ) {
+ match = elem;
+ break;
+ }
+ }
+
+ elem = elem[dir];
+ }
+
+ checkSet[i] = match;
+ }
+ }
+}
+
+if ( document.documentElement.contains ) {
+ Sizzle.contains = function( a, b ) {
+ return a !== b && (a.contains ? a.contains(b) : true);
+ };
+
+} else if ( document.documentElement.compareDocumentPosition ) {
+ Sizzle.contains = function( a, b ) {
+ return !!(a.compareDocumentPosition(b) & 16);
+ };
+
+} else {
+ Sizzle.contains = function() {
+ return false;
+ };
+}
+
+Sizzle.isXML = function( elem ) {
+ // documentElement is verified for cases where it doesn't yet exist
+ // (such as loading iframes in IE - #4833)
+ var documentElement = (elem ? elem.ownerDocument || elem : 0).documentElement;
+
+ return documentElement ? documentElement.nodeName !== "HTML" : false;
+};
+
+var posProcess = function( selector, context ) {
+ var match,
+ tmpSet = [],
+ later = "",
+ root = context.nodeType ? [context] : context;
+
+ // Position selectors must be done after the filter
+ // And so must :not(positional) so we move all PSEUDOs to the end
+ while ( (match = Expr.match.PSEUDO.exec( selector )) ) {
+ later += match[0];
+ selector = selector.replace( Expr.match.PSEUDO, "" );
+ }
+
+ selector = Expr.relative[selector] ? selector + "*" : selector;
+
+ for ( var i = 0, l = root.length; i < l; i++ ) {
+ Sizzle( selector, root[i], tmpSet );
+ }
+
+ return Sizzle.filter( later, tmpSet );
+};
+
+// EXPOSE
+jQuery.find = Sizzle;
+jQuery.expr = Sizzle.selectors;
+jQuery.expr[":"] = jQuery.expr.filters;
+jQuery.unique = Sizzle.uniqueSort;
+jQuery.text = Sizzle.getText;
+jQuery.isXMLDoc = Sizzle.isXML;
+jQuery.contains = Sizzle.contains;
+
+
+})();
+
+
+var runtil = /Until$/,
+ rparentsprev = /^(?:parents|prevUntil|prevAll)/,
+ // Note: This RegExp should be improved, or likely pulled from Sizzle
+ rmultiselector = /,/,
+ isSimple = /^.[^:#\[\.,]*$/,
+ slice = Array.prototype.slice,
+ POS = jQuery.expr.match.POS;
+
+jQuery.fn.extend({
+ find: function( selector ) {
+ var ret = this.pushStack( "", "find", selector ),
+ length = 0;
+
+ for ( var i = 0, l = this.length; i < l; i++ ) {
+ length = ret.length;
+ jQuery.find( selector, this[i], ret );
+
+ if ( i > 0 ) {
+ // Make sure that the results are unique
+ for ( var n = length; n < ret.length; n++ ) {
+ for ( var r = 0; r < length; r++ ) {
+ if ( ret[r] === ret[n] ) {
+ ret.splice(n--, 1);
+ break;
+ }
+ }
+ }
+ }
+ }
+
+ return ret;
+ },
+
+ has: function( target ) {
+ var targets = jQuery( target );
+ return this.filter(function() {
+ for ( var i = 0, l = targets.length; i < l; i++ ) {
+ if ( jQuery.contains( this, targets[i] ) ) {
+ return true;
+ }
+ }
+ });
+ },
+
+ not: function( selector ) {
+ return this.pushStack( winnow(this, selector, false), "not", selector);
+ },
+
+ filter: function( selector ) {
+ return this.pushStack( winnow(this, selector, true), "filter", selector );
+ },
+
+ is: function( selector ) {
+ return !!selector && jQuery.filter( selector, this ).length > 0;
+ },
+
+ closest: function( selectors, context ) {
+ var ret = [], i, l, cur = this[0];
+
+ if ( jQuery.isArray( selectors ) ) {
+ var match, selector,
+ matches = {},
+ level = 1;
+
+ if ( cur && selectors.length ) {
+ for ( i = 0, l = selectors.length; i < l; i++ ) {
+ selector = selectors[i];
+
+ if ( !matches[selector] ) {
+ matches[selector] = jQuery.expr.match.POS.test( selector ) ?
+ jQuery( selector, context || this.context ) :
+ selector;
+ }
+ }
+
+ while ( cur && cur.ownerDocument && cur !== context ) {
+ for ( selector in matches ) {
+ match = matches[selector];
+
+ if ( match.jquery ? match.index(cur) > -1 : jQuery(cur).is(match) ) {
+ ret.push({ selector: selector, elem: cur, level: level });
+ }
+ }
+
+ cur = cur.parentNode;
+ level++;
+ }
+ }
+
+ return ret;
+ }
+
+ var pos = POS.test( selectors ) ?
+ jQuery( selectors, context || this.context ) : null;
+
+ for ( i = 0, l = this.length; i < l; i++ ) {
+ cur = this[i];
+
+ while ( cur ) {
+ if ( pos ? pos.index(cur) > -1 : jQuery.find.matchesSelector(cur, selectors) ) {
+ ret.push( cur );
+ break;
+
+ } else {
+ cur = cur.parentNode;
+ if ( !cur || !cur.ownerDocument || cur === context ) {
+ break;
+ }
+ }
+ }
+ }
+
+ ret = ret.length > 1 ? jQuery.unique(ret) : ret;
+
+ return this.pushStack( ret, "closest", selectors );
+ },
+
+ // Determine the position of an element within
+ // the matched set of elements
+ index: function( elem ) {
+ if ( !elem || typeof elem === "string" ) {
+ return jQuery.inArray( this[0],
+ // If it receives a string, the selector is used
+ // If it receives nothing, the siblings are used
+ elem ? jQuery( elem ) : this.parent().children() );
+ }
+ // Locate the position of the desired element
+ return jQuery.inArray(
+ // If it receives a jQuery object, the first element is used
+ elem.jquery ? elem[0] : elem, this );
+ },
+
+ add: function( selector, context ) {
+ var set = typeof selector === "string" ?
+ jQuery( selector, context || this.context ) :
+ jQuery.makeArray( selector ),
+ all = jQuery.merge( this.get(), set );
+
+ return this.pushStack( isDisconnected( set[0] ) || isDisconnected( all[0] ) ?
+ all :
+ jQuery.unique( all ) );
+ },
+
+ andSelf: function() {
+ return this.add( this.prevObject );
+ }
+});
+
+// A painfully simple check to see if an element is disconnected
+// from a document (should be improved, where feasible).
+function isDisconnected( node ) {
+ return !node || !node.parentNode || node.parentNode.nodeType === 11;
+}
+
+jQuery.each({
+ parent: function( elem ) {
+ var parent = elem.parentNode;
+ return parent && parent.nodeType !== 11 ? parent : null;
+ },
+ parents: function( elem ) {
+ return jQuery.dir( elem, "parentNode" );
+ },
+ parentsUntil: function( elem, i, until ) {
+ return jQuery.dir( elem, "parentNode", until );
+ },
+ next: function( elem ) {
+ return jQuery.nth( elem, 2, "nextSibling" );
+ },
+ prev: function( elem ) {
+ return jQuery.nth( elem, 2, "previousSibling" );
+ },
+ nextAll: function( elem ) {
+ return jQuery.dir( elem, "nextSibling" );
+ },
+ prevAll: function( elem ) {
+ return jQuery.dir( elem, "previousSibling" );
+ },
+ nextUntil: function( elem, i, until ) {
+ return jQuery.dir( elem, "nextSibling", until );
+ },
+ prevUntil: function( elem, i, until ) {
+ return jQuery.dir( elem, "previousSibling", until );
+ },
+ siblings: function( elem ) {
+ return jQuery.sibling( elem.parentNode.firstChild, elem );
+ },
+ children: function( elem ) {
+ return jQuery.sibling( elem.firstChild );
+ },
+ contents: function( elem ) {
+ return jQuery.nodeName( elem, "iframe" ) ?
+ elem.contentDocument || elem.contentWindow.document :
+ jQuery.makeArray( elem.childNodes );
+ }
+}, function( name, fn ) {
+ jQuery.fn[ name ] = function( until, selector ) {
+ var ret = jQuery.map( this, fn, until );
+
+ if ( !runtil.test( name ) ) {
+ selector = until;
+ }
+
+ if ( selector && typeof selector === "string" ) {
+ ret = jQuery.filter( selector, ret );
+ }
+
+ ret = this.length > 1 ? jQuery.unique( ret ) : ret;
+
+ if ( (this.length > 1 || rmultiselector.test( selector )) && rparentsprev.test( name ) ) {
+ ret = ret.reverse();
+ }
+
+ return this.pushStack( ret, name, slice.call(arguments).join(",") );
+ };
+});
+
+jQuery.extend({
+ filter: function( expr, elems, not ) {
+ if ( not ) {
+ expr = ":not(" + expr + ")";
+ }
+
+ return elems.length === 1 ?
+ jQuery.find.matchesSelector(elems[0], expr) ? [ elems[0] ] : [] :
+ jQuery.find.matches(expr, elems);
+ },
+
+ dir: function( elem, dir, until ) {
+ var matched = [],
+ cur = elem[ dir ];
+
+ while ( cur && cur.nodeType !== 9 && (until === undefined || cur.nodeType !== 1 || !jQuery( cur ).is( until )) ) {
+ if ( cur.nodeType === 1 ) {
+ matched.push( cur );
+ }
+ cur = cur[dir];
+ }
+ return matched;
+ },
+
+ nth: function( cur, result, dir, elem ) {
+ result = result || 1;
+ var num = 0;
+
+ for ( ; cur; cur = cur[dir] ) {
+ if ( cur.nodeType === 1 && ++num === result ) {
+ break;
+ }
+ }
+
+ return cur;
+ },
+
+ sibling: function( n, elem ) {
+ var r = [];
+
+ for ( ; n; n = n.nextSibling ) {
+ if ( n.nodeType === 1 && n !== elem ) {
+ r.push( n );
+ }
+ }
+
+ return r;
+ }
+});
+
+// Implement the identical functionality for filter and not
+function winnow( elements, qualifier, keep ) {
+ if ( jQuery.isFunction( qualifier ) ) {
+ return jQuery.grep(elements, function( elem, i ) {
+ var retVal = !!qualifier.call( elem, i, elem );
+ return retVal === keep;
+ });
+
+ } else if ( qualifier.nodeType ) {
+ return jQuery.grep(elements, function( elem, i ) {
+ return (elem === qualifier) === keep;
+ });
+
+ } else if ( typeof qualifier === "string" ) {
+ var filtered = jQuery.grep(elements, function( elem ) {
+ return elem.nodeType === 1;
+ });
+
+ if ( isSimple.test( qualifier ) ) {
+ return jQuery.filter(qualifier, filtered, !keep);
+ } else {
+ qualifier = jQuery.filter( qualifier, filtered );
+ }
+ }
+
+ return jQuery.grep(elements, function( elem, i ) {
+ return (jQuery.inArray( elem, qualifier ) >= 0) === keep;
+ });
+}
+
+
+
+
+var rinlinejQuery = / jQuery\d+="(?:\d+|null)"/g,
+ rleadingWhitespace = /^\s+/,
+ rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,
+ rtagName = /<([\w:]+)/,
+ rtbody = /<tbody/i,
+ rhtml = /<|&#?\w+;/,
+ rnocache = /<(?:script|object|embed|option|style)/i,
+ // checked="checked" or checked (html5)
+ rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i,
+ raction = /\=([^="'>\s]+\/)>/g,
+ wrapMap = {
+ option: [ 1, "<select multiple='multiple'>", "</select>" ],
+ legend: [ 1, "<fieldset>", "</fieldset>" ],
+ thead: [ 1, "<table>", "</table>" ],
+ tr: [ 2, "<table><tbody>", "</tbody></table>" ],
+ td: [ 3, "<table><tbody><tr>", "</tr></tbody></table>" ],
+ col: [ 2, "<table><tbody></tbody><colgroup>", "</colgroup></table>" ],
+ area: [ 1, "<map>", "</map>" ],
+ _default: [ 0, "", "" ]
+ };
+
+wrapMap.optgroup = wrapMap.option;
+wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;
+wrapMap.th = wrapMap.td;
+
+// IE can't serialize <link> and <script> tags normally
+if ( !jQuery.support.htmlSerialize ) {
+ wrapMap._default = [ 1, "div<div>", "</div>" ];
+}
+
+jQuery.fn.extend({
+ text: function( text ) {
+ if ( jQuery.isFunction(text) ) {
+ return this.each(function(i) {
+ var self = jQuery( this );
+
+ self.text( text.call(this, i, self.text()) );
+ });
+ }
+
+ if ( typeof text !== "object" && text !== undefined ) {
+ return this.empty().append( (this[0] && this[0].ownerDocument || document).createTextNode( text ) );
+ }
+
+ return jQuery.text( this );
+ },
+
+ wrapAll: function( html ) {
+ if ( jQuery.isFunction( html ) ) {
+ return this.each(function(i) {
+ jQuery(this).wrapAll( html.call(this, i) );
+ });
+ }
+
+ if ( this[0] ) {
+ // The elements to wrap the target around
+ var wrap = jQuery( html, this[0].ownerDocument ).eq(0).clone(true);
+
+ if ( this[0].parentNode ) {
+ wrap.insertBefore( this[0] );
+ }
+
+ wrap.map(function() {
+ var elem = this;
+
+ while ( elem.firstChild && elem.firstChild.nodeType === 1 ) {
+ elem = elem.firstChild;
+ }
+
+ return elem;
+ }).append(this);
+ }
+
+ return this;
+ },
+
+ wrapInner: function( html ) {
+ if ( jQuery.isFunction( html ) ) {
+ return this.each(function(i) {
+ jQuery(this).wrapInner( html.call(this, i) );
+ });
+ }
+
+ return this.each(function() {
+ var self = jQuery( this ),
+ contents = self.contents();
+
+ if ( contents.length ) {
+ contents.wrapAll( html );
+
+ } else {
+ self.append( html );
+ }
+ });
+ },
+
+ wrap: function( html ) {
+ return this.each(function() {
+ jQuery( this ).wrapAll( html );
+ });
+ },
+
+ unwrap: function() {
+ return this.parent().each(function() {
+ if ( !jQuery.nodeName( this, "body" ) ) {
+ jQuery( this ).replaceWith( this.childNodes );
+ }
+ }).end();
+ },
+
+ append: function() {
+ return this.domManip(arguments, true, function( elem ) {
+ if ( this.nodeType === 1 ) {
+ this.appendChild( elem );
+ }
+ });
+ },
+
+ prepend: function() {
+ return this.domManip(arguments, true, function( elem ) {
+ if ( this.nodeType === 1 ) {
+ this.insertBefore( elem, this.firstChild );
+ }
+ });
+ },
+
+ before: function() {
+ if ( this[0] && this[0].parentNode ) {
+ return this.domManip(arguments, false, function( elem ) {
+ this.parentNode.insertBefore( elem, this );
+ });
+ } else if ( arguments.length ) {
+ var set = jQuery(arguments[0]);
+ set.push.apply( set, this.toArray() );
+ return this.pushStack( set, "before", arguments );
+ }
+ },
+
+ after: function() {
+ if ( this[0] && this[0].parentNode ) {
+ return this.domManip(arguments, false, function( elem ) {
+ this.parentNode.insertBefore( elem, this.nextSibling );
+ });
+ } else if ( arguments.length ) {
+ var set = this.pushStack( this, "after", arguments );
+ set.push.apply( set, jQuery(arguments[0]).toArray() );
+ return set;
+ }
+ },
+
+ // keepData is for internal use only--do not document
+ remove: function( selector, keepData ) {
+ for ( var i = 0, elem; (elem = this[i]) != null; i++ ) {
+ if ( !selector || jQuery.filter( selector, [ elem ] ).length ) {
+ if ( !keepData && elem.nodeType === 1 ) {
+ jQuery.cleanData( elem.getElementsByTagName("*") );
+ jQuery.cleanData( [ elem ] );
+ }
+
+ if ( elem.parentNode ) {
+ elem.parentNode.removeChild( elem );
+ }
+ }
+ }
+
+ return this;
+ },
+
+ empty: function() {
+ for ( var i = 0, elem; (elem = this[i]) != null; i++ ) {
+ // Remove element nodes and prevent memory leaks
+ if ( elem.nodeType === 1 ) {
+ jQuery.cleanData( elem.getElementsByTagName("*") );
+ }
+
+ // Remove any remaining nodes
+ while ( elem.firstChild ) {
+ elem.removeChild( elem.firstChild );
+ }
+ }
+
+ return this;
+ },
+
+ clone: function( events ) {
+ // Do the clone
+ var ret = this.map(function() {
+ if ( !jQuery.support.noCloneEvent && !jQuery.isXMLDoc(this) ) {
+ // IE copies events bound via attachEvent when
+ // using cloneNode. Calling detachEvent on the
+ // clone will also remove the events from the orignal
+ // In order to get around this, we use innerHTML.
+ // Unfortunately, this means some modifications to
+ // attributes in IE that are actually only stored
+ // as properties will not be copied (such as the
+ // the name attribute on an input).
+ var html = this.outerHTML,
+ ownerDocument = this.ownerDocument;
+
+ if ( !html ) {
+ var div = ownerDocument.createElement("div");
+ div.appendChild( this.cloneNode(true) );
+ html = div.innerHTML;
+ }
+
+ return jQuery.clean([html.replace(rinlinejQuery, "")
+ // Handle the case in IE 8 where action=/test/> self-closes a tag
+ .replace(raction, '="$1">')
+ .replace(rleadingWhitespace, "")], ownerDocument)[0];
+ } else {
+ return this.cloneNode(true);
+ }
+ });
+
+ // Copy the events from the original to the clone
+ if ( events === true ) {
+ cloneCopyEvent( this, ret );
+ cloneCopyEvent( this.find("*"), ret.find("*") );
+ }
+
+ // Return the cloned set
+ return ret;
+ },
+
+ html: function( value ) {
+ if ( value === undefined ) {
+ return this[0] && this[0].nodeType === 1 ?
+ this[0].innerHTML.replace(rinlinejQuery, "") :
+ null;
+
+ // See if we can take a shortcut and just use innerHTML
+ } else if ( typeof value === "string" && !rnocache.test( value ) &&
+ (jQuery.support.leadingWhitespace || !rleadingWhitespace.test( value )) &&
+ !wrapMap[ (rtagName.exec( value ) || ["", ""])[1].toLowerCase() ] ) {
+
+ value = value.replace(rxhtmlTag, "<$1></$2>");
+
+ try {
+ for ( var i = 0, l = this.length; i < l; i++ ) {
+ // Remove element nodes and prevent memory leaks
+ if ( this[i].nodeType === 1 ) {
+ jQuery.cleanData( this[i].getElementsByTagName("*") );
+ this[i].innerHTML = value;
+ }
+ }
+
+ // If using innerHTML throws an exception, use the fallback method
+ } catch(e) {
+ this.empty().append( value );
+ }
+
+ } else if ( jQuery.isFunction( value ) ) {
+ this.each(function(i){
+ var self = jQuery( this );
+
+ self.html( value.call(this, i, self.html()) );
+ });
+
+ } else {
+ this.empty().append( value );
+ }
+
+ return this;
+ },
+
+ replaceWith: function( value ) {
+ if ( this[0] && this[0].parentNode ) {
+ // Make sure that the elements are removed from the DOM before they are inserted
+ // this can help fix replacing a parent with child elements
+ if ( jQuery.isFunction( value ) ) {
+ return this.each(function(i) {
+ var self = jQuery(this), old = self.html();
+ self.replaceWith( value.call( this, i, old ) );
+ });
+ }
+
+ if ( typeof value !== "string" ) {
+ value = jQuery( value ).detach();
+ }
+
+ return this.each(function() {
+ var next = this.nextSibling,
+ parent = this.parentNode;
+
+ jQuery( this ).remove();
+
+ if ( next ) {
+ jQuery(next).before( value );
+ } else {
+ jQuery(parent).append( value );
+ }
+ });
+ } else {
+ return this.pushStack( jQuery(jQuery.isFunction(value) ? value() : value), "replaceWith", value );
+ }
+ },
+
+ detach: function( selector ) {
+ return this.remove( selector, true );
+ },
+
+ domManip: function( args, table, callback ) {
+ var results, first, fragment, parent,
+ value = args[0],
+ scripts = [];
+
+ // We can't cloneNode fragments that contain checked, in WebKit
+ if ( !jQuery.support.checkClone && arguments.length === 3 && typeof value === "string" && rchecked.test( value ) ) {
+ return this.each(function() {
+ jQuery(this).domManip( args, table, callback, true );
+ });
+ }
+
+ if ( jQuery.isFunction(value) ) {
+ return this.each(function(i) {
+ var self = jQuery(this);
+ args[0] = value.call(this, i, table ? self.html() : undefined);
+ self.domManip( args, table, callback );
+ });
+ }
+
+ if ( this[0] ) {
+ parent = value && value.parentNode;
+
+ // If we're in a fragment, just use that instead of building a new one
+ if ( jQuery.support.parentNode && parent && parent.nodeType === 11 && parent.childNodes.length === this.length ) {
+ results = { fragment: parent };
+
+ } else {
+ results = jQuery.buildFragment( args, this, scripts );
+ }
+
+ fragment = results.fragment;
+
+ if ( fragment.childNodes.length === 1 ) {
+ first = fragment = fragment.firstChild;
+ } else {
+ first = fragment.firstChild;
+ }
+
+ if ( first ) {
+ table = table && jQuery.nodeName( first, "tr" );
+
+ for ( var i = 0, l = this.length; i < l; i++ ) {
+ callback.call(
+ table ?
+ root(this[i], first) :
+ this[i],
+ i > 0 || results.cacheable || this.length > 1 ?
+ fragment.cloneNode(true) :
+ fragment
+ );
+ }
+ }
+
+ if ( scripts.length ) {
+ jQuery.each( scripts, evalScript );
+ }
+ }
+
+ return this;
+ }
+});
+
+function root( elem, cur ) {
+ return jQuery.nodeName(elem, "table") ?
+ (elem.getElementsByTagName("tbody")[0] ||
+ elem.appendChild(elem.ownerDocument.createElement("tbody"))) :
+ elem;
+}
+
+function cloneCopyEvent(orig, ret) {
+ var i = 0;
+
+ ret.each(function() {
+ if ( this.nodeName !== (orig[i] && orig[i].nodeName) ) {
+ return;
+ }
+
+ var oldData = jQuery.data( orig[i++] ),
+ curData = jQuery.data( this, oldData ),
+ events = oldData && oldData.events;
+
+ if ( events ) {
+ delete curData.handle;
+ curData.events = {};
+
+ for ( var type in events ) {
+ for ( var handler in events[ type ] ) {
+ jQuery.event.add( this, type, events[ type ][ handler ], events[ type ][ handler ].data );
+ }
+ }
+ }
+ });
+}
+
+jQuery.buildFragment = function( args, nodes, scripts ) {
+ var fragment, cacheable, cacheresults,
+ doc = (nodes && nodes[0] ? nodes[0].ownerDocument || nodes[0] : document);
+
+ // Only cache "small" (1/2 KB) strings that are associated with the main document
+ // Cloning options loses the selected state, so don't cache them
+ // IE 6 doesn't like it when you put <object> or <embed> elements in a fragment
+ // Also, WebKit does not clone 'checked' attributes on cloneNode, so don't cache
+ if ( args.length === 1 && typeof args[0] === "string" && args[0].length < 512 && doc === document &&
+ !rnocache.test( args[0] ) && (jQuery.support.checkClone || !rchecked.test( args[0] )) ) {
+
+ cacheable = true;
+ cacheresults = jQuery.fragments[ args[0] ];
+ if ( cacheresults ) {
+ if ( cacheresults !== 1 ) {
+ fragment = cacheresults;
+ }
+ }
+ }
+
+ if ( !fragment ) {
+ fragment = doc.createDocumentFragment();
+ jQuery.clean( args, doc, fragment, scripts );
+ }
+
+ if ( cacheable ) {
+ jQuery.fragments[ args[0] ] = cacheresults ? fragment : 1;
+ }
+
+ return { fragment: fragment, cacheable: cacheable };
+};
+
+jQuery.fragments = {};
+
+jQuery.each({
+ appendTo: "append",
+ prependTo: "prepend",
+ insertBefore: "before",
+ insertAfter: "after",
+ replaceAll: "replaceWith"
+}, function( name, original ) {
+ jQuery.fn[ name ] = function( selector ) {
+ var ret = [],
+ insert = jQuery( selector ),
+ parent = this.length === 1 && this[0].parentNode;
+
+ if ( parent && parent.nodeType === 11 && parent.childNodes.length === 1 && insert.length === 1 ) {
+ insert[ original ]( this[0] );
+ return this;
+
+ } else {
+ for ( var i = 0, l = insert.length; i < l; i++ ) {
+ var elems = (i > 0 ? this.clone(true) : this).get();
+ jQuery( insert[i] )[ original ]( elems );
+ ret = ret.concat( elems );
+ }
+
+ return this.pushStack( ret, name, insert.selector );
+ }
+ };
+});
+
+jQuery.extend({
+ clean: function( elems, context, fragment, scripts ) {
+ context = context || document;
+
+ // !context.createElement fails in IE with an error but returns typeof 'object'
+ if ( typeof context.createElement === "undefined" ) {
+ context = context.ownerDocument || context[0] && context[0].ownerDocument || document;
+ }
+
+ var ret = [];
+
+ for ( var i = 0, elem; (elem = elems[i]) != null; i++ ) {
+ if ( typeof elem === "number" ) {
+ elem += "";
+ }
+
+ if ( !elem ) {
+ continue;
+ }
+
+ // Convert html string into DOM nodes
+ if ( typeof elem === "string" && !rhtml.test( elem ) ) {
+ elem = context.createTextNode( elem );
+
+ } else if ( typeof elem === "string" ) {
+ // Fix "XHTML"-style tags in all browsers
+ elem = elem.replace(rxhtmlTag, "<$1></$2>");
+
+ // Trim whitespace, otherwise indexOf won't work as expected
+ var tag = (rtagName.exec( elem ) || ["", ""])[1].toLowerCase(),
+ wrap = wrapMap[ tag ] || wrapMap._default,
+ depth = wrap[0],
+ div = context.createElement("div");
+
+ // Go to html and back, then peel off extra wrappers
+ div.innerHTML = wrap[1] + elem + wrap[2];
+
+ // Move to the right depth
+ while ( depth-- ) {
+ div = div.lastChild;
+ }
+
+ // Remove IE's autoinserted <tbody> from table fragments
+ if ( !jQuery.support.tbody ) {
+
+ // String was a <table>, *may* have spurious <tbody>
+ var hasBody = rtbody.test(elem),
+ tbody = tag === "table" && !hasBody ?
+ div.firstChild && div.firstChild.childNodes :
+
+ // String was a bare <thead> or <tfoot>
+ wrap[1] === "<table>" && !hasBody ?
+ div.childNodes :
+ [];
+
+ for ( var j = tbody.length - 1; j >= 0 ; --j ) {
+ if ( jQuery.nodeName( tbody[ j ], "tbody" ) && !tbody[ j ].childNodes.length ) {
+ tbody[ j ].parentNode.removeChild( tbody[ j ] );
+ }
+ }
+
+ }
+
+ // IE completely kills leading whitespace when innerHTML is used
+ if ( !jQuery.support.leadingWhitespace && rleadingWhitespace.test( elem ) ) {
+ div.insertBefore( context.createTextNode( rleadingWhitespace.exec(elem)[0] ), div.firstChild );
+ }
+
+ elem = div.childNodes;
+ }
+
+ if ( elem.nodeType ) {
+ ret.push( elem );
+ } else {
+ ret = jQuery.merge( ret, elem );
+ }
+ }
+
+ if ( fragment ) {
+ for ( i = 0; ret[i]; i++ ) {
+ if ( scripts && jQuery.nodeName( ret[i], "script" ) && (!ret[i].type || ret[i].type.toLowerCase() === "text/javascript") ) {
+ scripts.push( ret[i].parentNode ? ret[i].parentNode.removeChild( ret[i] ) : ret[i] );
+
+ } else {
+ if ( ret[i].nodeType === 1 ) {
+ ret.splice.apply( ret, [i + 1, 0].concat(jQuery.makeArray(ret[i].getElementsByTagName("script"))) );
+ }
+ fragment.appendChild( ret[i] );
+ }
+ }
+ }
+
+ return ret;
+ },
+
+ cleanData: function( elems ) {
+ var data, id, cache = jQuery.cache,
+ special = jQuery.event.special,
+ deleteExpando = jQuery.support.deleteExpando;
+
+ for ( var i = 0, elem; (elem = elems[i]) != null; i++ ) {
+ if ( elem.nodeName && jQuery.noData[elem.nodeName.toLowerCase()] ) {
+ continue;
+ }
+
+ id = elem[ jQuery.expando ];
+
+ if ( id ) {
+ data = cache[ id ];
+
+ if ( data && data.events ) {
+ for ( var type in data.events ) {
+ if ( special[ type ] ) {
+ jQuery.event.remove( elem, type );
+
+ } else {
+ jQuery.removeEvent( elem, type, data.handle );
+ }
+ }
+ }
+
+ if ( deleteExpando ) {
+ delete elem[ jQuery.expando ];
+
+ } else if ( elem.removeAttribute ) {
+ elem.removeAttribute( jQuery.expando );
+ }
+
+ delete cache[ id ];
+ }
+ }
+ }
+});
+
+function evalScript( i, elem ) {
+ if ( elem.src ) {
+ jQuery.ajax({
+ url: elem.src,
+ async: false,
+ dataType: "script"
+ });
+ } else {
+ jQuery.globalEval( elem.text || elem.textContent || elem.innerHTML || "" );
+ }
+
+ if ( elem.parentNode ) {
+ elem.parentNode.removeChild( elem );
+ }
+}
+
+
+
+
+var ralpha = /alpha\([^)]*\)/i,
+ ropacity = /opacity=([^)]*)/,
+ rdashAlpha = /-([a-z])/ig,
+ rupper = /([A-Z])/g,
+ rnumpx = /^-?\d+(?:px)?$/i,
+ rnum = /^-?\d/,
+
+ cssShow = { position: "absolute", visibility: "hidden", display: "block" },
+ cssWidth = [ "Left", "Right" ],
+ cssHeight = [ "Top", "Bottom" ],
+ curCSS,
+
+ getComputedStyle,
+ currentStyle,
+
+ fcamelCase = function( all, letter ) {
+ return letter.toUpperCase();
+ };
+
+jQuery.fn.css = function( name, value ) {
+ // Setting 'undefined' is a no-op
+ if ( arguments.length === 2 && value === undefined ) {
+ return this;
+ }
+
+ return jQuery.access( this, name, value, true, function( elem, name, value ) {
+ return value !== undefined ?
+ jQuery.style( elem, name, value ) :
+ jQuery.css( elem, name );
+ });
+};
+
+jQuery.extend({
+ // Add in style property hooks for overriding the default
+ // behavior of getting and setting a style property
+ cssHooks: {
+ opacity: {
+ get: function( elem, computed ) {
+ if ( computed ) {
+ // We should always get a number back from opacity
+ var ret = curCSS( elem, "opacity", "opacity" );
+ return ret === "" ? "1" : ret;
+
+ } else {
+ return elem.style.opacity;
+ }
+ }
+ }
+ },
+
+ // Exclude the following css properties to add px
+ cssNumber: {
+ "zIndex": true,
+ "fontWeight": true,
+ "opacity": true,
+ "zoom": true,
+ "lineHeight": true
+ },
+
+ // Add in properties whose names you wish to fix before
+ // setting or getting the value
+ cssProps: {
+ // normalize float css property
+ "float": jQuery.support.cssFloat ? "cssFloat" : "styleFloat"
+ },
+
+ // Get and set the style property on a DOM Node
+ style: function( elem, name, value, extra ) {
+ // Don't set styles on text and comment nodes
+ if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {
+ return;
+ }
+
+ // Make sure that we're working with the right name
+ var ret, origName = jQuery.camelCase( name ),
+ style = elem.style, hooks = jQuery.cssHooks[ origName ];
+
+ name = jQuery.cssProps[ origName ] || origName;
+
+ // Check if we're setting a value
+ if ( value !== undefined ) {
+ // Make sure that NaN and null values aren't set. See: #7116
+ if ( typeof value === "number" && isNaN( value ) || value == null ) {
+ return;
+ }
+
+ // If a number was passed in, add 'px' to the (except for certain CSS properties)
+ if ( typeof value === "number" && !jQuery.cssNumber[ origName ] ) {
+ value += "px";
+ }
+
+ // If a hook was provided, use that value, otherwise just set the specified value
+ if ( !hooks || !("set" in hooks) || (value = hooks.set( elem, value )) !== undefined ) {
+ // Wrapped to prevent IE from throwing errors when 'invalid' values are provided
+ // Fixes bug #5509
+ try {
+ style[ name ] = value;
+ } catch(e) {}
+ }
+
+ } else {
+ // If a hook was provided get the non-computed value from there
+ if ( hooks && "get" in hooks && (ret = hooks.get( elem, false, extra )) !== undefined ) {
+ return ret;
+ }
+
+ // Otherwise just get the value from the style object
+ return style[ name ];
+ }
+ },
+
+ css: function( elem, name, extra ) {
+ // Make sure that we're working with the right name
+ var ret, origName = jQuery.camelCase( name ),
+ hooks = jQuery.cssHooks[ origName ];
+
+ name = jQuery.cssProps[ origName ] || origName;
+
+ // If a hook was provided get the computed value from there
+ if ( hooks && "get" in hooks && (ret = hooks.get( elem, true, extra )) !== undefined ) {
+ return ret;
+
+ // Otherwise, if a way to get the computed value exists, use that
+ } else if ( curCSS ) {
+ return curCSS( elem, name, origName );
+ }
+ },
+
+ // A method for quickly swapping in/out CSS properties to get correct calculations
+ swap: function( elem, options, callback ) {
+ var old = {};
+
+ // Remember the old values, and insert the new ones
+ for ( var name in options ) {
+ old[ name ] = elem.style[ name ];
+ elem.style[ name ] = options[ name ];
+ }
+
+ callback.call( elem );
+
+ // Revert the old values
+ for ( name in options ) {
+ elem.style[ name ] = old[ name ];
+ }
+ },
+
+ camelCase: function( string ) {
+ return string.replace( rdashAlpha, fcamelCase );
+ }
+});
+
+// DEPRECATED, Use jQuery.css() instead
+jQuery.curCSS = jQuery.css;
+
+jQuery.each(["height", "width"], function( i, name ) {
+ jQuery.cssHooks[ name ] = {
+ get: function( elem, computed, extra ) {
+ var val;
+
+ if ( computed ) {
+ if ( elem.offsetWidth !== 0 ) {
+ val = getWH( elem, name, extra );
+
+ } else {
+ jQuery.swap( elem, cssShow, function() {
+ val = getWH( elem, name, extra );
+ });
+ }
+
+ if ( val <= 0 ) {
+ val = curCSS( elem, name, name );
+
+ if ( val === "0px" && currentStyle ) {
+ val = currentStyle( elem, name, name );
+ }
+
+ if ( val != null ) {
+ // Should return "auto" instead of 0, use 0 for
+ // temporary backwards-compat
+ return val === "" || val === "auto" ? "0px" : val;
+ }
+ }
+
+ if ( val < 0 || val == null ) {
+ val = elem.style[ name ];
+
+ // Should return "auto" instead of 0, use 0 for
+ // temporary backwards-compat
+ return val === "" || val === "auto" ? "0px" : val;
+ }
+
+ return typeof val === "string" ? val : val + "px";
+ }
+ },
+
+ set: function( elem, value ) {
+ if ( rnumpx.test( value ) ) {
+ // ignore negative width and height values #1599
+ value = parseFloat(value);
+
+ if ( value >= 0 ) {
+ return value + "px";
+ }
+
+ } else {
+ return value;
+ }
+ }
+ };
+});
+
+if ( !jQuery.support.opacity ) {
+ jQuery.cssHooks.opacity = {
+ get: function( elem, computed ) {
+ // IE uses filters for opacity
+ return ropacity.test((computed && elem.currentStyle ? elem.currentStyle.filter : elem.style.filter) || "") ?
+ (parseFloat(RegExp.$1) / 100) + "" :
+ computed ? "1" : "";
+ },
+
+ set: function( elem, value ) {
+ var style = elem.style;
+
+ // IE has trouble with opacity if it does not have layout
+ // Force it by setting the zoom level
+ style.zoom = 1;
+
+ // Set the alpha filter to set the opacity
+ var opacity = jQuery.isNaN(value) ?
+ "" :
+ "alpha(opacity=" + value * 100 + ")",
+ filter = style.filter || "";
+
+ style.filter = ralpha.test(filter) ?
+ filter.replace(ralpha, opacity) :
+ style.filter + ' ' + opacity;
+ }
+ };
+}
+
+if ( document.defaultView && document.defaultView.getComputedStyle ) {
+ getComputedStyle = function( elem, newName, name ) {
+ var ret, defaultView, computedStyle;
+
+ name = name.replace( rupper, "-$1" ).toLowerCase();
+
+ if ( !(defaultView = elem.ownerDocument.defaultView) ) {
+ return undefined;
+ }
+
+ if ( (computedStyle = defaultView.getComputedStyle( elem, null )) ) {
+ ret = computedStyle.getPropertyValue( name );
+ if ( ret === "" && !jQuery.contains( elem.ownerDocument.documentElement, elem ) ) {
+ ret = jQuery.style( elem, name );
+ }
+ }
+
+ return ret;
+ };
+}
+
+if ( document.documentElement.currentStyle ) {
+ currentStyle = function( elem, name ) {
+ var left, rsLeft,
+ ret = elem.currentStyle && elem.currentStyle[ name ],
+ style = elem.style;
+
+ // From the awesome hack by Dean Edwards
+ // http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291
+
+ // If we're not dealing with a regular pixel number
+ // but a number that has a weird ending, we need to convert it to pixels
+ if ( !rnumpx.test( ret ) && rnum.test( ret ) ) {
+ // Remember the original values
+ left = style.left;
+ rsLeft = elem.runtimeStyle.left;
+
+ // Put in the new values to get a computed value out
+ elem.runtimeStyle.left = elem.currentStyle.left;
+ style.left = name === "fontSize" ? "1em" : (ret || 0);
+ ret = style.pixelLeft + "px";
+
+ // Revert the changed values
+ style.left = left;
+ elem.runtimeStyle.left = rsLeft;
+ }
+
+ return ret === "" ? "auto" : ret;
+ };
+}
+
+curCSS = getComputedStyle || currentStyle;
+
+function getWH( elem, name, extra ) {
+ var which = name === "width" ? cssWidth : cssHeight,
+ val = name === "width" ? elem.offsetWidth : elem.offsetHeight;
+
+ if ( extra === "border" ) {
+ return val;
+ }
+
+ jQuery.each( which, function() {
+ if ( !extra ) {
+ val -= parseFloat(jQuery.css( elem, "padding" + this )) || 0;
+ }
+
+ if ( extra === "margin" ) {
+ val += parseFloat(jQuery.css( elem, "margin" + this )) || 0;
+
+ } else {
+ val -= parseFloat(jQuery.css( elem, "border" + this + "Width" )) || 0;
+ }
+ });
+
+ return val;
+}
+
+if ( jQuery.expr && jQuery.expr.filters ) {
+ jQuery.expr.filters.hidden = function( elem ) {
+ var width = elem.offsetWidth,
+ height = elem.offsetHeight;
+
+ return (width === 0 && height === 0) || (!jQuery.support.reliableHiddenOffsets && (elem.style.display || jQuery.css( elem, "display" )) === "none");
+ };
+
+ jQuery.expr.filters.visible = function( elem ) {
+ return !jQuery.expr.filters.hidden( elem );
+ };
+}
+
+
+
+
+var jsc = jQuery.now(),
+ rscript = /<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,
+ rselectTextarea = /^(?:select|textarea)/i,
+ rinput = /^(?:color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,
+ rnoContent = /^(?:GET|HEAD)$/,
+ rbracket = /\[\]$/,
+ jsre = /\=\?(&|$)/,
+ rquery = /\?/,
+ rts = /([?&])_=[^&]*/,
+ rurl = /^(\w+:)?\/\/([^\/?#]+)/,
+ r20 = /%20/g,
+ rhash = /#.*$/,
+
+ // Keep a copy of the old load method
+ _load = jQuery.fn.load;
+
+jQuery.fn.extend({
+ load: function( url, params, callback ) {
+ if ( typeof url !== "string" && _load ) {
+ return _load.apply( this, arguments );
+
+ // Don't do a request if no elements are being requested
+ } else if ( !this.length ) {
+ return this;
+ }
+
+ var off = url.indexOf(" ");
+ if ( off >= 0 ) {
+ var selector = url.slice(off, url.length);
+ url = url.slice(0, off);
+ }
+
+ // Default to a GET request
+ var type = "GET";
+
+ // If the second parameter was provided
+ if ( params ) {
+ // If it's a function
+ if ( jQuery.isFunction( params ) ) {
+ // We assume that it's the callback
+ callback = params;
+ params = null;
+
+ // Otherwise, build a param string
+ } else if ( typeof params === "object" ) {
+ params = jQuery.param( params, jQuery.ajaxSettings.traditional );
+ type = "POST";
+ }
+ }
+
+ var self = this;
+
+ // Request the remote document
+ jQuery.ajax({
+ url: url,
+ type: type,
+ dataType: "html",
+ data: params,
+ complete: function( res, status ) {
+ // If successful, inject the HTML into all the matched elements
+ if ( status === "success" || status === "notmodified" ) {
+ // See if a selector was specified
+ self.html( selector ?
+ // Create a dummy div to hold the results
+ jQuery("<div>")
+ // inject the contents of the document in, removing the scripts
+ // to avoid any 'Permission Denied' errors in IE
+ .append(res.responseText.replace(rscript, ""))
+
+ // Locate the specified elements
+ .find(selector) :
+
+ // If not, just inject the full result
+ res.responseText );
+ }
+
+ if ( callback ) {
+ self.each( callback, [res.responseText, status, res] );
+ }
+ }
+ });
+
+ return this;
+ },
+
+ serialize: function() {
+ return jQuery.param(this.serializeArray());
+ },
+
+ serializeArray: function() {
+ return this.map(function() {
+ return this.elements ? jQuery.makeArray(this.elements) : this;
+ })
+ .filter(function() {
+ return this.name && !this.disabled &&
+ (this.checked || rselectTextarea.test(this.nodeName) ||
+ rinput.test(this.type));
+ })
+ .map(function( i, elem ) {
+ var val = jQuery(this).val();
+
+ return val == null ?
+ null :
+ jQuery.isArray(val) ?
+ jQuery.map( val, function( val, i ) {
+ return { name: elem.name, value: val };
+ }) :
+ { name: elem.name, value: val };
+ }).get();
+ }
+});
+
+// Attach a bunch of functions for handling common AJAX events
+jQuery.each( "ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "), function( i, o ) {
+ jQuery.fn[o] = function( f ) {
+ return this.bind(o, f);
+ };
+});
+
+jQuery.extend({
+ get: function( url, data, callback, type ) {
+ // shift arguments if data argument was omited
+ if ( jQuery.isFunction( data ) ) {
+ type = type || callback;
+ callback = data;
+ data = null;
+ }
+
+ return jQuery.ajax({
+ type: "GET",
+ url: url,
+ data: data,
+ success: callback,
+ dataType: type
+ });
+ },
+
+ getScript: function( url, callback ) {
+ return jQuery.get(url, null, callback, "script");
+ },
+
+ getJSON: function( url, data, callback ) {
+ return jQuery.get(url, data, callback, "json");
+ },
+
+ post: function( url, data, callback, type ) {
+ // shift arguments if data argument was omited
+ if ( jQuery.isFunction( data ) ) {
+ type = type || callback;
+ callback = data;
+ data = {};
+ }
+
+ return jQuery.ajax({
+ type: "POST",
+ url: url,
+ data: data,
+ success: callback,
+ dataType: type
+ });
+ },
+
+ ajaxSetup: function( settings ) {
+ jQuery.extend( jQuery.ajaxSettings, settings );
+ },
+
+ ajaxSettings: {
+ url: location.href,
+ global: true,
+ type: "GET",
+ contentType: "application/x-www-form-urlencoded",
+ processData: true,
+ async: true,
+ /*
+ timeout: 0,
+ data: null,
+ username: null,
+ password: null,
+ traditional: false,
+ */
+ // This function can be overriden by calling jQuery.ajaxSetup
+ xhr: function() {
+ return new window.XMLHttpRequest();
+ },
+ accepts: {
+ xml: "application/xml, text/xml",
+ html: "text/html",
+ script: "text/javascript, application/javascript",
+ json: "application/json, text/javascript",
+ text: "text/plain",
+ _default: "*/*"
+ }
+ },
+
+ ajax: function( origSettings ) {
+ var s = jQuery.extend(true, {}, jQuery.ajaxSettings, origSettings),
+ jsonp, status, data, type = s.type.toUpperCase(), noContent = rnoContent.test(type);
+
+ s.url = s.url.replace( rhash, "" );
+
+ // Use original (not extended) context object if it was provided
+ s.context = origSettings && origSettings.context != null ? origSettings.context : s;
+
+ // convert data if not already a string
+ if ( s.data && s.processData && typeof s.data !== "string" ) {
+ s.data = jQuery.param( s.data, s.traditional );
+ }
+
+ // Handle JSONP Parameter Callbacks
+ if ( s.dataType === "jsonp" ) {
+ if ( type === "GET" ) {
+ if ( !jsre.test( s.url ) ) {
+ s.url += (rquery.test( s.url ) ? "&" : "?") + (s.jsonp || "callback") + "=?";
+ }
+ } else if ( !s.data || !jsre.test(s.data) ) {
+ s.data = (s.data ? s.data + "&" : "") + (s.jsonp || "callback") + "=?";
+ }
+ s.dataType = "json";
+ }
+
+ // Build temporary JSONP function
+ if ( s.dataType === "json" && (s.data && jsre.test(s.data) || jsre.test(s.url)) ) {
+ jsonp = s.jsonpCallback || ("jsonp" + jsc++);
+
+ // Replace the =? sequence both in the query string and the data
+ if ( s.data ) {
+ s.data = (s.data + "").replace(jsre, "=" + jsonp + "$1");
+ }
+
+ s.url = s.url.replace(jsre, "=" + jsonp + "$1");
+
+ // We need to make sure
+ // that a JSONP style response is executed properly
+ s.dataType = "script";
+
+ // Handle JSONP-style loading
+ var customJsonp = window[ jsonp ];
+
+ window[ jsonp ] = function( tmp ) {
+ if ( jQuery.isFunction( customJsonp ) ) {
+ customJsonp( tmp );
+
+ } else {
+ // Garbage collect
+ window[ jsonp ] = undefined;
+
+ try {
+ delete window[ jsonp ];
+ } catch( jsonpError ) {}
+ }
+
+ data = tmp;
+ jQuery.handleSuccess( s, xhr, status, data );
+ jQuery.handleComplete( s, xhr, status, data );
+
+ if ( head ) {
+ head.removeChild( script );
+ }
+ };
+ }
+
+ if ( s.dataType === "script" && s.cache === null ) {
+ s.cache = false;
+ }
+
+ if ( s.cache === false && noContent ) {
+ var ts = jQuery.now();
+
+ // try replacing _= if it is there
+ var ret = s.url.replace(rts, "$1_=" + ts);
+
+ // if nothing was replaced, add timestamp to the end
+ s.url = ret + ((ret === s.url) ? (rquery.test(s.url) ? "&" : "?") + "_=" + ts : "");
+ }
+
+ // If data is available, append data to url for GET/HEAD requests
+ if ( s.data && noContent ) {
+ s.url += (rquery.test(s.url) ? "&" : "?") + s.data;
+ }
+
+ // Watch for a new set of requests
+ if ( s.global && jQuery.active++ === 0 ) {
+ jQuery.event.trigger( "ajaxStart" );
+ }
+
+ // Matches an absolute URL, and saves the domain
+ var parts = rurl.exec( s.url ),
+ remote = parts && (parts[1] && parts[1].toLowerCase() !== location.protocol || parts[2].toLowerCase() !== location.host);
+
+ // If we're requesting a remote document
+ // and trying to load JSON or Script with a GET
+ if ( s.dataType === "script" && type === "GET" && remote ) {
+ var head = document.getElementsByTagName("head")[0] || document.documentElement;
+ var script = document.createElement("script");
+ if ( s.scriptCharset ) {
+ script.charset = s.scriptCharset;
+ }
+ script.src = s.url;
+
+ // Handle Script loading
+ if ( !jsonp ) {
+ var done = false;
+
+ // Attach handlers for all browsers
+ script.onload = script.onreadystatechange = function() {
+ if ( !done && (!this.readyState ||
+ this.readyState === "loaded" || this.readyState === "complete") ) {
+ done = true;
+ jQuery.handleSuccess( s, xhr, status, data );
+ jQuery.handleComplete( s, xhr, status, data );
+
+ // Handle memory leak in IE
+ script.onload = script.onreadystatechange = null;
+ if ( head && script.parentNode ) {
+ head.removeChild( script );
+ }
+ }
+ };
+ }
+
+ // Use insertBefore instead of appendChild to circumvent an IE6 bug.
+ // This arises when a base node is used (#2709 and #4378).
+ head.insertBefore( script, head.firstChild );
+
+ // We handle everything using the script element injection
+ return undefined;
+ }
+
+ var requestDone = false;
+
+ // Create the request object
+ var xhr = s.xhr();
+
+ if ( !xhr ) {
+ return;
+ }
+
+ // Open the socket
+ // Passing null username, generates a login popup on Opera (#2865)
+ if ( s.username ) {
+ xhr.open(type, s.url, s.async, s.username, s.password);
+ } else {
+ xhr.open(type, s.url, s.async);
+ }
+
+ // Need an extra try/catch for cross domain requests in Firefox 3
+ try {
+ // Set content-type if data specified and content-body is valid for this type
+ if ( (s.data != null && !noContent) || (origSettings && origSettings.contentType) ) {
+ xhr.setRequestHeader("Content-Type", s.contentType);
+ }
+
+ // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
+ if ( s.ifModified ) {
+ if ( jQuery.lastModified[s.url] ) {
+ xhr.setRequestHeader("If-Modified-Since", jQuery.lastModified[s.url]);
+ }
+
+ if ( jQuery.etag[s.url] ) {
+ xhr.setRequestHeader("If-None-Match", jQuery.etag[s.url]);
+ }
+ }
+
+ // Set header so the called script knows that it's an XMLHttpRequest
+ // Only send the header if it's not a remote XHR
+ if ( !remote ) {
+ xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest");
+ }
+
+ // Set the Accepts header for the server, depending on the dataType
+ xhr.setRequestHeader("Accept", s.dataType && s.accepts[ s.dataType ] ?
+ s.accepts[ s.dataType ] + ", */*; q=0.01" :
+ s.accepts._default );
+ } catch( headerError ) {}
+
+ // Allow custom headers/mimetypes and early abort
+ if ( s.beforeSend && s.beforeSend.call(s.context, xhr, s) === false ) {
+ // Handle the global AJAX counter
+ if ( s.global && jQuery.active-- === 1 ) {
+ jQuery.event.trigger( "ajaxStop" );
+ }
+
+ // close opended socket
+ xhr.abort();
+ return false;
+ }
+
+ if ( s.global ) {
+ jQuery.triggerGlobal( s, "ajaxSend", [xhr, s] );
+ }
+
+ // Wait for a response to come back
+ var onreadystatechange = xhr.onreadystatechange = function( isTimeout ) {
+ // The request was aborted
+ if ( !xhr || xhr.readyState === 0 || isTimeout === "abort" ) {
+ // Opera doesn't call onreadystatechange before this point
+ // so we simulate the call
+ if ( !requestDone ) {
+ jQuery.handleComplete( s, xhr, status, data );
+ }
+
+ requestDone = true;
+ if ( xhr ) {
+ xhr.onreadystatechange = jQuery.noop;
+ }
+
+ // The transfer is complete and the data is available, or the request timed out
+ } else if ( !requestDone && xhr && (xhr.readyState === 4 || isTimeout === "timeout") ) {
+ requestDone = true;
+ xhr.onreadystatechange = jQuery.noop;
+
+ status = isTimeout === "timeout" ?
+ "timeout" :
+ !jQuery.httpSuccess( xhr ) ?
+ "error" :
+ s.ifModified && jQuery.httpNotModified( xhr, s.url ) ?
+ "notmodified" :
+ "success";
+
+ var errMsg;
+
+ if ( status === "success" ) {
+ // Watch for, and catch, XML document parse errors
+ try {
+ // process the data (runs the xml through httpData regardless of callback)
+ data = jQuery.httpData( xhr, s.dataType, s );
+ } catch( parserError ) {
+ status = "parsererror";
+ errMsg = parserError;
+ }
+ }
+
+ // Make sure that the request was successful or notmodified
+ if ( status === "success" || status === "notmodified" ) {
+ // JSONP handles its own success callback
+ if ( !jsonp ) {
+ jQuery.handleSuccess( s, xhr, status, data );
+ }
+ } else {
+ jQuery.handleError( s, xhr, status, errMsg );
+ }
+
+ // Fire the complete handlers
+ if ( !jsonp ) {
+ jQuery.handleComplete( s, xhr, status, data );
+ }
+
+ if ( isTimeout === "timeout" ) {
+ xhr.abort();
+ }
+
+ // Stop memory leaks
+ if ( s.async ) {
+ xhr = null;
+ }
+ }
+ };
+
+ // Override the abort handler, if we can (IE 6 doesn't allow it, but that's OK)
+ // Opera doesn't fire onreadystatechange at all on abort
+ try {
+ var oldAbort = xhr.abort;
+ xhr.abort = function() {
+ if ( xhr ) {
+ // oldAbort has no call property in IE7 so
+ // just do it this way, which works in all
+ // browsers
+ Function.prototype.call.call( oldAbort, xhr );
+ }
+
+ onreadystatechange( "abort" );
+ };
+ } catch( abortError ) {}
+
+ // Timeout checker
+ if ( s.async && s.timeout > 0 ) {
+ setTimeout(function() {
+ // Check to see if the request is still happening
+ if ( xhr && !requestDone ) {
+ onreadystatechange( "timeout" );
+ }
+ }, s.timeout);
+ }
+
+ // Send the data
+ try {
+ xhr.send( noContent || s.data == null ? null : s.data );
+
+ } catch( sendError ) {
+ jQuery.handleError( s, xhr, null, sendError );
+
+ // Fire the complete handlers
+ jQuery.handleComplete( s, xhr, status, data );
+ }
+
+ // firefox 1.5 doesn't fire statechange for sync requests
+ if ( !s.async ) {
+ onreadystatechange();
+ }
+
+ // return XMLHttpRequest to allow aborting the request etc.
+ return xhr;
+ },
+
+ // Serialize an array of form elements or a set of
+ // key/values into a query string
+ param: function( a, traditional ) {
+ var s = [],
+ add = function( key, value ) {
+ // If value is a function, invoke it and return its value
+ value = jQuery.isFunction(value) ? value() : value;
+ s[ s.length ] = encodeURIComponent(key) + "=" + encodeURIComponent(value);
+ };
+
+ // Set traditional to true for jQuery <= 1.3.2 behavior.
+ if ( traditional === undefined ) {
+ traditional = jQuery.ajaxSettings.traditional;
+ }
+
+ // If an array was passed in, assume that it is an array of form elements.
+ if ( jQuery.isArray(a) || a.jquery ) {
+ // Serialize the form elements
+ jQuery.each( a, function() {
+ add( this.name, this.value );
+ });
+
+ } else {
+ // If traditional, encode the "old" way (the way 1.3.2 or older
+ // did it), otherwise encode params recursively.
+ for ( var prefix in a ) {
+ buildParams( prefix, a[prefix], traditional, add );
+ }
+ }
+
+ // Return the resulting serialization
+ return s.join("&").replace(r20, "+");
+ }
+});
+
+function buildParams( prefix, obj, traditional, add ) {
+ if ( jQuery.isArray(obj) && obj.length ) {
+ // Serialize array item.
+ jQuery.each( obj, function( i, v ) {
+ if ( traditional || rbracket.test( prefix ) ) {
+ // Treat each array item as a scalar.
+ add( prefix, v );
+
+ } else {
+ // If array item is non-scalar (array or object), encode its
+ // numeric index to resolve deserialization ambiguity issues.
+ // Note that rack (as of 1.0.0) can't currently deserialize
+ // nested arrays properly, and attempting to do so may cause
+ // a server error. Possible fixes are to modify rack's
+ // deserialization algorithm or to provide an option or flag
+ // to force array serialization to be shallow.
+ buildParams( prefix + "[" + ( typeof v === "object" || jQuery.isArray(v) ? i : "" ) + "]", v, traditional, add );
+ }
+ });
+
+ } else if ( !traditional && obj != null && typeof obj === "object" ) {
+ if ( jQuery.isEmptyObject( obj ) ) {
+ add( prefix, "" );
+
+ // Serialize object item.
+ } else {
+ jQuery.each( obj, function( k, v ) {
+ buildParams( prefix + "[" + k + "]", v, traditional, add );
+ });
+ }
+
+ } else {
+ // Serialize scalar item.
+ add( prefix, obj );
+ }
+}
+
+// This is still on the jQuery object... for now
+// Want to move this to jQuery.ajax some day
+jQuery.extend({
+
+ // Counter for holding the number of active queries
+ active: 0,
+
+ // Last-Modified header cache for next request
+ lastModified: {},
+ etag: {},
+
+ handleError: function( s, xhr, status, e ) {
+ // If a local callback was specified, fire it
+ if ( s.error ) {
+ s.error.call( s.context, xhr, status, e );
+ }
+
+ // Fire the global callback
+ if ( s.global ) {
+ jQuery.triggerGlobal( s, "ajaxError", [xhr, s, e] );
+ }
+ },
+
+ handleSuccess: function( s, xhr, status, data ) {
+ // If a local callback was specified, fire it and pass it the data
+ if ( s.success ) {
+ s.success.call( s.context, data, status, xhr );
+ }
+
+ // Fire the global callback
+ if ( s.global ) {
+ jQuery.triggerGlobal( s, "ajaxSuccess", [xhr, s] );
+ }
+ },
+
+ handleComplete: function( s, xhr, status ) {
+ // Process result
+ if ( s.complete ) {
+ s.complete.call( s.context, xhr, status );
+ }
+
+ // The request was completed
+ if ( s.global ) {
+ jQuery.triggerGlobal( s, "ajaxComplete", [xhr, s] );
+ }
+
+ // Handle the global AJAX counter
+ if ( s.global && jQuery.active-- === 1 ) {
+ jQuery.event.trigger( "ajaxStop" );
+ }
+ },
+
+ triggerGlobal: function( s, type, args ) {
+ (s.context && s.context.url == null ? jQuery(s.context) : jQuery.event).trigger(type, args);
+ },
+
+ // Determines if an XMLHttpRequest was successful or not
+ httpSuccess: function( xhr ) {
+ try {
+ // IE error sometimes returns 1223 when it should be 204 so treat it as success, see #1450
+ return !xhr.status && location.protocol === "file:" ||
+ xhr.status >= 200 && xhr.status < 300 ||
+ xhr.status === 304 || xhr.status === 1223;
+ } catch(e) {}
+
+ return false;
+ },
+
+ // Determines if an XMLHttpRequest returns NotModified
+ httpNotModified: function( xhr, url ) {
+ var lastModified = xhr.getResponseHeader("Last-Modified"),
+ etag = xhr.getResponseHeader("Etag");
+
+ if ( lastModified ) {
+ jQuery.lastModified[url] = lastModified;
+ }
+
+ if ( etag ) {
+ jQuery.etag[url] = etag;
+ }
+
+ return xhr.status === 304;
+ },
+
+ httpData: function( xhr, type, s ) {
+ var ct = xhr.getResponseHeader("content-type") || "",
+ xml = type === "xml" || !type && ct.indexOf("xml") >= 0,
+ data = xml ? xhr.responseXML : xhr.responseText;
+
+ if ( xml && data.documentElement.nodeName === "parsererror" ) {
+ jQuery.error( "parsererror" );
+ }
+
+ // Allow a pre-filtering function to sanitize the response
+ // s is checked to keep backwards compatibility
+ if ( s && s.dataFilter ) {
+ data = s.dataFilter( data, type );
+ }
+
+ // The filter can actually parse the response
+ if ( typeof data === "string" ) {
+ // Get the JavaScript object, if JSON is used.
+ if ( type === "json" || !type && ct.indexOf("json") >= 0 ) {
+ data = jQuery.parseJSON( data );
+
+ // If the type is "script", eval it in global context
+ } else if ( type === "script" || !type && ct.indexOf("javascript") >= 0 ) {
+ jQuery.globalEval( data );
+ }
+ }
+
+ return data;
+ }
+
+});
+
+/*
+ * Create the request object; Microsoft failed to properly
+ * implement the XMLHttpRequest in IE7 (can't request local files),
+ * so we use the ActiveXObject when it is available
+ * Additionally XMLHttpRequest can be disabled in IE7/IE8 so
+ * we need a fallback.
+ */
+if ( window.ActiveXObject ) {
+ jQuery.ajaxSettings.xhr = function() {
+ if ( window.location.protocol !== "file:" ) {
+ try {
+ return new window.XMLHttpRequest();
+ } catch(xhrError) {}
+ }
+
+ try {
+ return new window.ActiveXObject("Microsoft.XMLHTTP");
+ } catch(activeError) {}
+ };
+}
+
+// Does this browser support XHR requests?
+jQuery.support.ajax = !!jQuery.ajaxSettings.xhr();
+
+
+
+
+var elemdisplay = {},
+ rfxtypes = /^(?:toggle|show|hide)$/,
+ rfxnum = /^([+\-]=)?([\d+.\-]+)(.*)$/,
+ timerId,
+ fxAttrs = [
+ // height animations
+ [ "height", "marginTop", "marginBottom", "paddingTop", "paddingBottom" ],
+ // width animations
+ [ "width", "marginLeft", "marginRight", "paddingLeft", "paddingRight" ],
+ // opacity animations
+ [ "opacity" ]
+ ];
+
+jQuery.fn.extend({
+ show: function( speed, easing, callback ) {
+ var elem, display;
+
+ if ( speed || speed === 0 ) {
+ return this.animate( genFx("show", 3), speed, easing, callback);
+
+ } else {
+ for ( var i = 0, j = this.length; i < j; i++ ) {
+ elem = this[i];
+ display = elem.style.display;
+
+ // Reset the inline display of this element to learn if it is
+ // being hidden by cascaded rules or not
+ if ( !jQuery.data(elem, "olddisplay") && display === "none" ) {
+ display = elem.style.display = "";
+ }
+
+ // Set elements which have been overridden with display: none
+ // in a stylesheet to whatever the default browser style is
+ // for such an element
+ if ( display === "" && jQuery.css( elem, "display" ) === "none" ) {
+ jQuery.data(elem, "olddisplay", defaultDisplay(elem.nodeName));
+ }
+ }
+
+ // Set the display of most of the elements in a second loop
+ // to avoid the constant reflow
+ for ( i = 0; i < j; i++ ) {
+ elem = this[i];
+ display = elem.style.display;
+
+ if ( display === "" || display === "none" ) {
+ elem.style.display = jQuery.data(elem, "olddisplay") || "";
+ }
+ }
+
+ return this;
+ }
+ },
+
+ hide: function( speed, easing, callback ) {
+ if ( speed || speed === 0 ) {
+ return this.animate( genFx("hide", 3), speed, easing, callback);
+
+ } else {
+ for ( var i = 0, j = this.length; i < j; i++ ) {
+ var display = jQuery.css( this[i], "display" );
+
+ if ( display !== "none" ) {
+ jQuery.data( this[i], "olddisplay", display );
+ }
+ }
+
+ // Set the display of the elements in a second loop
+ // to avoid the constant reflow
+ for ( i = 0; i < j; i++ ) {
+ this[i].style.display = "none";
+ }
+
+ return this;
+ }
+ },
+
+ // Save the old toggle function
+ _toggle: jQuery.fn.toggle,
+
+ toggle: function( fn, fn2, callback ) {
+ var bool = typeof fn === "boolean";
+
+ if ( jQuery.isFunction(fn) && jQuery.isFunction(fn2) ) {
+ this._toggle.apply( this, arguments );
+
+ } else if ( fn == null || bool ) {
+ this.each(function() {
+ var state = bool ? fn : jQuery(this).is(":hidden");
+ jQuery(this)[ state ? "show" : "hide" ]();
+ });
+
+ } else {
+ this.animate(genFx("toggle", 3), fn, fn2, callback);
+ }
+
+ return this;
+ },
+
+ fadeTo: function( speed, to, easing, callback ) {
+ return this.filter(":hidden").css("opacity", 0).show().end()
+ .animate({opacity: to}, speed, easing, callback);
+ },
+
+ animate: function( prop, speed, easing, callback ) {
+ var optall = jQuery.speed(speed, easing, callback);
+
+ if ( jQuery.isEmptyObject( prop ) ) {
+ return this.each( optall.complete );
+ }
+
+ return this[ optall.queue === false ? "each" : "queue" ](function() {
+ // XXX 'this' does not always have a nodeName when running the
+ // test suite
+
+ var opt = jQuery.extend({}, optall), p,
+ isElement = this.nodeType === 1,
+ hidden = isElement && jQuery(this).is(":hidden"),
+ self = this;
+
+ for ( p in prop ) {
+ var name = jQuery.camelCase( p );
+
+ if ( p !== name ) {
+ prop[ name ] = prop[ p ];
+ delete prop[ p ];
+ p = name;
+ }
+
+ if ( prop[p] === "hide" && hidden || prop[p] === "show" && !hidden ) {
+ return opt.complete.call(this);
+ }
+
+ if ( isElement && ( p === "height" || p === "width" ) ) {
+ // Make sure that nothing sneaks out
+ // Record all 3 overflow attributes because IE does not
+ // change the overflow attribute when overflowX and
+ // overflowY are set to the same value
+ opt.overflow = [ this.style.overflow, this.style.overflowX, this.style.overflowY ];
+
+ // Set display property to inline-block for height/width
+ // animations on inline elements that are having width/height
+ // animated
+ if ( jQuery.css( this, "display" ) === "inline" &&
+ jQuery.css( this, "float" ) === "none" ) {
+ if ( !jQuery.support.inlineBlockNeedsLayout ) {
+ this.style.display = "inline-block";
+
+ } else {
+ var display = defaultDisplay(this.nodeName);
+
+ // inline-level elements accept inline-block;
+ // block-level elements need to be inline with layout
+ if ( display === "inline" ) {
+ this.style.display = "inline-block";
+
+ } else {
+ this.style.display = "inline";
+ this.style.zoom = 1;
+ }
+ }
+ }
+ }
+
+ if ( jQuery.isArray( prop[p] ) ) {
+ // Create (if needed) and add to specialEasing
+ (opt.specialEasing = opt.specialEasing || {})[p] = prop[p][1];
+ prop[p] = prop[p][0];
+ }
+ }
+
+ if ( opt.overflow != null ) {
+ this.style.overflow = "hidden";
+ }
+
+ opt.curAnim = jQuery.extend({}, prop);
+
+ jQuery.each( prop, function( name, val ) {
+ var e = new jQuery.fx( self, opt, name );
+
+ if ( rfxtypes.test(val) ) {
+ e[ val === "toggle" ? hidden ? "show" : "hide" : val ]( prop );
+
+ } else {
+ var parts = rfxnum.exec(val),
+ start = e.cur() || 0;
+
+ if ( parts ) {
+ var end = parseFloat( parts[2] ),
+ unit = parts[3] || "px";
+
+ // We need to compute starting value
+ if ( unit !== "px" ) {
+ jQuery.style( self, name, (end || 1) + unit);
+ start = ((end || 1) / e.cur()) * start;
+ jQuery.style( self, name, start + unit);
+ }
+
+ // If a +=/-= token was provided, we're doing a relative animation
+ if ( parts[1] ) {
+ end = ((parts[1] === "-=" ? -1 : 1) * end) + start;
+ }
+
+ e.custom( start, end, unit );
+
+ } else {
+ e.custom( start, val, "" );
+ }
+ }
+ });
+
+ // For JS strict compliance
+ return true;
+ });
+ },
+
+ stop: function( clearQueue, gotoEnd ) {
+ var timers = jQuery.timers;
+
+ if ( clearQueue ) {
+ this.queue([]);
+ }
+
+ this.each(function() {
+ // go in reverse order so anything added to the queue during the loop is ignored
+ for ( var i = timers.length - 1; i >= 0; i-- ) {
+ if ( timers[i].elem === this ) {
+ if (gotoEnd) {
+ // force the next step to be the last
+ timers[i](true);
+ }
+
+ timers.splice(i, 1);
+ }
+ }
+ });
+
+ // start the next in the queue if the last step wasn't forced
+ if ( !gotoEnd ) {
+ this.dequeue();
+ }
+
+ return this;
+ }
+
+});
+
+function genFx( type, num ) {
+ var obj = {};
+
+ jQuery.each( fxAttrs.concat.apply([], fxAttrs.slice(0,num)), function() {
+ obj[ this ] = type;
+ });
+
+ return obj;
+}
+
+// Generate shortcuts for custom animations
+jQuery.each({
+ slideDown: genFx("show", 1),
+ slideUp: genFx("hide", 1),
+ slideToggle: genFx("toggle", 1),
+ fadeIn: { opacity: "show" },
+ fadeOut: { opacity: "hide" },
+ fadeToggle: { opacity: "toggle" }
+}, function( name, props ) {
+ jQuery.fn[ name ] = function( speed, easing, callback ) {
+ return this.animate( props, speed, easing, callback );
+ };
+});
+
+jQuery.extend({
+ speed: function( speed, easing, fn ) {
+ var opt = speed && typeof speed === "object" ? jQuery.extend({}, speed) : {
+ complete: fn || !fn && easing ||
+ jQuery.isFunction( speed ) && speed,
+ duration: speed,
+ easing: fn && easing || easing && !jQuery.isFunction(easing) && easing
+ };
+
+ opt.duration = jQuery.fx.off ? 0 : typeof opt.duration === "number" ? opt.duration :
+ opt.duration in jQuery.fx.speeds ? jQuery.fx.speeds[opt.duration] : jQuery.fx.speeds._default;
+
+ // Queueing
+ opt.old = opt.complete;
+ opt.complete = function() {
+ if ( opt.queue !== false ) {
+ jQuery(this).dequeue();
+ }
+ if ( jQuery.isFunction( opt.old ) ) {
+ opt.old.call( this );
+ }
+ };
+
+ return opt;
+ },
+
+ easing: {
+ linear: function( p, n, firstNum, diff ) {
+ return firstNum + diff * p;
+ },
+ swing: function( p, n, firstNum, diff ) {
+ return ((-Math.cos(p*Math.PI)/2) + 0.5) * diff + firstNum;
+ }
+ },
+
+ timers: [],
+
+ fx: function( elem, options, prop ) {
+ this.options = options;
+ this.elem = elem;
+ this.prop = prop;
+
+ if ( !options.orig ) {
+ options.orig = {};
+ }
+ }
+
+});
+
+jQuery.fx.prototype = {
+ // Simple function for setting a style value
+ update: function() {
+ if ( this.options.step ) {
+ this.options.step.call( this.elem, this.now, this );
+ }
+
+ (jQuery.fx.step[this.prop] || jQuery.fx.step._default)( this );
+ },
+
+ // Get the current size
+ cur: function() {
+ if ( this.elem[this.prop] != null && (!this.elem.style || this.elem.style[this.prop] == null) ) {
+ return this.elem[ this.prop ];
+ }
+
+ var r = parseFloat( jQuery.css( this.elem, this.prop ) );
+ return r && r > -10000 ? r : 0;
+ },
+
+ // Start an animation from one number to another
+ custom: function( from, to, unit ) {
+ var self = this,
+ fx = jQuery.fx;
+
+ this.startTime = jQuery.now();
+ this.start = from;
+ this.end = to;
+ this.unit = unit || this.unit || "px";
+ this.now = this.start;
+ this.pos = this.state = 0;
+
+ function t( gotoEnd ) {
+ return self.step(gotoEnd);
+ }
+
+ t.elem = this.elem;
+
+ if ( t() && jQuery.timers.push(t) && !timerId ) {
+ timerId = setInterval(fx.tick, fx.interval);
+ }
+ },
+
+ // Simple 'show' function
+ show: function() {
+ // Remember where we started, so that we can go back to it later
+ this.options.orig[this.prop] = jQuery.style( this.elem, this.prop );
+ this.options.show = true;
+
+ // Begin the animation
+ // Make sure that we start at a small width/height to avoid any
+ // flash of content
+ this.custom(this.prop === "width" || this.prop === "height" ? 1 : 0, this.cur());
+
+ // Start by showing the element
+ jQuery( this.elem ).show();
+ },
+
+ // Simple 'hide' function
+ hide: function() {
+ // Remember where we started, so that we can go back to it later
+ this.options.orig[this.prop] = jQuery.style( this.elem, this.prop );
+ this.options.hide = true;
+
+ // Begin the animation
+ this.custom(this.cur(), 0);
+ },
+
+ // Each step of an animation
+ step: function( gotoEnd ) {
+ var t = jQuery.now(), done = true;
+
+ if ( gotoEnd || t >= this.options.duration + this.startTime ) {
+ this.now = this.end;
+ this.pos = this.state = 1;
+ this.update();
+
+ this.options.curAnim[ this.prop ] = true;
+
+ for ( var i in this.options.curAnim ) {
+ if ( this.options.curAnim[i] !== true ) {
+ done = false;
+ }
+ }
+
+ if ( done ) {
+ // Reset the overflow
+ if ( this.options.overflow != null && !jQuery.support.shrinkWrapBlocks ) {
+ var elem = this.elem,
+ options = this.options;
+
+ jQuery.each( [ "", "X", "Y" ], function (index, value) {
+ elem.style[ "overflow" + value ] = options.overflow[index];
+ } );
+ }
+
+ // Hide the element if the "hide" operation was done
+ if ( this.options.hide ) {
+ jQuery(this.elem).hide();
+ }
+
+ // Reset the properties, if the item has been hidden or shown
+ if ( this.options.hide || this.options.show ) {
+ for ( var p in this.options.curAnim ) {
+ jQuery.style( this.elem, p, this.options.orig[p] );
+ }
+ }
+
+ // Execute the complete function
+ this.options.complete.call( this.elem );
+ }
+
+ return false;
+
+ } else {
+ var n = t - this.startTime;
+ this.state = n / this.options.duration;
+
+ // Perform the easing function, defaults to swing
+ var specialEasing = this.options.specialEasing && this.options.specialEasing[this.prop];
+ var defaultEasing = this.options.easing || (jQuery.easing.swing ? "swing" : "linear");
+ this.pos = jQuery.easing[specialEasing || defaultEasing](this.state, n, 0, 1, this.options.duration);
+ this.now = this.start + ((this.end - this.start) * this.pos);
+
+ // Perform the next step of the animation
+ this.update();
+ }
+
+ return true;
+ }
+};
+
+jQuery.extend( jQuery.fx, {
+ tick: function() {
+ var timers = jQuery.timers;
+
+ for ( var i = 0; i < timers.length; i++ ) {
+ if ( !timers[i]() ) {
+ timers.splice(i--, 1);
+ }
+ }
+
+ if ( !timers.length ) {
+ jQuery.fx.stop();
+ }
+ },
+
+ interval: 13,
+
+ stop: function() {
+ clearInterval( timerId );
+ timerId = null;
+ },
+
+ speeds: {
+ slow: 600,
+ fast: 200,
+ // Default speed
+ _default: 400
+ },
+
+ step: {
+ opacity: function( fx ) {
+ jQuery.style( fx.elem, "opacity", fx.now );
+ },
+
+ _default: function( fx ) {
+ if ( fx.elem.style && fx.elem.style[ fx.prop ] != null ) {
+ fx.elem.style[ fx.prop ] = (fx.prop === "width" || fx.prop === "height" ? Math.max(0, fx.now) : fx.now) + fx.unit;
+ } else {
+ fx.elem[ fx.prop ] = fx.now;
+ }
+ }
+ }
+});
+
+if ( jQuery.expr && jQuery.expr.filters ) {
+ jQuery.expr.filters.animated = function( elem ) {
+ return jQuery.grep(jQuery.timers, function( fn ) {
+ return elem === fn.elem;
+ }).length;
+ };
+}
+
+function defaultDisplay( nodeName ) {
+ if ( !elemdisplay[ nodeName ] ) {
+ var elem = jQuery("<" + nodeName + ">").appendTo("body"),
+ display = elem.css("display");
+
+ elem.remove();
+
+ if ( display === "none" || display === "" ) {
+ display = "block";
+ }
+
+ elemdisplay[ nodeName ] = display;
+ }
+
+ return elemdisplay[ nodeName ];
+}
+
+
+
+
+var rtable = /^t(?:able|d|h)$/i,
+ rroot = /^(?:body|html)$/i;
+
+if ( "getBoundingClientRect" in document.documentElement ) {
+ jQuery.fn.offset = function( options ) {
+ var elem = this[0], box;
+
+ if ( options ) {
+ return this.each(function( i ) {
+ jQuery.offset.setOffset( this, options, i );
+ });
+ }
+
+ if ( !elem || !elem.ownerDocument ) {
+ return null;
+ }
+
+ if ( elem === elem.ownerDocument.body ) {
+ return jQuery.offset.bodyOffset( elem );
+ }
+
+ try {
+ box = elem.getBoundingClientRect();
+ } catch(e) {}
+
+ var doc = elem.ownerDocument,
+ docElem = doc.documentElement;
+
+ // Make sure we're not dealing with a disconnected DOM node
+ if ( !box || !jQuery.contains( docElem, elem ) ) {
+ return box || { top: 0, left: 0 };
+ }
+
+ var body = doc.body,
+ win = getWindow(doc),
+ clientTop = docElem.clientTop || body.clientTop || 0,
+ clientLeft = docElem.clientLeft || body.clientLeft || 0,
+ scrollTop = (win.pageYOffset || jQuery.support.boxModel && docElem.scrollTop || body.scrollTop ),
+ scrollLeft = (win.pageXOffset || jQuery.support.boxModel && docElem.scrollLeft || body.scrollLeft),
+ top = box.top + scrollTop - clientTop,
+ left = box.left + scrollLeft - clientLeft;
+
+ return { top: top, left: left };
+ };
+
+} else {
+ jQuery.fn.offset = function( options ) {
+ var elem = this[0];
+
+ if ( options ) {
+ return this.each(function( i ) {
+ jQuery.offset.setOffset( this, options, i );
+ });
+ }
+
+ if ( !elem || !elem.ownerDocument ) {
+ return null;
+ }
+
+ if ( elem === elem.ownerDocument.body ) {
+ return jQuery.offset.bodyOffset( elem );
+ }
+
+ jQuery.offset.initialize();
+
+ var computedStyle,
+ offsetParent = elem.offsetParent,
+ prevOffsetParent = elem,
+ doc = elem.ownerDocument,
+ docElem = doc.documentElement,
+ body = doc.body,
+ defaultView = doc.defaultView,
+ prevComputedStyle = defaultView ? defaultView.getComputedStyle( elem, null ) : elem.currentStyle,
+ top = elem.offsetTop,
+ left = elem.offsetLeft;
+
+ while ( (elem = elem.parentNode) && elem !== body && elem !== docElem ) {
+ if ( jQuery.offset.supportsFixedPosition && prevComputedStyle.position === "fixed" ) {
+ break;
+ }
+
+ computedStyle = defaultView ? defaultView.getComputedStyle(elem, null) : elem.currentStyle;
+ top -= elem.scrollTop;
+ left -= elem.scrollLeft;
+
+ if ( elem === offsetParent ) {
+ top += elem.offsetTop;
+ left += elem.offsetLeft;
+
+ if ( jQuery.offset.doesNotAddBorder && !(jQuery.offset.doesAddBorderForTableAndCells && rtable.test(elem.nodeName)) ) {
+ top += parseFloat( computedStyle.borderTopWidth ) || 0;
+ left += parseFloat( computedStyle.borderLeftWidth ) || 0;
+ }
+
+ prevOffsetParent = offsetParent;
+ offsetParent = elem.offsetParent;
+ }
+
+ if ( jQuery.offset.subtractsBorderForOverflowNotVisible && computedStyle.overflow !== "visible" ) {
+ top += parseFloat( computedStyle.borderTopWidth ) || 0;
+ left += parseFloat( computedStyle.borderLeftWidth ) || 0;
+ }
+
+ prevComputedStyle = computedStyle;
+ }
+
+ if ( prevComputedStyle.position === "relative" || prevComputedStyle.position === "static" ) {
+ top += body.offsetTop;
+ left += body.offsetLeft;
+ }
+
+ if ( jQuery.offset.supportsFixedPosition && prevComputedStyle.position === "fixed" ) {
+ top += Math.max( docElem.scrollTop, body.scrollTop );
+ left += Math.max( docElem.scrollLeft, body.scrollLeft );
+ }
+
+ return { top: top, left: left };
+ };
+}
+
+jQuery.offset = {
+ initialize: function() {
+ var body = document.body, container = document.createElement("div"), innerDiv, checkDiv, table, td, bodyMarginTop = parseFloat( jQuery.css(body, "marginTop") ) || 0,
+ html = "<div style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;'><div></div></div><table style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;' cellpadding='0' cellspacing='0'><tr><td></td></tr></table>";
+
+ jQuery.extend( container.style, { position: "absolute", top: 0, left: 0, margin: 0, border: 0, width: "1px", height: "1px", visibility: "hidden" } );
+
+ container.innerHTML = html;
+ body.insertBefore( container, body.firstChild );
+ innerDiv = container.firstChild;
+ checkDiv = innerDiv.firstChild;
+ td = innerDiv.nextSibling.firstChild.firstChild;
+
+ this.doesNotAddBorder = (checkDiv.offsetTop !== 5);
+ this.doesAddBorderForTableAndCells = (td.offsetTop === 5);
+
+ checkDiv.style.position = "fixed";
+ checkDiv.style.top = "20px";
+
+ // safari subtracts parent border width here which is 5px
+ this.supportsFixedPosition = (checkDiv.offsetTop === 20 || checkDiv.offsetTop === 15);
+ checkDiv.style.position = checkDiv.style.top = "";
+
+ innerDiv.style.overflow = "hidden";
+ innerDiv.style.position = "relative";
+
+ this.subtractsBorderForOverflowNotVisible = (checkDiv.offsetTop === -5);
+
+ this.doesNotIncludeMarginInBodyOffset = (body.offsetTop !== bodyMarginTop);
+
+ body.removeChild( container );
+ body = container = innerDiv = checkDiv = table = td = null;
+ jQuery.offset.initialize = jQuery.noop;
+ },
+
+ bodyOffset: function( body ) {
+ var top = body.offsetTop,
+ left = body.offsetLeft;
+
+ jQuery.offset.initialize();
+
+ if ( jQuery.offset.doesNotIncludeMarginInBodyOffset ) {
+ top += parseFloat( jQuery.css(body, "marginTop") ) || 0;
+ left += parseFloat( jQuery.css(body, "marginLeft") ) || 0;
+ }
+
+ return { top: top, left: left };
+ },
+
+ setOffset: function( elem, options, i ) {
+ var position = jQuery.css( elem, "position" );
+
+ // set position first, in-case top/left are set even on static elem
+ if ( position === "static" ) {
+ elem.style.position = "relative";
+ }
+
+ var curElem = jQuery( elem ),
+ curOffset = curElem.offset(),
+ curCSSTop = jQuery.css( elem, "top" ),
+ curCSSLeft = jQuery.css( elem, "left" ),
+ calculatePosition = (position === "absolute" && jQuery.inArray('auto', [curCSSTop, curCSSLeft]) > -1),
+ props = {}, curPosition = {}, curTop, curLeft;
+
+ // need to be able to calculate position if either top or left is auto and position is absolute
+ if ( calculatePosition ) {
+ curPosition = curElem.position();
+ }
+
+ curTop = calculatePosition ? curPosition.top : parseInt( curCSSTop, 10 ) || 0;
+ curLeft = calculatePosition ? curPosition.left : parseInt( curCSSLeft, 10 ) || 0;
+
+ if ( jQuery.isFunction( options ) ) {
+ options = options.call( elem, i, curOffset );
+ }
+
+ if (options.top != null) {
+ props.top = (options.top - curOffset.top) + curTop;
+ }
+ if (options.left != null) {
+ props.left = (options.left - curOffset.left) + curLeft;
+ }
+
+ if ( "using" in options ) {
+ options.using.call( elem, props );
+ } else {
+ curElem.css( props );
+ }
+ }
+};
+
+
+jQuery.fn.extend({
+ position: function() {
+ if ( !this[0] ) {
+ return null;
+ }
+
+ var elem = this[0],
+
+ // Get *real* offsetParent
+ offsetParent = this.offsetParent(),
+
+ // Get correct offsets
+ offset = this.offset(),
+ parentOffset = rroot.test(offsetParent[0].nodeName) ? { top: 0, left: 0 } : offsetParent.offset();
+
+ // Subtract element margins
+ // note: when an element has margin: auto the offsetLeft and marginLeft
+ // are the same in Safari causing offset.left to incorrectly be 0
+ offset.top -= parseFloat( jQuery.css(elem, "marginTop") ) || 0;
+ offset.left -= parseFloat( jQuery.css(elem, "marginLeft") ) || 0;
+
+ // Add offsetParent borders
+ parentOffset.top += parseFloat( jQuery.css(offsetParent[0], "borderTopWidth") ) || 0;
+ parentOffset.left += parseFloat( jQuery.css(offsetParent[0], "borderLeftWidth") ) || 0;
+
+ // Subtract the two offsets
+ return {
+ top: offset.top - parentOffset.top,
+ left: offset.left - parentOffset.left
+ };
+ },
+
+ offsetParent: function() {
+ return this.map(function() {
+ var offsetParent = this.offsetParent || document.body;
+ while ( offsetParent && (!rroot.test(offsetParent.nodeName) && jQuery.css(offsetParent, "position") === "static") ) {
+ offsetParent = offsetParent.offsetParent;
+ }
+ return offsetParent;
+ });
+ }
+});
+
+
+// Create scrollLeft and scrollTop methods
+jQuery.each( ["Left", "Top"], function( i, name ) {
+ var method = "scroll" + name;
+
+ jQuery.fn[ method ] = function(val) {
+ var elem = this[0], win;
+
+ if ( !elem ) {
+ return null;
+ }
+
+ if ( val !== undefined ) {
+ // Set the scroll offset
+ return this.each(function() {
+ win = getWindow( this );
+
+ if ( win ) {
+ win.scrollTo(
+ !i ? val : jQuery(win).scrollLeft(),
+ i ? val : jQuery(win).scrollTop()
+ );
+
+ } else {
+ this[ method ] = val;
+ }
+ });
+ } else {
+ win = getWindow( elem );
+
+ // Return the scroll offset
+ return win ? ("pageXOffset" in win) ? win[ i ? "pageYOffset" : "pageXOffset" ] :
+ jQuery.support.boxModel && win.document.documentElement[ method ] ||
+ win.document.body[ method ] :
+ elem[ method ];
+ }
+ };
+});
+
+function getWindow( elem ) {
+ return jQuery.isWindow( elem ) ?
+ elem :
+ elem.nodeType === 9 ?
+ elem.defaultView || elem.parentWindow :
+ false;
+}
+
+
+
+
+// Create innerHeight, innerWidth, outerHeight and outerWidth methods
+jQuery.each([ "Height", "Width" ], function( i, name ) {
+
+ var type = name.toLowerCase();
+
+ // innerHeight and innerWidth
+ jQuery.fn["inner" + name] = function() {
+ return this[0] ?
+ parseFloat( jQuery.css( this[0], type, "padding" ) ) :
+ null;
+ };
+
+ // outerHeight and outerWidth
+ jQuery.fn["outer" + name] = function( margin ) {
+ return this[0] ?
+ parseFloat( jQuery.css( this[0], type, margin ? "margin" : "border" ) ) :
+ null;
+ };
+
+ jQuery.fn[ type ] = function( size ) {
+ // Get window width or height
+ var elem = this[0];
+ if ( !elem ) {
+ return size == null ? null : this;
+ }
+
+ if ( jQuery.isFunction( size ) ) {
+ return this.each(function( i ) {
+ var self = jQuery( this );
+ self[ type ]( size.call( this, i, self[ type ]() ) );
+ });
+ }
+
+ if ( jQuery.isWindow( elem ) ) {
+ // Everyone else use document.documentElement or document.body depending on Quirks vs Standards mode
+ return elem.document.compatMode === "CSS1Compat" && elem.document.documentElement[ "client" + name ] ||
+ elem.document.body[ "client" + name ];
+
+ // Get document width or height
+ } else if ( elem.nodeType === 9 ) {
+ // Either scroll[Width/Height] or offset[Width/Height], whichever is greater
+ return Math.max(
+ elem.documentElement["client" + name],
+ elem.body["scroll" + name], elem.documentElement["scroll" + name],
+ elem.body["offset" + name], elem.documentElement["offset" + name]
+ );
+
+ // Get or set width or height on the element
+ } else if ( size === undefined ) {
+ var orig = jQuery.css( elem, type ),
+ ret = parseFloat( orig );
+
+ return jQuery.isNaN( ret ) ? orig : ret;
+
+ // Set the width or height on the element (default to pixels if value is unitless)
+ } else {
+ return this.css( type, typeof size === "string" ? size : size + "px" );
+ }
+ };
+
+});
+
+
+})(window); \ No newline at end of file
diff --git a/bug/bug/jquery-validation-1.8.1/lib/jquery-1.5.2.js b/bug/bug/jquery-validation-1.8.1/lib/jquery-1.5.2.js
new file mode 100644
index 0000000..af9b7da
--- /dev/null
+++ b/bug/bug/jquery-validation-1.8.1/lib/jquery-1.5.2.js
@@ -0,0 +1,8374 @@
+/*!
+ * jQuery JavaScript Library v1.5.2
+ * http://jquery.com/
+ *
+ * Copyright 2011, John Resig
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * Includes Sizzle.js
+ * http://sizzlejs.com/
+ * Copyright 2011, The Dojo Foundation
+ * Released under the MIT, BSD, and GPL Licenses.
+ *
+ * Date: Thu Mar 31 15:28:23 2011 -0400
+ */
+(function( window, undefined ) {
+
+// Use the correct document accordingly with window argument (sandbox)
+var document = window.document;
+var jQuery = (function() {
+
+// Define a local copy of jQuery
+var jQuery = function( selector, context ) {
+ // The jQuery object is actually just the init constructor 'enhanced'
+ return new jQuery.fn.init( selector, context, rootjQuery );
+ },
+
+ // Map over jQuery in case of overwrite
+ _jQuery = window.jQuery,
+
+ // Map over the $ in case of overwrite
+ _$ = window.$,
+
+ // A central reference to the root jQuery(document)
+ rootjQuery,
+
+ // A simple way to check for HTML strings or ID strings
+ // (both of which we optimize for)
+ quickExpr = /^(?:[^<]*(<[\w\W]+>)[^>]*$|#([\w\-]+)$)/,
+
+ // Check if a string has a non-whitespace character in it
+ rnotwhite = /\S/,
+
+ // Used for trimming whitespace
+ trimLeft = /^\s+/,
+ trimRight = /\s+$/,
+
+ // Check for digits
+ rdigit = /\d/,
+
+ // Match a standalone tag
+ rsingleTag = /^<(\w+)\s*\/?>(?:<\/\1>)?$/,
+
+ // JSON RegExp
+ rvalidchars = /^[\],:{}\s]*$/,
+ rvalidescape = /\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,
+ rvalidtokens = /"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,
+ rvalidbraces = /(?:^|:|,)(?:\s*\[)+/g,
+
+ // Useragent RegExp
+ rwebkit = /(webkit)[ \/]([\w.]+)/,
+ ropera = /(opera)(?:.*version)?[ \/]([\w.]+)/,
+ rmsie = /(msie) ([\w.]+)/,
+ rmozilla = /(mozilla)(?:.*? rv:([\w.]+))?/,
+
+ // Keep a UserAgent string for use with jQuery.browser
+ userAgent = navigator.userAgent,
+
+ // For matching the engine and version of the browser
+ browserMatch,
+
+ // The deferred used on DOM ready
+ readyList,
+
+ // The ready event handler
+ DOMContentLoaded,
+
+ // Save a reference to some core methods
+ toString = Object.prototype.toString,
+ hasOwn = Object.prototype.hasOwnProperty,
+ push = Array.prototype.push,
+ slice = Array.prototype.slice,
+ trim = String.prototype.trim,
+ indexOf = Array.prototype.indexOf,
+
+ // [[Class]] -> type pairs
+ class2type = {};
+
+jQuery.fn = jQuery.prototype = {
+ constructor: jQuery,
+ init: function( selector, context, rootjQuery ) {
+ var match, elem, ret, doc;
+
+ // Handle $(""), $(null), or $(undefined)
+ if ( !selector ) {
+ return this;
+ }
+
+ // Handle $(DOMElement)
+ if ( selector.nodeType ) {
+ this.context = this[0] = selector;
+ this.length = 1;
+ return this;
+ }
+
+ // The body element only exists once, optimize finding it
+ if ( selector === "body" && !context && document.body ) {
+ this.context = document;
+ this[0] = document.body;
+ this.selector = "body";
+ this.length = 1;
+ return this;
+ }
+
+ // Handle HTML strings
+ if ( typeof selector === "string" ) {
+ // Are we dealing with HTML string or an ID?
+ match = quickExpr.exec( selector );
+
+ // Verify a match, and that no context was specified for #id
+ if ( match && (match[1] || !context) ) {
+
+ // HANDLE: $(html) -> $(array)
+ if ( match[1] ) {
+ context = context instanceof jQuery ? context[0] : context;
+ doc = (context ? context.ownerDocument || context : document);
+
+ // If a single string is passed in and it's a single tag
+ // just do a createElement and skip the rest
+ ret = rsingleTag.exec( selector );
+
+ if ( ret ) {
+ if ( jQuery.isPlainObject( context ) ) {
+ selector = [ document.createElement( ret[1] ) ];
+ jQuery.fn.attr.call( selector, context, true );
+
+ } else {
+ selector = [ doc.createElement( ret[1] ) ];
+ }
+
+ } else {
+ ret = jQuery.buildFragment( [ match[1] ], [ doc ] );
+ selector = (ret.cacheable ? jQuery.clone(ret.fragment) : ret.fragment).childNodes;
+ }
+
+ return jQuery.merge( this, selector );
+
+ // HANDLE: $("#id")
+ } else {
+ elem = document.getElementById( match[2] );
+
+ // Check parentNode to catch when Blackberry 4.6 returns
+ // nodes that are no longer in the document #6963
+ if ( elem && elem.parentNode ) {
+ // Handle the case where IE and Opera return items
+ // by name instead of ID
+ if ( elem.id !== match[2] ) {
+ return rootjQuery.find( selector );
+ }
+
+ // Otherwise, we inject the element directly into the jQuery object
+ this.length = 1;
+ this[0] = elem;
+ }
+
+ this.context = document;
+ this.selector = selector;
+ return this;
+ }
+
+ // HANDLE: $(expr, $(...))
+ } else if ( !context || context.jquery ) {
+ return (context || rootjQuery).find( selector );
+
+ // HANDLE: $(expr, context)
+ // (which is just equivalent to: $(context).find(expr)
+ } else {
+ return this.constructor( context ).find( selector );
+ }
+
+ // HANDLE: $(function)
+ // Shortcut for document ready
+ } else if ( jQuery.isFunction( selector ) ) {
+ return rootjQuery.ready( selector );
+ }
+
+ if (selector.selector !== undefined) {
+ this.selector = selector.selector;
+ this.context = selector.context;
+ }
+
+ return jQuery.makeArray( selector, this );
+ },
+
+ // Start with an empty selector
+ selector: "",
+
+ // The current version of jQuery being used
+ jquery: "1.5.2",
+
+ // The default length of a jQuery object is 0
+ length: 0,
+
+ // The number of elements contained in the matched element set
+ size: function() {
+ return this.length;
+ },
+
+ toArray: function() {
+ return slice.call( this, 0 );
+ },
+
+ // Get the Nth element in the matched element set OR
+ // Get the whole matched element set as a clean array
+ get: function( num ) {
+ return num == null ?
+
+ // Return a 'clean' array
+ this.toArray() :
+
+ // Return just the object
+ ( num < 0 ? this[ this.length + num ] : this[ num ] );
+ },
+
+ // Take an array of elements and push it onto the stack
+ // (returning the new matched element set)
+ pushStack: function( elems, name, selector ) {
+ // Build a new jQuery matched element set
+ var ret = this.constructor();
+
+ if ( jQuery.isArray( elems ) ) {
+ push.apply( ret, elems );
+
+ } else {
+ jQuery.merge( ret, elems );
+ }
+
+ // Add the old object onto the stack (as a reference)
+ ret.prevObject = this;
+
+ ret.context = this.context;
+
+ if ( name === "find" ) {
+ ret.selector = this.selector + (this.selector ? " " : "") + selector;
+ } else if ( name ) {
+ ret.selector = this.selector + "." + name + "(" + selector + ")";
+ }
+
+ // Return the newly-formed element set
+ return ret;
+ },
+
+ // Execute a callback for every element in the matched set.
+ // (You can seed the arguments with an array of args, but this is
+ // only used internally.)
+ each: function( callback, args ) {
+ return jQuery.each( this, callback, args );
+ },
+
+ ready: function( fn ) {
+ // Attach the listeners
+ jQuery.bindReady();
+
+ // Add the callback
+ readyList.done( fn );
+
+ return this;
+ },
+
+ eq: function( i ) {
+ return i === -1 ?
+ this.slice( i ) :
+ this.slice( i, +i + 1 );
+ },
+
+ first: function() {
+ return this.eq( 0 );
+ },
+
+ last: function() {
+ return this.eq( -1 );
+ },
+
+ slice: function() {
+ return this.pushStack( slice.apply( this, arguments ),
+ "slice", slice.call(arguments).join(",") );
+ },
+
+ map: function( callback ) {
+ return this.pushStack( jQuery.map(this, function( elem, i ) {
+ return callback.call( elem, i, elem );
+ }));
+ },
+
+ end: function() {
+ return this.prevObject || this.constructor(null);
+ },
+
+ // For internal use only.
+ // Behaves like an Array's method, not like a jQuery method.
+ push: push,
+ sort: [].sort,
+ splice: [].splice
+};
+
+// Give the init function the jQuery prototype for later instantiation
+jQuery.fn.init.prototype = jQuery.fn;
+
+jQuery.extend = jQuery.fn.extend = function() {
+ var options, name, src, copy, copyIsArray, clone,
+ target = arguments[0] || {},
+ i = 1,
+ length = arguments.length,
+ deep = false;
+
+ // Handle a deep copy situation
+ if ( typeof target === "boolean" ) {
+ deep = target;
+ target = arguments[1] || {};
+ // skip the boolean and the target
+ i = 2;
+ }
+
+ // Handle case when target is a string or something (possible in deep copy)
+ if ( typeof target !== "object" && !jQuery.isFunction(target) ) {
+ target = {};
+ }
+
+ // extend jQuery itself if only one argument is passed
+ if ( length === i ) {
+ target = this;
+ --i;
+ }
+
+ for ( ; i < length; i++ ) {
+ // Only deal with non-null/undefined values
+ if ( (options = arguments[ i ]) != null ) {
+ // Extend the base object
+ for ( name in options ) {
+ src = target[ name ];
+ copy = options[ name ];
+
+ // Prevent never-ending loop
+ if ( target === copy ) {
+ continue;
+ }
+
+ // Recurse if we're merging plain objects or arrays
+ if ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) {
+ if ( copyIsArray ) {
+ copyIsArray = false;
+ clone = src && jQuery.isArray(src) ? src : [];
+
+ } else {
+ clone = src && jQuery.isPlainObject(src) ? src : {};
+ }
+
+ // Never move original objects, clone them
+ target[ name ] = jQuery.extend( deep, clone, copy );
+
+ // Don't bring in undefined values
+ } else if ( copy !== undefined ) {
+ target[ name ] = copy;
+ }
+ }
+ }
+ }
+
+ // Return the modified object
+ return target;
+};
+
+jQuery.extend({
+ noConflict: function( deep ) {
+ window.$ = _$;
+
+ if ( deep ) {
+ window.jQuery = _jQuery;
+ }
+
+ return jQuery;
+ },
+
+ // Is the DOM ready to be used? Set to true once it occurs.
+ isReady: false,
+
+ // A counter to track how many items to wait for before
+ // the ready event fires. See #6781
+ readyWait: 1,
+
+ // Handle when the DOM is ready
+ ready: function( wait ) {
+ // A third-party is pushing the ready event forwards
+ if ( wait === true ) {
+ jQuery.readyWait--;
+ }
+
+ // Make sure that the DOM is not already loaded
+ if ( !jQuery.readyWait || (wait !== true && !jQuery.isReady) ) {
+ // Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).
+ if ( !document.body ) {
+ return setTimeout( jQuery.ready, 1 );
+ }
+
+ // Remember that the DOM is ready
+ jQuery.isReady = true;
+
+ // If a normal DOM Ready event fired, decrement, and wait if need be
+ if ( wait !== true && --jQuery.readyWait > 0 ) {
+ return;
+ }
+
+ // If there are functions bound, to execute
+ readyList.resolveWith( document, [ jQuery ] );
+
+ // Trigger any bound ready events
+ if ( jQuery.fn.trigger ) {
+ jQuery( document ).trigger( "ready" ).unbind( "ready" );
+ }
+ }
+ },
+
+ bindReady: function() {
+ if ( readyList ) {
+ return;
+ }
+
+ readyList = jQuery._Deferred();
+
+ // Catch cases where $(document).ready() is called after the
+ // browser event has already occurred.
+ if ( document.readyState === "complete" ) {
+ // Handle it asynchronously to allow scripts the opportunity to delay ready
+ return setTimeout( jQuery.ready, 1 );
+ }
+
+ // Mozilla, Opera and webkit nightlies currently support this event
+ if ( document.addEventListener ) {
+ // Use the handy event callback
+ document.addEventListener( "DOMContentLoaded", DOMContentLoaded, false );
+
+ // A fallback to window.onload, that will always work
+ window.addEventListener( "load", jQuery.ready, false );
+
+ // If IE event model is used
+ } else if ( document.attachEvent ) {
+ // ensure firing before onload,
+ // maybe late but safe also for iframes
+ document.attachEvent("onreadystatechange", DOMContentLoaded);
+
+ // A fallback to window.onload, that will always work
+ window.attachEvent( "onload", jQuery.ready );
+
+ // If IE and not a frame
+ // continually check to see if the document is ready
+ var toplevel = false;
+
+ try {
+ toplevel = window.frameElement == null;
+ } catch(e) {}
+
+ if ( document.documentElement.doScroll && toplevel ) {
+ doScrollCheck();
+ }
+ }
+ },
+
+ // See test/unit/core.js for details concerning isFunction.
+ // Since version 1.3, DOM methods and functions like alert
+ // aren't supported. They return false on IE (#2968).
+ isFunction: function( obj ) {
+ return jQuery.type(obj) === "function";
+ },
+
+ isArray: Array.isArray || function( obj ) {
+ return jQuery.type(obj) === "array";
+ },
+
+ // A crude way of determining if an object is a window
+ isWindow: function( obj ) {
+ return obj && typeof obj === "object" && "setInterval" in obj;
+ },
+
+ isNaN: function( obj ) {
+ return obj == null || !rdigit.test( obj ) || isNaN( obj );
+ },
+
+ type: function( obj ) {
+ return obj == null ?
+ String( obj ) :
+ class2type[ toString.call(obj) ] || "object";
+ },
+
+ isPlainObject: function( obj ) {
+ // Must be an Object.
+ // Because of IE, we also have to check the presence of the constructor property.
+ // Make sure that DOM nodes and window objects don't pass through, as well
+ if ( !obj || jQuery.type(obj) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) {
+ return false;
+ }
+
+ // Not own constructor property must be Object
+ if ( obj.constructor &&
+ !hasOwn.call(obj, "constructor") &&
+ !hasOwn.call(obj.constructor.prototype, "isPrototypeOf") ) {
+ return false;
+ }
+
+ // Own properties are enumerated firstly, so to speed up,
+ // if last one is own, then all properties are own.
+
+ var key;
+ for ( key in obj ) {}
+
+ return key === undefined || hasOwn.call( obj, key );
+ },
+
+ isEmptyObject: function( obj ) {
+ for ( var name in obj ) {
+ return false;
+ }
+ return true;
+ },
+
+ error: function( msg ) {
+ throw msg;
+ },
+
+ parseJSON: function( data ) {
+ if ( typeof data !== "string" || !data ) {
+ return null;
+ }
+
+ // Make sure leading/trailing whitespace is removed (IE can't handle it)
+ data = jQuery.trim( data );
+
+ // Make sure the incoming data is actual JSON
+ // Logic borrowed from http://json.org/json2.js
+ if ( rvalidchars.test(data.replace(rvalidescape, "@")
+ .replace(rvalidtokens, "]")
+ .replace(rvalidbraces, "")) ) {
+
+ // Try to use the native JSON parser first
+ return window.JSON && window.JSON.parse ?
+ window.JSON.parse( data ) :
+ (new Function("return " + data))();
+
+ } else {
+ jQuery.error( "Invalid JSON: " + data );
+ }
+ },
+
+ // Cross-browser xml parsing
+ // (xml & tmp used internally)
+ parseXML: function( data , xml , tmp ) {
+
+ if ( window.DOMParser ) { // Standard
+ tmp = new DOMParser();
+ xml = tmp.parseFromString( data , "text/xml" );
+ } else { // IE
+ xml = new ActiveXObject( "Microsoft.XMLDOM" );
+ xml.async = "false";
+ xml.loadXML( data );
+ }
+
+ tmp = xml.documentElement;
+
+ if ( ! tmp || ! tmp.nodeName || tmp.nodeName === "parsererror" ) {
+ jQuery.error( "Invalid XML: " + data );
+ }
+
+ return xml;
+ },
+
+ noop: function() {},
+
+ // Evalulates a script in a global context
+ globalEval: function( data ) {
+ if ( data && rnotwhite.test(data) ) {
+ // Inspired by code by Andrea Giammarchi
+ // http://webreflection.blogspot.com/2007/08/global-scope-evaluation-and-dom.html
+ var head = document.head || document.getElementsByTagName( "head" )[0] || document.documentElement,
+ script = document.createElement( "script" );
+
+ if ( jQuery.support.scriptEval() ) {
+ script.appendChild( document.createTextNode( data ) );
+ } else {
+ script.text = data;
+ }
+
+ // Use insertBefore instead of appendChild to circumvent an IE6 bug.
+ // This arises when a base node is used (#2709).
+ head.insertBefore( script, head.firstChild );
+ head.removeChild( script );
+ }
+ },
+
+ nodeName: function( elem, name ) {
+ return elem.nodeName && elem.nodeName.toUpperCase() === name.toUpperCase();
+ },
+
+ // args is for internal usage only
+ each: function( object, callback, args ) {
+ var name, i = 0,
+ length = object.length,
+ isObj = length === undefined || jQuery.isFunction(object);
+
+ if ( args ) {
+ if ( isObj ) {
+ for ( name in object ) {
+ if ( callback.apply( object[ name ], args ) === false ) {
+ break;
+ }
+ }
+ } else {
+ for ( ; i < length; ) {
+ if ( callback.apply( object[ i++ ], args ) === false ) {
+ break;
+ }
+ }
+ }
+
+ // A special, fast, case for the most common use of each
+ } else {
+ if ( isObj ) {
+ for ( name in object ) {
+ if ( callback.call( object[ name ], name, object[ name ] ) === false ) {
+ break;
+ }
+ }
+ } else {
+ for ( var value = object[0];
+ i < length && callback.call( value, i, value ) !== false; value = object[++i] ) {}
+ }
+ }
+
+ return object;
+ },
+
+ // Use native String.trim function wherever possible
+ trim: trim ?
+ function( text ) {
+ return text == null ?
+ "" :
+ trim.call( text );
+ } :
+
+ // Otherwise use our own trimming functionality
+ function( text ) {
+ return text == null ?
+ "" :
+ text.toString().replace( trimLeft, "" ).replace( trimRight, "" );
+ },
+
+ // results is for internal usage only
+ makeArray: function( array, results ) {
+ var ret = results || [];
+
+ if ( array != null ) {
+ // The window, strings (and functions) also have 'length'
+ // The extra typeof function check is to prevent crashes
+ // in Safari 2 (See: #3039)
+ // Tweaked logic slightly to handle Blackberry 4.7 RegExp issues #6930
+ var type = jQuery.type(array);
+
+ if ( array.length == null || type === "string" || type === "function" || type === "regexp" || jQuery.isWindow( array ) ) {
+ push.call( ret, array );
+ } else {
+ jQuery.merge( ret, array );
+ }
+ }
+
+ return ret;
+ },
+
+ inArray: function( elem, array ) {
+ if ( array.indexOf ) {
+ return array.indexOf( elem );
+ }
+
+ for ( var i = 0, length = array.length; i < length; i++ ) {
+ if ( array[ i ] === elem ) {
+ return i;
+ }
+ }
+
+ return -1;
+ },
+
+ merge: function( first, second ) {
+ var i = first.length,
+ j = 0;
+
+ if ( typeof second.length === "number" ) {
+ for ( var l = second.length; j < l; j++ ) {
+ first[ i++ ] = second[ j ];
+ }
+
+ } else {
+ while ( second[j] !== undefined ) {
+ first[ i++ ] = second[ j++ ];
+ }
+ }
+
+ first.length = i;
+
+ return first;
+ },
+
+ grep: function( elems, callback, inv ) {
+ var ret = [], retVal;
+ inv = !!inv;
+
+ // Go through the array, only saving the items
+ // that pass the validator function
+ for ( var i = 0, length = elems.length; i < length; i++ ) {
+ retVal = !!callback( elems[ i ], i );
+ if ( inv !== retVal ) {
+ ret.push( elems[ i ] );
+ }
+ }
+
+ return ret;
+ },
+
+ // arg is for internal usage only
+ map: function( elems, callback, arg ) {
+ var ret = [], value;
+
+ // Go through the array, translating each of the items to their
+ // new value (or values).
+ for ( var i = 0, length = elems.length; i < length; i++ ) {
+ value = callback( elems[ i ], i, arg );
+
+ if ( value != null ) {
+ ret[ ret.length ] = value;
+ }
+ }
+
+ // Flatten any nested arrays
+ return ret.concat.apply( [], ret );
+ },
+
+ // A global GUID counter for objects
+ guid: 1,
+
+ proxy: function( fn, proxy, thisObject ) {
+ if ( arguments.length === 2 ) {
+ if ( typeof proxy === "string" ) {
+ thisObject = fn;
+ fn = thisObject[ proxy ];
+ proxy = undefined;
+
+ } else if ( proxy && !jQuery.isFunction( proxy ) ) {
+ thisObject = proxy;
+ proxy = undefined;
+ }
+ }
+
+ if ( !proxy && fn ) {
+ proxy = function() {
+ return fn.apply( thisObject || this, arguments );
+ };
+ }
+
+ // Set the guid of unique handler to the same of original handler, so it can be removed
+ if ( fn ) {
+ proxy.guid = fn.guid = fn.guid || proxy.guid || jQuery.guid++;
+ }
+
+ // So proxy can be declared as an argument
+ return proxy;
+ },
+
+ // Mutifunctional method to get and set values to a collection
+ // The value/s can be optionally by executed if its a function
+ access: function( elems, key, value, exec, fn, pass ) {
+ var length = elems.length;
+
+ // Setting many attributes
+ if ( typeof key === "object" ) {
+ for ( var k in key ) {
+ jQuery.access( elems, k, key[k], exec, fn, value );
+ }
+ return elems;
+ }
+
+ // Setting one attribute
+ if ( value !== undefined ) {
+ // Optionally, function values get executed if exec is true
+ exec = !pass && exec && jQuery.isFunction(value);
+
+ for ( var i = 0; i < length; i++ ) {
+ fn( elems[i], key, exec ? value.call( elems[i], i, fn( elems[i], key ) ) : value, pass );
+ }
+
+ return elems;
+ }
+
+ // Getting an attribute
+ return length ? fn( elems[0], key ) : undefined;
+ },
+
+ now: function() {
+ return (new Date()).getTime();
+ },
+
+ // Use of jQuery.browser is frowned upon.
+ // More details: http://docs.jquery.com/Utilities/jQuery.browser
+ uaMatch: function( ua ) {
+ ua = ua.toLowerCase();
+
+ var match = rwebkit.exec( ua ) ||
+ ropera.exec( ua ) ||
+ rmsie.exec( ua ) ||
+ ua.indexOf("compatible") < 0 && rmozilla.exec( ua ) ||
+ [];
+
+ return { browser: match[1] || "", version: match[2] || "0" };
+ },
+
+ sub: function() {
+ function jQuerySubclass( selector, context ) {
+ return new jQuerySubclass.fn.init( selector, context );
+ }
+ jQuery.extend( true, jQuerySubclass, this );
+ jQuerySubclass.superclass = this;
+ jQuerySubclass.fn = jQuerySubclass.prototype = this();
+ jQuerySubclass.fn.constructor = jQuerySubclass;
+ jQuerySubclass.subclass = this.subclass;
+ jQuerySubclass.fn.init = function init( selector, context ) {
+ if ( context && context instanceof jQuery && !(context instanceof jQuerySubclass) ) {
+ context = jQuerySubclass(context);
+ }
+
+ return jQuery.fn.init.call( this, selector, context, rootjQuerySubclass );
+ };
+ jQuerySubclass.fn.init.prototype = jQuerySubclass.fn;
+ var rootjQuerySubclass = jQuerySubclass(document);
+ return jQuerySubclass;
+ },
+
+ browser: {}
+});
+
+// Populate the class2type map
+jQuery.each("Boolean Number String Function Array Date RegExp Object".split(" "), function(i, name) {
+ class2type[ "[object " + name + "]" ] = name.toLowerCase();
+});
+
+browserMatch = jQuery.uaMatch( userAgent );
+if ( browserMatch.browser ) {
+ jQuery.browser[ browserMatch.browser ] = true;
+ jQuery.browser.version = browserMatch.version;
+}
+
+// Deprecated, use jQuery.browser.webkit instead
+if ( jQuery.browser.webkit ) {
+ jQuery.browser.safari = true;
+}
+
+if ( indexOf ) {
+ jQuery.inArray = function( elem, array ) {
+ return indexOf.call( array, elem );
+ };
+}
+
+// IE doesn't match non-breaking spaces with \s
+if ( rnotwhite.test( "\xA0" ) ) {
+ trimLeft = /^[\s\xA0]+/;
+ trimRight = /[\s\xA0]+$/;
+}
+
+// All jQuery objects should point back to these
+rootjQuery = jQuery(document);
+
+// Cleanup functions for the document ready method
+if ( document.addEventListener ) {
+ DOMContentLoaded = function() {
+ document.removeEventListener( "DOMContentLoaded", DOMContentLoaded, false );
+ jQuery.ready();
+ };
+
+} else if ( document.attachEvent ) {
+ DOMContentLoaded = function() {
+ // Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).
+ if ( document.readyState === "complete" ) {
+ document.detachEvent( "onreadystatechange", DOMContentLoaded );
+ jQuery.ready();
+ }
+ };
+}
+
+// The DOM ready check for Internet Explorer
+function doScrollCheck() {
+ if ( jQuery.isReady ) {
+ return;
+ }
+
+ try {
+ // If IE is used, use the trick by Diego Perini
+ // http://javascript.nwbox.com/IEContentLoaded/
+ document.documentElement.doScroll("left");
+ } catch(e) {
+ setTimeout( doScrollCheck, 1 );
+ return;
+ }
+
+ // and execute any waiting functions
+ jQuery.ready();
+}
+
+// Expose jQuery to the global object
+return jQuery;
+
+})();
+
+
+var // Promise methods
+ promiseMethods = "then done fail isResolved isRejected promise".split( " " ),
+ // Static reference to slice
+ sliceDeferred = [].slice;
+
+jQuery.extend({
+ // Create a simple deferred (one callbacks list)
+ _Deferred: function() {
+ var // callbacks list
+ callbacks = [],
+ // stored [ context , args ]
+ fired,
+ // to avoid firing when already doing so
+ firing,
+ // flag to know if the deferred has been cancelled
+ cancelled,
+ // the deferred itself
+ deferred = {
+
+ // done( f1, f2, ...)
+ done: function() {
+ if ( !cancelled ) {
+ var args = arguments,
+ i,
+ length,
+ elem,
+ type,
+ _fired;
+ if ( fired ) {
+ _fired = fired;
+ fired = 0;
+ }
+ for ( i = 0, length = args.length; i < length; i++ ) {
+ elem = args[ i ];
+ type = jQuery.type( elem );
+ if ( type === "array" ) {
+ deferred.done.apply( deferred, elem );
+ } else if ( type === "function" ) {
+ callbacks.push( elem );
+ }
+ }
+ if ( _fired ) {
+ deferred.resolveWith( _fired[ 0 ], _fired[ 1 ] );
+ }
+ }
+ return this;
+ },
+
+ // resolve with given context and args
+ resolveWith: function( context, args ) {
+ if ( !cancelled && !fired && !firing ) {
+ // make sure args are available (#8421)
+ args = args || [];
+ firing = 1;
+ try {
+ while( callbacks[ 0 ] ) {
+ callbacks.shift().apply( context, args );
+ }
+ }
+ finally {
+ fired = [ context, args ];
+ firing = 0;
+ }
+ }
+ return this;
+ },
+
+ // resolve with this as context and given arguments
+ resolve: function() {
+ deferred.resolveWith( this, arguments );
+ return this;
+ },
+
+ // Has this deferred been resolved?
+ isResolved: function() {
+ return !!( firing || fired );
+ },
+
+ // Cancel
+ cancel: function() {
+ cancelled = 1;
+ callbacks = [];
+ return this;
+ }
+ };
+
+ return deferred;
+ },
+
+ // Full fledged deferred (two callbacks list)
+ Deferred: function( func ) {
+ var deferred = jQuery._Deferred(),
+ failDeferred = jQuery._Deferred(),
+ promise;
+ // Add errorDeferred methods, then and promise
+ jQuery.extend( deferred, {
+ then: function( doneCallbacks, failCallbacks ) {
+ deferred.done( doneCallbacks ).fail( failCallbacks );
+ return this;
+ },
+ fail: failDeferred.done,
+ rejectWith: failDeferred.resolveWith,
+ reject: failDeferred.resolve,
+ isRejected: failDeferred.isResolved,
+ // Get a promise for this deferred
+ // If obj is provided, the promise aspect is added to the object
+ promise: function( obj ) {
+ if ( obj == null ) {
+ if ( promise ) {
+ return promise;
+ }
+ promise = obj = {};
+ }
+ var i = promiseMethods.length;
+ while( i-- ) {
+ obj[ promiseMethods[i] ] = deferred[ promiseMethods[i] ];
+ }
+ return obj;
+ }
+ } );
+ // Make sure only one callback list will be used
+ deferred.done( failDeferred.cancel ).fail( deferred.cancel );
+ // Unexpose cancel
+ delete deferred.cancel;
+ // Call given func if any
+ if ( func ) {
+ func.call( deferred, deferred );
+ }
+ return deferred;
+ },
+
+ // Deferred helper
+ when: function( firstParam ) {
+ var args = arguments,
+ i = 0,
+ length = args.length,
+ count = length,
+ deferred = length <= 1 && firstParam && jQuery.isFunction( firstParam.promise ) ?
+ firstParam :
+ jQuery.Deferred();
+ function resolveFunc( i ) {
+ return function( value ) {
+ args[ i ] = arguments.length > 1 ? sliceDeferred.call( arguments, 0 ) : value;
+ if ( !( --count ) ) {
+ // Strange bug in FF4:
+ // Values changed onto the arguments object sometimes end up as undefined values
+ // outside the $.when method. Cloning the object into a fresh array solves the issue
+ deferred.resolveWith( deferred, sliceDeferred.call( args, 0 ) );
+ }
+ };
+ }
+ if ( length > 1 ) {
+ for( ; i < length; i++ ) {
+ if ( args[ i ] && jQuery.isFunction( args[ i ].promise ) ) {
+ args[ i ].promise().then( resolveFunc(i), deferred.reject );
+ } else {
+ --count;
+ }
+ }
+ if ( !count ) {
+ deferred.resolveWith( deferred, args );
+ }
+ } else if ( deferred !== firstParam ) {
+ deferred.resolveWith( deferred, length ? [ firstParam ] : [] );
+ }
+ return deferred.promise();
+ }
+});
+
+
+
+
+(function() {
+
+ jQuery.support = {};
+
+ var div = document.createElement("div");
+
+ div.style.display = "none";
+ div.innerHTML = " <link/><table></table><a href='/a' style='color:red;float:left;opacity:.55;'>a</a><input type='checkbox'/>";
+
+ var all = div.getElementsByTagName("*"),
+ a = div.getElementsByTagName("a")[0],
+ select = document.createElement("select"),
+ opt = select.appendChild( document.createElement("option") ),
+ input = div.getElementsByTagName("input")[0];
+
+ // Can't get basic test support
+ if ( !all || !all.length || !a ) {
+ return;
+ }
+
+ jQuery.support = {
+ // IE strips leading whitespace when .innerHTML is used
+ leadingWhitespace: div.firstChild.nodeType === 3,
+
+ // Make sure that tbody elements aren't automatically inserted
+ // IE will insert them into empty tables
+ tbody: !div.getElementsByTagName("tbody").length,
+
+ // Make sure that link elements get serialized correctly by innerHTML
+ // This requires a wrapper element in IE
+ htmlSerialize: !!div.getElementsByTagName("link").length,
+
+ // Get the style information from getAttribute
+ // (IE uses .cssText insted)
+ style: /red/.test( a.getAttribute("style") ),
+
+ // Make sure that URLs aren't manipulated
+ // (IE normalizes it by default)
+ hrefNormalized: a.getAttribute("href") === "/a",
+
+ // Make sure that element opacity exists
+ // (IE uses filter instead)
+ // Use a regex to work around a WebKit issue. See #5145
+ opacity: /^0.55$/.test( a.style.opacity ),
+
+ // Verify style float existence
+ // (IE uses styleFloat instead of cssFloat)
+ cssFloat: !!a.style.cssFloat,
+
+ // Make sure that if no value is specified for a checkbox
+ // that it defaults to "on".
+ // (WebKit defaults to "" instead)
+ checkOn: input.value === "on",
+
+ // Make sure that a selected-by-default option has a working selected property.
+ // (WebKit defaults to false instead of true, IE too, if it's in an optgroup)
+ optSelected: opt.selected,
+
+ // Will be defined later
+ deleteExpando: true,
+ optDisabled: false,
+ checkClone: false,
+ noCloneEvent: true,
+ noCloneChecked: true,
+ boxModel: null,
+ inlineBlockNeedsLayout: false,
+ shrinkWrapBlocks: false,
+ reliableHiddenOffsets: true,
+ reliableMarginRight: true
+ };
+
+ input.checked = true;
+ jQuery.support.noCloneChecked = input.cloneNode( true ).checked;
+
+ // Make sure that the options inside disabled selects aren't marked as disabled
+ // (WebKit marks them as diabled)
+ select.disabled = true;
+ jQuery.support.optDisabled = !opt.disabled;
+
+ var _scriptEval = null;
+ jQuery.support.scriptEval = function() {
+ if ( _scriptEval === null ) {
+ var root = document.documentElement,
+ script = document.createElement("script"),
+ id = "script" + jQuery.now();
+
+ // Make sure that the execution of code works by injecting a script
+ // tag with appendChild/createTextNode
+ // (IE doesn't support this, fails, and uses .text instead)
+ try {
+ script.appendChild( document.createTextNode( "window." + id + "=1;" ) );
+ } catch(e) {}
+
+ root.insertBefore( script, root.firstChild );
+
+ if ( window[ id ] ) {
+ _scriptEval = true;
+ delete window[ id ];
+ } else {
+ _scriptEval = false;
+ }
+
+ root.removeChild( script );
+ }
+
+ return _scriptEval;
+ };
+
+ // Test to see if it's possible to delete an expando from an element
+ // Fails in Internet Explorer
+ try {
+ delete div.test;
+
+ } catch(e) {
+ jQuery.support.deleteExpando = false;
+ }
+
+ if ( !div.addEventListener && div.attachEvent && div.fireEvent ) {
+ div.attachEvent("onclick", function click() {
+ // Cloning a node shouldn't copy over any
+ // bound event handlers (IE does this)
+ jQuery.support.noCloneEvent = false;
+ div.detachEvent("onclick", click);
+ });
+ div.cloneNode(true).fireEvent("onclick");
+ }
+
+ div = document.createElement("div");
+ div.innerHTML = "<input type='radio' name='radiotest' checked='checked'/>";
+
+ var fragment = document.createDocumentFragment();
+ fragment.appendChild( div.firstChild );
+
+ // WebKit doesn't clone checked state correctly in fragments
+ jQuery.support.checkClone = fragment.cloneNode(true).cloneNode(true).lastChild.checked;
+
+ // Figure out if the W3C box model works as expected
+ // document.body must exist before we can do this
+ jQuery(function() {
+ var div = document.createElement("div"),
+ body = document.getElementsByTagName("body")[0];
+
+ // Frameset documents with no body should not run this code
+ if ( !body ) {
+ return;
+ }
+
+ div.style.width = div.style.paddingLeft = "1px";
+ body.appendChild( div );
+ jQuery.boxModel = jQuery.support.boxModel = div.offsetWidth === 2;
+
+ if ( "zoom" in div.style ) {
+ // Check if natively block-level elements act like inline-block
+ // elements when setting their display to 'inline' and giving
+ // them layout
+ // (IE < 8 does this)
+ div.style.display = "inline";
+ div.style.zoom = 1;
+ jQuery.support.inlineBlockNeedsLayout = div.offsetWidth === 2;
+
+ // Check if elements with layout shrink-wrap their children
+ // (IE 6 does this)
+ div.style.display = "";
+ div.innerHTML = "<div style='width:4px;'></div>";
+ jQuery.support.shrinkWrapBlocks = div.offsetWidth !== 2;
+ }
+
+ div.innerHTML = "<table><tr><td style='padding:0;border:0;display:none'></td><td>t</td></tr></table>";
+ var tds = div.getElementsByTagName("td");
+
+ // Check if table cells still have offsetWidth/Height when they are set
+ // to display:none and there are still other visible table cells in a
+ // table row; if so, offsetWidth/Height are not reliable for use when
+ // determining if an element has been hidden directly using
+ // display:none (it is still safe to use offsets if a parent element is
+ // hidden; don safety goggles and see bug #4512 for more information).
+ // (only IE 8 fails this test)
+ jQuery.support.reliableHiddenOffsets = tds[0].offsetHeight === 0;
+
+ tds[0].style.display = "";
+ tds[1].style.display = "none";
+
+ // Check if empty table cells still have offsetWidth/Height
+ // (IE < 8 fail this test)
+ jQuery.support.reliableHiddenOffsets = jQuery.support.reliableHiddenOffsets && tds[0].offsetHeight === 0;
+ div.innerHTML = "";
+
+ // Check if div with explicit width and no margin-right incorrectly
+ // gets computed margin-right based on width of container. For more
+ // info see bug #3333
+ // Fails in WebKit before Feb 2011 nightlies
+ // WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right
+ if ( document.defaultView && document.defaultView.getComputedStyle ) {
+ div.style.width = "1px";
+ div.style.marginRight = "0";
+ jQuery.support.reliableMarginRight = ( parseInt(document.defaultView.getComputedStyle(div, null).marginRight, 10) || 0 ) === 0;
+ }
+
+ body.removeChild( div ).style.display = "none";
+ div = tds = null;
+ });
+
+ // Technique from Juriy Zaytsev
+ // http://thinkweb2.com/projects/prototype/detecting-event-support-without-browser-sniffing/
+ var eventSupported = function( eventName ) {
+ var el = document.createElement("div");
+ eventName = "on" + eventName;
+
+ // We only care about the case where non-standard event systems
+ // are used, namely in IE. Short-circuiting here helps us to
+ // avoid an eval call (in setAttribute) which can cause CSP
+ // to go haywire. See: https://developer.mozilla.org/en/Security/CSP
+ if ( !el.attachEvent ) {
+ return true;
+ }
+
+ var isSupported = (eventName in el);
+ if ( !isSupported ) {
+ el.setAttribute(eventName, "return;");
+ isSupported = typeof el[eventName] === "function";
+ }
+ return isSupported;
+ };
+
+ jQuery.support.submitBubbles = eventSupported("submit");
+ jQuery.support.changeBubbles = eventSupported("change");
+
+ // release memory in IE
+ div = all = a = null;
+})();
+
+
+
+var rbrace = /^(?:\{.*\}|\[.*\])$/;
+
+jQuery.extend({
+ cache: {},
+
+ // Please use with caution
+ uuid: 0,
+
+ // Unique for each copy of jQuery on the page
+ // Non-digits removed to match rinlinejQuery
+ expando: "jQuery" + ( jQuery.fn.jquery + Math.random() ).replace( /\D/g, "" ),
+
+ // The following elements throw uncatchable exceptions if you
+ // attempt to add expando properties to them.
+ noData: {
+ "embed": true,
+ // Ban all objects except for Flash (which handle expandos)
+ "object": "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",
+ "applet": true
+ },
+
+ hasData: function( elem ) {
+ elem = elem.nodeType ? jQuery.cache[ elem[jQuery.expando] ] : elem[ jQuery.expando ];
+
+ return !!elem && !isEmptyDataObject( elem );
+ },
+
+ data: function( elem, name, data, pvt /* Internal Use Only */ ) {
+ if ( !jQuery.acceptData( elem ) ) {
+ return;
+ }
+
+ var internalKey = jQuery.expando, getByName = typeof name === "string", thisCache,
+
+ // We have to handle DOM nodes and JS objects differently because IE6-7
+ // can't GC object references properly across the DOM-JS boundary
+ isNode = elem.nodeType,
+
+ // Only DOM nodes need the global jQuery cache; JS object data is
+ // attached directly to the object so GC can occur automatically
+ cache = isNode ? jQuery.cache : elem,
+
+ // Only defining an ID for JS objects if its cache already exists allows
+ // the code to shortcut on the same path as a DOM node with no cache
+ id = isNode ? elem[ jQuery.expando ] : elem[ jQuery.expando ] && jQuery.expando;
+
+ // Avoid doing any more work than we need to when trying to get data on an
+ // object that has no data at all
+ if ( (!id || (pvt && id && !cache[ id ][ internalKey ])) && getByName && data === undefined ) {
+ return;
+ }
+
+ if ( !id ) {
+ // Only DOM nodes need a new unique ID for each element since their data
+ // ends up in the global cache
+ if ( isNode ) {
+ elem[ jQuery.expando ] = id = ++jQuery.uuid;
+ } else {
+ id = jQuery.expando;
+ }
+ }
+
+ if ( !cache[ id ] ) {
+ cache[ id ] = {};
+
+ // TODO: This is a hack for 1.5 ONLY. Avoids exposing jQuery
+ // metadata on plain JS objects when the object is serialized using
+ // JSON.stringify
+ if ( !isNode ) {
+ cache[ id ].toJSON = jQuery.noop;
+ }
+ }
+
+ // An object can be passed to jQuery.data instead of a key/value pair; this gets
+ // shallow copied over onto the existing cache
+ if ( typeof name === "object" || typeof name === "function" ) {
+ if ( pvt ) {
+ cache[ id ][ internalKey ] = jQuery.extend(cache[ id ][ internalKey ], name);
+ } else {
+ cache[ id ] = jQuery.extend(cache[ id ], name);
+ }
+ }
+
+ thisCache = cache[ id ];
+
+ // Internal jQuery data is stored in a separate object inside the object's data
+ // cache in order to avoid key collisions between internal data and user-defined
+ // data
+ if ( pvt ) {
+ if ( !thisCache[ internalKey ] ) {
+ thisCache[ internalKey ] = {};
+ }
+
+ thisCache = thisCache[ internalKey ];
+ }
+
+ if ( data !== undefined ) {
+ thisCache[ name ] = data;
+ }
+
+ // TODO: This is a hack for 1.5 ONLY. It will be removed in 1.6. Users should
+ // not attempt to inspect the internal events object using jQuery.data, as this
+ // internal data object is undocumented and subject to change.
+ if ( name === "events" && !thisCache[name] ) {
+ return thisCache[ internalKey ] && thisCache[ internalKey ].events;
+ }
+
+ return getByName ? thisCache[ name ] : thisCache;
+ },
+
+ removeData: function( elem, name, pvt /* Internal Use Only */ ) {
+ if ( !jQuery.acceptData( elem ) ) {
+ return;
+ }
+
+ var internalKey = jQuery.expando, isNode = elem.nodeType,
+
+ // See jQuery.data for more information
+ cache = isNode ? jQuery.cache : elem,
+
+ // See jQuery.data for more information
+ id = isNode ? elem[ jQuery.expando ] : jQuery.expando;
+
+ // If there is already no cache entry for this object, there is no
+ // purpose in continuing
+ if ( !cache[ id ] ) {
+ return;
+ }
+
+ if ( name ) {
+ var thisCache = pvt ? cache[ id ][ internalKey ] : cache[ id ];
+
+ if ( thisCache ) {
+ delete thisCache[ name ];
+
+ // If there is no data left in the cache, we want to continue
+ // and let the cache object itself get destroyed
+ if ( !isEmptyDataObject(thisCache) ) {
+ return;
+ }
+ }
+ }
+
+ // See jQuery.data for more information
+ if ( pvt ) {
+ delete cache[ id ][ internalKey ];
+
+ // Don't destroy the parent cache unless the internal data object
+ // had been the only thing left in it
+ if ( !isEmptyDataObject(cache[ id ]) ) {
+ return;
+ }
+ }
+
+ var internalCache = cache[ id ][ internalKey ];
+
+ // Browsers that fail expando deletion also refuse to delete expandos on
+ // the window, but it will allow it on all other JS objects; other browsers
+ // don't care
+ if ( jQuery.support.deleteExpando || cache != window ) {
+ delete cache[ id ];
+ } else {
+ cache[ id ] = null;
+ }
+
+ // We destroyed the entire user cache at once because it's faster than
+ // iterating through each key, but we need to continue to persist internal
+ // data if it existed
+ if ( internalCache ) {
+ cache[ id ] = {};
+ // TODO: This is a hack for 1.5 ONLY. Avoids exposing jQuery
+ // metadata on plain JS objects when the object is serialized using
+ // JSON.stringify
+ if ( !isNode ) {
+ cache[ id ].toJSON = jQuery.noop;
+ }
+
+ cache[ id ][ internalKey ] = internalCache;
+
+ // Otherwise, we need to eliminate the expando on the node to avoid
+ // false lookups in the cache for entries that no longer exist
+ } else if ( isNode ) {
+ // IE does not allow us to delete expando properties from nodes,
+ // nor does it have a removeAttribute function on Document nodes;
+ // we must handle all of these cases
+ if ( jQuery.support.deleteExpando ) {
+ delete elem[ jQuery.expando ];
+ } else if ( elem.removeAttribute ) {
+ elem.removeAttribute( jQuery.expando );
+ } else {
+ elem[ jQuery.expando ] = null;
+ }
+ }
+ },
+
+ // For internal use only.
+ _data: function( elem, name, data ) {
+ return jQuery.data( elem, name, data, true );
+ },
+
+ // A method for determining if a DOM node can handle the data expando
+ acceptData: function( elem ) {
+ if ( elem.nodeName ) {
+ var match = jQuery.noData[ elem.nodeName.toLowerCase() ];
+
+ if ( match ) {
+ return !(match === true || elem.getAttribute("classid") !== match);
+ }
+ }
+
+ return true;
+ }
+});
+
+jQuery.fn.extend({
+ data: function( key, value ) {
+ var data = null;
+
+ if ( typeof key === "undefined" ) {
+ if ( this.length ) {
+ data = jQuery.data( this[0] );
+
+ if ( this[0].nodeType === 1 ) {
+ var attr = this[0].attributes, name;
+ for ( var i = 0, l = attr.length; i < l; i++ ) {
+ name = attr[i].name;
+
+ if ( name.indexOf( "data-" ) === 0 ) {
+ name = name.substr( 5 );
+ dataAttr( this[0], name, data[ name ] );
+ }
+ }
+ }
+ }
+
+ return data;
+
+ } else if ( typeof key === "object" ) {
+ return this.each(function() {
+ jQuery.data( this, key );
+ });
+ }
+
+ var parts = key.split(".");
+ parts[1] = parts[1] ? "." + parts[1] : "";
+
+ if ( value === undefined ) {
+ data = this.triggerHandler("getData" + parts[1] + "!", [parts[0]]);
+
+ // Try to fetch any internally stored data first
+ if ( data === undefined && this.length ) {
+ data = jQuery.data( this[0], key );
+ data = dataAttr( this[0], key, data );
+ }
+
+ return data === undefined && parts[1] ?
+ this.data( parts[0] ) :
+ data;
+
+ } else {
+ return this.each(function() {
+ var $this = jQuery( this ),
+ args = [ parts[0], value ];
+
+ $this.triggerHandler( "setData" + parts[1] + "!", args );
+ jQuery.data( this, key, value );
+ $this.triggerHandler( "changeData" + parts[1] + "!", args );
+ });
+ }
+ },
+
+ removeData: function( key ) {
+ return this.each(function() {
+ jQuery.removeData( this, key );
+ });
+ }
+});
+
+function dataAttr( elem, key, data ) {
+ // If nothing was found internally, try to fetch any
+ // data from the HTML5 data-* attribute
+ if ( data === undefined && elem.nodeType === 1 ) {
+ data = elem.getAttribute( "data-" + key );
+
+ if ( typeof data === "string" ) {
+ try {
+ data = data === "true" ? true :
+ data === "false" ? false :
+ data === "null" ? null :
+ !jQuery.isNaN( data ) ? parseFloat( data ) :
+ rbrace.test( data ) ? jQuery.parseJSON( data ) :
+ data;
+ } catch( e ) {}
+
+ // Make sure we set the data so it isn't changed later
+ jQuery.data( elem, key, data );
+
+ } else {
+ data = undefined;
+ }
+ }
+
+ return data;
+}
+
+// TODO: This is a hack for 1.5 ONLY to allow objects with a single toJSON
+// property to be considered empty objects; this property always exists in
+// order to make sure JSON.stringify does not expose internal metadata
+function isEmptyDataObject( obj ) {
+ for ( var name in obj ) {
+ if ( name !== "toJSON" ) {
+ return false;
+ }
+ }
+
+ return true;
+}
+
+
+
+
+jQuery.extend({
+ queue: function( elem, type, data ) {
+ if ( !elem ) {
+ return;
+ }
+
+ type = (type || "fx") + "queue";
+ var q = jQuery._data( elem, type );
+
+ // Speed up dequeue by getting out quickly if this is just a lookup
+ if ( !data ) {
+ return q || [];
+ }
+
+ if ( !q || jQuery.isArray(data) ) {
+ q = jQuery._data( elem, type, jQuery.makeArray(data) );
+
+ } else {
+ q.push( data );
+ }
+
+ return q;
+ },
+
+ dequeue: function( elem, type ) {
+ type = type || "fx";
+
+ var queue = jQuery.queue( elem, type ),
+ fn = queue.shift();
+
+ // If the fx queue is dequeued, always remove the progress sentinel
+ if ( fn === "inprogress" ) {
+ fn = queue.shift();
+ }
+
+ if ( fn ) {
+ // Add a progress sentinel to prevent the fx queue from being
+ // automatically dequeued
+ if ( type === "fx" ) {
+ queue.unshift("inprogress");
+ }
+
+ fn.call(elem, function() {
+ jQuery.dequeue(elem, type);
+ });
+ }
+
+ if ( !queue.length ) {
+ jQuery.removeData( elem, type + "queue", true );
+ }
+ }
+});
+
+jQuery.fn.extend({
+ queue: function( type, data ) {
+ if ( typeof type !== "string" ) {
+ data = type;
+ type = "fx";
+ }
+
+ if ( data === undefined ) {
+ return jQuery.queue( this[0], type );
+ }
+ return this.each(function( i ) {
+ var queue = jQuery.queue( this, type, data );
+
+ if ( type === "fx" && queue[0] !== "inprogress" ) {
+ jQuery.dequeue( this, type );
+ }
+ });
+ },
+ dequeue: function( type ) {
+ return this.each(function() {
+ jQuery.dequeue( this, type );
+ });
+ },
+
+ // Based off of the plugin by Clint Helfers, with permission.
+ // http://blindsignals.com/index.php/2009/07/jquery-delay/
+ delay: function( time, type ) {
+ time = jQuery.fx ? jQuery.fx.speeds[time] || time : time;
+ type = type || "fx";
+
+ return this.queue( type, function() {
+ var elem = this;
+ setTimeout(function() {
+ jQuery.dequeue( elem, type );
+ }, time );
+ });
+ },
+
+ clearQueue: function( type ) {
+ return this.queue( type || "fx", [] );
+ }
+});
+
+
+
+
+var rclass = /[\n\t\r]/g,
+ rspaces = /\s+/,
+ rreturn = /\r/g,
+ rspecialurl = /^(?:href|src|style)$/,
+ rtype = /^(?:button|input)$/i,
+ rfocusable = /^(?:button|input|object|select|textarea)$/i,
+ rclickable = /^a(?:rea)?$/i,
+ rradiocheck = /^(?:radio|checkbox)$/i;
+
+jQuery.props = {
+ "for": "htmlFor",
+ "class": "className",
+ readonly: "readOnly",
+ maxlength: "maxLength",
+ cellspacing: "cellSpacing",
+ rowspan: "rowSpan",
+ colspan: "colSpan",
+ tabindex: "tabIndex",
+ usemap: "useMap",
+ frameborder: "frameBorder"
+};
+
+jQuery.fn.extend({
+ attr: function( name, value ) {
+ return jQuery.access( this, name, value, true, jQuery.attr );
+ },
+
+ removeAttr: function( name, fn ) {
+ return this.each(function(){
+ jQuery.attr( this, name, "" );
+ if ( this.nodeType === 1 ) {
+ this.removeAttribute( name );
+ }
+ });
+ },
+
+ addClass: function( value ) {
+ if ( jQuery.isFunction(value) ) {
+ return this.each(function(i) {
+ var self = jQuery(this);
+ self.addClass( value.call(this, i, self.attr("class")) );
+ });
+ }
+
+ if ( value && typeof value === "string" ) {
+ var classNames = (value || "").split( rspaces );
+
+ for ( var i = 0, l = this.length; i < l; i++ ) {
+ var elem = this[i];
+
+ if ( elem.nodeType === 1 ) {
+ if ( !elem.className ) {
+ elem.className = value;
+
+ } else {
+ var className = " " + elem.className + " ",
+ setClass = elem.className;
+
+ for ( var c = 0, cl = classNames.length; c < cl; c++ ) {
+ if ( className.indexOf( " " + classNames[c] + " " ) < 0 ) {
+ setClass += " " + classNames[c];
+ }
+ }
+ elem.className = jQuery.trim( setClass );
+ }
+ }
+ }
+ }
+
+ return this;
+ },
+
+ removeClass: function( value ) {
+ if ( jQuery.isFunction(value) ) {
+ return this.each(function(i) {
+ var self = jQuery(this);
+ self.removeClass( value.call(this, i, self.attr("class")) );
+ });
+ }
+
+ if ( (value && typeof value === "string") || value === undefined ) {
+ var classNames = (value || "").split( rspaces );
+
+ for ( var i = 0, l = this.length; i < l; i++ ) {
+ var elem = this[i];
+
+ if ( elem.nodeType === 1 && elem.className ) {
+ if ( value ) {
+ var className = (" " + elem.className + " ").replace(rclass, " ");
+ for ( var c = 0, cl = classNames.length; c < cl; c++ ) {
+ className = className.replace(" " + classNames[c] + " ", " ");
+ }
+ elem.className = jQuery.trim( className );
+
+ } else {
+ elem.className = "";
+ }
+ }
+ }
+ }
+
+ return this;
+ },
+
+ toggleClass: function( value, stateVal ) {
+ var type = typeof value,
+ isBool = typeof stateVal === "boolean";
+
+ if ( jQuery.isFunction( value ) ) {
+ return this.each(function(i) {
+ var self = jQuery(this);
+ self.toggleClass( value.call(this, i, self.attr("class"), stateVal), stateVal );
+ });
+ }
+
+ return this.each(function() {
+ if ( type === "string" ) {
+ // toggle individual class names
+ var className,
+ i = 0,
+ self = jQuery( this ),
+ state = stateVal,
+ classNames = value.split( rspaces );
+
+ while ( (className = classNames[ i++ ]) ) {
+ // check each className given, space seperated list
+ state = isBool ? state : !self.hasClass( className );
+ self[ state ? "addClass" : "removeClass" ]( className );
+ }
+
+ } else if ( type === "undefined" || type === "boolean" ) {
+ if ( this.className ) {
+ // store className if set
+ jQuery._data( this, "__className__", this.className );
+ }
+
+ // toggle whole className
+ this.className = this.className || value === false ? "" : jQuery._data( this, "__className__" ) || "";
+ }
+ });
+ },
+
+ hasClass: function( selector ) {
+ var className = " " + selector + " ";
+ for ( var i = 0, l = this.length; i < l; i++ ) {
+ if ( (" " + this[i].className + " ").replace(rclass, " ").indexOf( className ) > -1 ) {
+ return true;
+ }
+ }
+
+ return false;
+ },
+
+ val: function( value ) {
+ if ( !arguments.length ) {
+ var elem = this[0];
+
+ if ( elem ) {
+ if ( jQuery.nodeName( elem, "option" ) ) {
+ // attributes.value is undefined in Blackberry 4.7 but
+ // uses .value. See #6932
+ var val = elem.attributes.value;
+ return !val || val.specified ? elem.value : elem.text;
+ }
+
+ // We need to handle select boxes special
+ if ( jQuery.nodeName( elem, "select" ) ) {
+ var index = elem.selectedIndex,
+ values = [],
+ options = elem.options,
+ one = elem.type === "select-one";
+
+ // Nothing was selected
+ if ( index < 0 ) {
+ return null;
+ }
+
+ // Loop through all the selected options
+ for ( var i = one ? index : 0, max = one ? index + 1 : options.length; i < max; i++ ) {
+ var option = options[ i ];
+
+ // Don't return options that are disabled or in a disabled optgroup
+ if ( option.selected && (jQuery.support.optDisabled ? !option.disabled : option.getAttribute("disabled") === null) &&
+ (!option.parentNode.disabled || !jQuery.nodeName( option.parentNode, "optgroup" )) ) {
+
+ // Get the specific value for the option
+ value = jQuery(option).val();
+
+ // We don't need an array for one selects
+ if ( one ) {
+ return value;
+ }
+
+ // Multi-Selects return an array
+ values.push( value );
+ }
+ }
+
+ // Fixes Bug #2551 -- select.val() broken in IE after form.reset()
+ if ( one && !values.length && options.length ) {
+ return jQuery( options[ index ] ).val();
+ }
+
+ return values;
+ }
+
+ // Handle the case where in Webkit "" is returned instead of "on" if a value isn't specified
+ if ( rradiocheck.test( elem.type ) && !jQuery.support.checkOn ) {
+ return elem.getAttribute("value") === null ? "on" : elem.value;
+ }
+
+ // Everything else, we just grab the value
+ return (elem.value || "").replace(rreturn, "");
+
+ }
+
+ return undefined;
+ }
+
+ var isFunction = jQuery.isFunction(value);
+
+ return this.each(function(i) {
+ var self = jQuery(this), val = value;
+
+ if ( this.nodeType !== 1 ) {
+ return;
+ }
+
+ if ( isFunction ) {
+ val = value.call(this, i, self.val());
+ }
+
+ // Treat null/undefined as ""; convert numbers to string
+ if ( val == null ) {
+ val = "";
+ } else if ( typeof val === "number" ) {
+ val += "";
+ } else if ( jQuery.isArray(val) ) {
+ val = jQuery.map(val, function (value) {
+ return value == null ? "" : value + "";
+ });
+ }
+
+ if ( jQuery.isArray(val) && rradiocheck.test( this.type ) ) {
+ this.checked = jQuery.inArray( self.val(), val ) >= 0;
+
+ } else if ( jQuery.nodeName( this, "select" ) ) {
+ var values = jQuery.makeArray(val);
+
+ jQuery( "option", this ).each(function() {
+ this.selected = jQuery.inArray( jQuery(this).val(), values ) >= 0;
+ });
+
+ if ( !values.length ) {
+ this.selectedIndex = -1;
+ }
+
+ } else {
+ this.value = val;
+ }
+ });
+ }
+});
+
+jQuery.extend({
+ attrFn: {
+ val: true,
+ css: true,
+ html: true,
+ text: true,
+ data: true,
+ width: true,
+ height: true,
+ offset: true
+ },
+
+ attr: function( elem, name, value, pass ) {
+ // don't get/set attributes on text, comment and attribute nodes
+ if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || elem.nodeType === 2 ) {
+ return undefined;
+ }
+
+ if ( pass && name in jQuery.attrFn ) {
+ return jQuery(elem)[name](value);
+ }
+
+ var notxml = elem.nodeType !== 1 || !jQuery.isXMLDoc( elem ),
+ // Whether we are setting (or getting)
+ set = value !== undefined;
+
+ // Try to normalize/fix the name
+ name = notxml && jQuery.props[ name ] || name;
+
+ // Only do all the following if this is a node (faster for style)
+ if ( elem.nodeType === 1 ) {
+ // These attributes require special treatment
+ var special = rspecialurl.test( name );
+
+ // Safari mis-reports the default selected property of an option
+ // Accessing the parent's selectedIndex property fixes it
+ if ( name === "selected" && !jQuery.support.optSelected ) {
+ var parent = elem.parentNode;
+ if ( parent ) {
+ parent.selectedIndex;
+
+ // Make sure that it also works with optgroups, see #5701
+ if ( parent.parentNode ) {
+ parent.parentNode.selectedIndex;
+ }
+ }
+ }
+
+ // If applicable, access the attribute via the DOM 0 way
+ // 'in' checks fail in Blackberry 4.7 #6931
+ if ( (name in elem || elem[ name ] !== undefined) && notxml && !special ) {
+ if ( set ) {
+ // We can't allow the type property to be changed (since it causes problems in IE)
+ if ( name === "type" && rtype.test( elem.nodeName ) && elem.parentNode ) {
+ jQuery.error( "type property can't be changed" );
+ }
+
+ if ( value === null ) {
+ if ( elem.nodeType === 1 ) {
+ elem.removeAttribute( name );
+ }
+
+ } else {
+ elem[ name ] = value;
+ }
+ }
+
+ // browsers index elements by id/name on forms, give priority to attributes.
+ if ( jQuery.nodeName( elem, "form" ) && elem.getAttributeNode(name) ) {
+ return elem.getAttributeNode( name ).nodeValue;
+ }
+
+ // elem.tabIndex doesn't always return the correct value when it hasn't been explicitly set
+ // http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/
+ if ( name === "tabIndex" ) {
+ var attributeNode = elem.getAttributeNode( "tabIndex" );
+
+ return attributeNode && attributeNode.specified ?
+ attributeNode.value :
+ rfocusable.test( elem.nodeName ) || rclickable.test( elem.nodeName ) && elem.href ?
+ 0 :
+ undefined;
+ }
+
+ return elem[ name ];
+ }
+
+ if ( !jQuery.support.style && notxml && name === "style" ) {
+ if ( set ) {
+ elem.style.cssText = "" + value;
+ }
+
+ return elem.style.cssText;
+ }
+
+ if ( set ) {
+ // convert the value to a string (all browsers do this but IE) see #1070
+ elem.setAttribute( name, "" + value );
+ }
+
+ // Ensure that missing attributes return undefined
+ // Blackberry 4.7 returns "" from getAttribute #6938
+ if ( !elem.attributes[ name ] && (elem.hasAttribute && !elem.hasAttribute( name )) ) {
+ return undefined;
+ }
+
+ var attr = !jQuery.support.hrefNormalized && notxml && special ?
+ // Some attributes require a special call on IE
+ elem.getAttribute( name, 2 ) :
+ elem.getAttribute( name );
+
+ // Non-existent attributes return null, we normalize to undefined
+ return attr === null ? undefined : attr;
+ }
+ // Handle everything which isn't a DOM element node
+ if ( set ) {
+ elem[ name ] = value;
+ }
+ return elem[ name ];
+ }
+});
+
+
+
+
+var rnamespaces = /\.(.*)$/,
+ rformElems = /^(?:textarea|input|select)$/i,
+ rperiod = /\./g,
+ rspace = / /g,
+ rescape = /[^\w\s.|`]/g,
+ fcleanup = function( nm ) {
+ return nm.replace(rescape, "\\$&");
+ };
+
+/*
+ * A number of helper functions used for managing events.
+ * Many of the ideas behind this code originated from
+ * Dean Edwards' addEvent library.
+ */
+jQuery.event = {
+
+ // Bind an event to an element
+ // Original by Dean Edwards
+ add: function( elem, types, handler, data ) {
+ if ( elem.nodeType === 3 || elem.nodeType === 8 ) {
+ return;
+ }
+
+ // TODO :: Use a try/catch until it's safe to pull this out (likely 1.6)
+ // Minor release fix for bug #8018
+ try {
+ // For whatever reason, IE has trouble passing the window object
+ // around, causing it to be cloned in the process
+ if ( jQuery.isWindow( elem ) && ( elem !== window && !elem.frameElement ) ) {
+ elem = window;
+ }
+ }
+ catch ( e ) {}
+
+ if ( handler === false ) {
+ handler = returnFalse;
+ } else if ( !handler ) {
+ // Fixes bug #7229. Fix recommended by jdalton
+ return;
+ }
+
+ var handleObjIn, handleObj;
+
+ if ( handler.handler ) {
+ handleObjIn = handler;
+ handler = handleObjIn.handler;
+ }
+
+ // Make sure that the function being executed has a unique ID
+ if ( !handler.guid ) {
+ handler.guid = jQuery.guid++;
+ }
+
+ // Init the element's event structure
+ var elemData = jQuery._data( elem );
+
+ // If no elemData is found then we must be trying to bind to one of the
+ // banned noData elements
+ if ( !elemData ) {
+ return;
+ }
+
+ var events = elemData.events,
+ eventHandle = elemData.handle;
+
+ if ( !events ) {
+ elemData.events = events = {};
+ }
+
+ if ( !eventHandle ) {
+ elemData.handle = eventHandle = function( e ) {
+ // Handle the second event of a trigger and when
+ // an event is called after a page has unloaded
+ return typeof jQuery !== "undefined" && jQuery.event.triggered !== e.type ?
+ jQuery.event.handle.apply( eventHandle.elem, arguments ) :
+ undefined;
+ };
+ }
+
+ // Add elem as a property of the handle function
+ // This is to prevent a memory leak with non-native events in IE.
+ eventHandle.elem = elem;
+
+ // Handle multiple events separated by a space
+ // jQuery(...).bind("mouseover mouseout", fn);
+ types = types.split(" ");
+
+ var type, i = 0, namespaces;
+
+ while ( (type = types[ i++ ]) ) {
+ handleObj = handleObjIn ?
+ jQuery.extend({}, handleObjIn) :
+ { handler: handler, data: data };
+
+ // Namespaced event handlers
+ if ( type.indexOf(".") > -1 ) {
+ namespaces = type.split(".");
+ type = namespaces.shift();
+ handleObj.namespace = namespaces.slice(0).sort().join(".");
+
+ } else {
+ namespaces = [];
+ handleObj.namespace = "";
+ }
+
+ handleObj.type = type;
+ if ( !handleObj.guid ) {
+ handleObj.guid = handler.guid;
+ }
+
+ // Get the current list of functions bound to this event
+ var handlers = events[ type ],
+ special = jQuery.event.special[ type ] || {};
+
+ // Init the event handler queue
+ if ( !handlers ) {
+ handlers = events[ type ] = [];
+
+ // Check for a special event handler
+ // Only use addEventListener/attachEvent if the special
+ // events handler returns false
+ if ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) {
+ // Bind the global event handler to the element
+ if ( elem.addEventListener ) {
+ elem.addEventListener( type, eventHandle, false );
+
+ } else if ( elem.attachEvent ) {
+ elem.attachEvent( "on" + type, eventHandle );
+ }
+ }
+ }
+
+ if ( special.add ) {
+ special.add.call( elem, handleObj );
+
+ if ( !handleObj.handler.guid ) {
+ handleObj.handler.guid = handler.guid;
+ }
+ }
+
+ // Add the function to the element's handler list
+ handlers.push( handleObj );
+
+ // Keep track of which events have been used, for global triggering
+ jQuery.event.global[ type ] = true;
+ }
+
+ // Nullify elem to prevent memory leaks in IE
+ elem = null;
+ },
+
+ global: {},
+
+ // Detach an event or set of events from an element
+ remove: function( elem, types, handler, pos ) {
+ // don't do events on text and comment nodes
+ if ( elem.nodeType === 3 || elem.nodeType === 8 ) {
+ return;
+ }
+
+ if ( handler === false ) {
+ handler = returnFalse;
+ }
+
+ var ret, type, fn, j, i = 0, all, namespaces, namespace, special, eventType, handleObj, origType,
+ elemData = jQuery.hasData( elem ) && jQuery._data( elem ),
+ events = elemData && elemData.events;
+
+ if ( !elemData || !events ) {
+ return;
+ }
+
+ // types is actually an event object here
+ if ( types && types.type ) {
+ handler = types.handler;
+ types = types.type;
+ }
+
+ // Unbind all events for the element
+ if ( !types || typeof types === "string" && types.charAt(0) === "." ) {
+ types = types || "";
+
+ for ( type in events ) {
+ jQuery.event.remove( elem, type + types );
+ }
+
+ return;
+ }
+
+ // Handle multiple events separated by a space
+ // jQuery(...).unbind("mouseover mouseout", fn);
+ types = types.split(" ");
+
+ while ( (type = types[ i++ ]) ) {
+ origType = type;
+ handleObj = null;
+ all = type.indexOf(".") < 0;
+ namespaces = [];
+
+ if ( !all ) {
+ // Namespaced event handlers
+ namespaces = type.split(".");
+ type = namespaces.shift();
+
+ namespace = new RegExp("(^|\\.)" +
+ jQuery.map( namespaces.slice(0).sort(), fcleanup ).join("\\.(?:.*\\.)?") + "(\\.|$)");
+ }
+
+ eventType = events[ type ];
+
+ if ( !eventType ) {
+ continue;
+ }
+
+ if ( !handler ) {
+ for ( j = 0; j < eventType.length; j++ ) {
+ handleObj = eventType[ j ];
+
+ if ( all || namespace.test( handleObj.namespace ) ) {
+ jQuery.event.remove( elem, origType, handleObj.handler, j );
+ eventType.splice( j--, 1 );
+ }
+ }
+
+ continue;
+ }
+
+ special = jQuery.event.special[ type ] || {};
+
+ for ( j = pos || 0; j < eventType.length; j++ ) {
+ handleObj = eventType[ j ];
+
+ if ( handler.guid === handleObj.guid ) {
+ // remove the given handler for the given type
+ if ( all || namespace.test( handleObj.namespace ) ) {
+ if ( pos == null ) {
+ eventType.splice( j--, 1 );
+ }
+
+ if ( special.remove ) {
+ special.remove.call( elem, handleObj );
+ }
+ }
+
+ if ( pos != null ) {
+ break;
+ }
+ }
+ }
+
+ // remove generic event handler if no more handlers exist
+ if ( eventType.length === 0 || pos != null && eventType.length === 1 ) {
+ if ( !special.teardown || special.teardown.call( elem, namespaces ) === false ) {
+ jQuery.removeEvent( elem, type, elemData.handle );
+ }
+
+ ret = null;
+ delete events[ type ];
+ }
+ }
+
+ // Remove the expando if it's no longer used
+ if ( jQuery.isEmptyObject( events ) ) {
+ var handle = elemData.handle;
+ if ( handle ) {
+ handle.elem = null;
+ }
+
+ delete elemData.events;
+ delete elemData.handle;
+
+ if ( jQuery.isEmptyObject( elemData ) ) {
+ jQuery.removeData( elem, undefined, true );
+ }
+ }
+ },
+
+ // bubbling is internal
+ trigger: function( event, data, elem /*, bubbling */ ) {
+ // Event object or event type
+ var type = event.type || event,
+ bubbling = arguments[3];
+
+ if ( !bubbling ) {
+ event = typeof event === "object" ?
+ // jQuery.Event object
+ event[ jQuery.expando ] ? event :
+ // Object literal
+ jQuery.extend( jQuery.Event(type), event ) :
+ // Just the event type (string)
+ jQuery.Event(type);
+
+ if ( type.indexOf("!") >= 0 ) {
+ event.type = type = type.slice(0, -1);
+ event.exclusive = true;
+ }
+
+ // Handle a global trigger
+ if ( !elem ) {
+ // Don't bubble custom events when global (to avoid too much overhead)
+ event.stopPropagation();
+
+ // Only trigger if we've ever bound an event for it
+ if ( jQuery.event.global[ type ] ) {
+ // XXX This code smells terrible. event.js should not be directly
+ // inspecting the data cache
+ jQuery.each( jQuery.cache, function() {
+ // internalKey variable is just used to make it easier to find
+ // and potentially change this stuff later; currently it just
+ // points to jQuery.expando
+ var internalKey = jQuery.expando,
+ internalCache = this[ internalKey ];
+ if ( internalCache && internalCache.events && internalCache.events[ type ] ) {
+ jQuery.event.trigger( event, data, internalCache.handle.elem );
+ }
+ });
+ }
+ }
+
+ // Handle triggering a single element
+
+ // don't do events on text and comment nodes
+ if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 ) {
+ return undefined;
+ }
+
+ // Clean up in case it is reused
+ event.result = undefined;
+ event.target = elem;
+
+ // Clone the incoming data, if any
+ data = jQuery.makeArray( data );
+ data.unshift( event );
+ }
+
+ event.currentTarget = elem;
+
+ // Trigger the event, it is assumed that "handle" is a function
+ var handle = jQuery._data( elem, "handle" );
+
+ if ( handle ) {
+ handle.apply( elem, data );
+ }
+
+ var parent = elem.parentNode || elem.ownerDocument;
+
+ // Trigger an inline bound script
+ try {
+ if ( !(elem && elem.nodeName && jQuery.noData[elem.nodeName.toLowerCase()]) ) {
+ if ( elem[ "on" + type ] && elem[ "on" + type ].apply( elem, data ) === false ) {
+ event.result = false;
+ event.preventDefault();
+ }
+ }
+
+ // prevent IE from throwing an error for some elements with some event types, see #3533
+ } catch (inlineError) {}
+
+ if ( !event.isPropagationStopped() && parent ) {
+ jQuery.event.trigger( event, data, parent, true );
+
+ } else if ( !event.isDefaultPrevented() ) {
+ var old,
+ target = event.target,
+ targetType = type.replace( rnamespaces, "" ),
+ isClick = jQuery.nodeName( target, "a" ) && targetType === "click",
+ special = jQuery.event.special[ targetType ] || {};
+
+ if ( (!special._default || special._default.call( elem, event ) === false) &&
+ !isClick && !(target && target.nodeName && jQuery.noData[target.nodeName.toLowerCase()]) ) {
+
+ try {
+ if ( target[ targetType ] ) {
+ // Make sure that we don't accidentally re-trigger the onFOO events
+ old = target[ "on" + targetType ];
+
+ if ( old ) {
+ target[ "on" + targetType ] = null;
+ }
+
+ jQuery.event.triggered = event.type;
+ target[ targetType ]();
+ }
+
+ // prevent IE from throwing an error for some elements with some event types, see #3533
+ } catch (triggerError) {}
+
+ if ( old ) {
+ target[ "on" + targetType ] = old;
+ }
+
+ jQuery.event.triggered = undefined;
+ }
+ }
+ },
+
+ handle: function( event ) {
+ var all, handlers, namespaces, namespace_re, events,
+ namespace_sort = [],
+ args = jQuery.makeArray( arguments );
+
+ event = args[0] = jQuery.event.fix( event || window.event );
+ event.currentTarget = this;
+
+ // Namespaced event handlers
+ all = event.type.indexOf(".") < 0 && !event.exclusive;
+
+ if ( !all ) {
+ namespaces = event.type.split(".");
+ event.type = namespaces.shift();
+ namespace_sort = namespaces.slice(0).sort();
+ namespace_re = new RegExp("(^|\\.)" + namespace_sort.join("\\.(?:.*\\.)?") + "(\\.|$)");
+ }
+
+ event.namespace = event.namespace || namespace_sort.join(".");
+
+ events = jQuery._data(this, "events");
+
+ handlers = (events || {})[ event.type ];
+
+ if ( events && handlers ) {
+ // Clone the handlers to prevent manipulation
+ handlers = handlers.slice(0);
+
+ for ( var j = 0, l = handlers.length; j < l; j++ ) {
+ var handleObj = handlers[ j ];
+
+ // Filter the functions by class
+ if ( all || namespace_re.test( handleObj.namespace ) ) {
+ // Pass in a reference to the handler function itself
+ // So that we can later remove it
+ event.handler = handleObj.handler;
+ event.data = handleObj.data;
+ event.handleObj = handleObj;
+
+ var ret = handleObj.handler.apply( this, args );
+
+ if ( ret !== undefined ) {
+ event.result = ret;
+ if ( ret === false ) {
+ event.preventDefault();
+ event.stopPropagation();
+ }
+ }
+
+ if ( event.isImmediatePropagationStopped() ) {
+ break;
+ }
+ }
+ }
+ }
+
+ return event.result;
+ },
+
+ props: "altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode layerX layerY metaKey newValue offsetX offsetY pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),
+
+ fix: function( event ) {
+ if ( event[ jQuery.expando ] ) {
+ return event;
+ }
+
+ // store a copy of the original event object
+ // and "clone" to set read-only properties
+ var originalEvent = event;
+ event = jQuery.Event( originalEvent );
+
+ for ( var i = this.props.length, prop; i; ) {
+ prop = this.props[ --i ];
+ event[ prop ] = originalEvent[ prop ];
+ }
+
+ // Fix target property, if necessary
+ if ( !event.target ) {
+ // Fixes #1925 where srcElement might not be defined either
+ event.target = event.srcElement || document;
+ }
+
+ // check if target is a textnode (safari)
+ if ( event.target.nodeType === 3 ) {
+ event.target = event.target.parentNode;
+ }
+
+ // Add relatedTarget, if necessary
+ if ( !event.relatedTarget && event.fromElement ) {
+ event.relatedTarget = event.fromElement === event.target ? event.toElement : event.fromElement;
+ }
+
+ // Calculate pageX/Y if missing and clientX/Y available
+ if ( event.pageX == null && event.clientX != null ) {
+ var doc = document.documentElement,
+ body = document.body;
+
+ event.pageX = event.clientX + (doc && doc.scrollLeft || body && body.scrollLeft || 0) - (doc && doc.clientLeft || body && body.clientLeft || 0);
+ event.pageY = event.clientY + (doc && doc.scrollTop || body && body.scrollTop || 0) - (doc && doc.clientTop || body && body.clientTop || 0);
+ }
+
+ // Add which for key events
+ if ( event.which == null && (event.charCode != null || event.keyCode != null) ) {
+ event.which = event.charCode != null ? event.charCode : event.keyCode;
+ }
+
+ // Add metaKey to non-Mac browsers (use ctrl for PC's and Meta for Macs)
+ if ( !event.metaKey && event.ctrlKey ) {
+ event.metaKey = event.ctrlKey;
+ }
+
+ // Add which for click: 1 === left; 2 === middle; 3 === right
+ // Note: button is not normalized, so don't use it
+ if ( !event.which && event.button !== undefined ) {
+ event.which = (event.button & 1 ? 1 : ( event.button & 2 ? 3 : ( event.button & 4 ? 2 : 0 ) ));
+ }
+
+ return event;
+ },
+
+ // Deprecated, use jQuery.guid instead
+ guid: 1E8,
+
+ // Deprecated, use jQuery.proxy instead
+ proxy: jQuery.proxy,
+
+ special: {
+ ready: {
+ // Make sure the ready event is setup
+ setup: jQuery.bindReady,
+ teardown: jQuery.noop
+ },
+
+ live: {
+ add: function( handleObj ) {
+ jQuery.event.add( this,
+ liveConvert( handleObj.origType, handleObj.selector ),
+ jQuery.extend({}, handleObj, {handler: liveHandler, guid: handleObj.handler.guid}) );
+ },
+
+ remove: function( handleObj ) {
+ jQuery.event.remove( this, liveConvert( handleObj.origType, handleObj.selector ), handleObj );
+ }
+ },
+
+ beforeunload: {
+ setup: function( data, namespaces, eventHandle ) {
+ // We only want to do this special case on windows
+ if ( jQuery.isWindow( this ) ) {
+ this.onbeforeunload = eventHandle;
+ }
+ },
+
+ teardown: function( namespaces, eventHandle ) {
+ if ( this.onbeforeunload === eventHandle ) {
+ this.onbeforeunload = null;
+ }
+ }
+ }
+ }
+};
+
+jQuery.removeEvent = document.removeEventListener ?
+ function( elem, type, handle ) {
+ if ( elem.removeEventListener ) {
+ elem.removeEventListener( type, handle, false );
+ }
+ } :
+ function( elem, type, handle ) {
+ if ( elem.detachEvent ) {
+ elem.detachEvent( "on" + type, handle );
+ }
+ };
+
+jQuery.Event = function( src ) {
+ // Allow instantiation without the 'new' keyword
+ if ( !this.preventDefault ) {
+ return new jQuery.Event( src );
+ }
+
+ // Event object
+ if ( src && src.type ) {
+ this.originalEvent = src;
+ this.type = src.type;
+
+ // Events bubbling up the document may have been marked as prevented
+ // by a handler lower down the tree; reflect the correct value.
+ this.isDefaultPrevented = (src.defaultPrevented || src.returnValue === false ||
+ src.getPreventDefault && src.getPreventDefault()) ? returnTrue : returnFalse;
+
+ // Event type
+ } else {
+ this.type = src;
+ }
+
+ // timeStamp is buggy for some events on Firefox(#3843)
+ // So we won't rely on the native value
+ this.timeStamp = jQuery.now();
+
+ // Mark it as fixed
+ this[ jQuery.expando ] = true;
+};
+
+function returnFalse() {
+ return false;
+}
+function returnTrue() {
+ return true;
+}
+
+// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding
+// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html
+jQuery.Event.prototype = {
+ preventDefault: function() {
+ this.isDefaultPrevented = returnTrue;
+
+ var e = this.originalEvent;
+ if ( !e ) {
+ return;
+ }
+
+ // if preventDefault exists run it on the original event
+ if ( e.preventDefault ) {
+ e.preventDefault();
+
+ // otherwise set the returnValue property of the original event to false (IE)
+ } else {
+ e.returnValue = false;
+ }
+ },
+ stopPropagation: function() {
+ this.isPropagationStopped = returnTrue;
+
+ var e = this.originalEvent;
+ if ( !e ) {
+ return;
+ }
+ // if stopPropagation exists run it on the original event
+ if ( e.stopPropagation ) {
+ e.stopPropagation();
+ }
+ // otherwise set the cancelBubble property of the original event to true (IE)
+ e.cancelBubble = true;
+ },
+ stopImmediatePropagation: function() {
+ this.isImmediatePropagationStopped = returnTrue;
+ this.stopPropagation();
+ },
+ isDefaultPrevented: returnFalse,
+ isPropagationStopped: returnFalse,
+ isImmediatePropagationStopped: returnFalse
+};
+
+// Checks if an event happened on an element within another element
+// Used in jQuery.event.special.mouseenter and mouseleave handlers
+var withinElement = function( event ) {
+ // Check if mouse(over|out) are still within the same parent element
+ var parent = event.relatedTarget;
+
+ // Firefox sometimes assigns relatedTarget a XUL element
+ // which we cannot access the parentNode property of
+ try {
+
+ // Chrome does something similar, the parentNode property
+ // can be accessed but is null.
+ if ( parent && parent !== document && !parent.parentNode ) {
+ return;
+ }
+ // Traverse up the tree
+ while ( parent && parent !== this ) {
+ parent = parent.parentNode;
+ }
+
+ if ( parent !== this ) {
+ // set the correct event type
+ event.type = event.data;
+
+ // handle event if we actually just moused on to a non sub-element
+ jQuery.event.handle.apply( this, arguments );
+ }
+
+ // assuming we've left the element since we most likely mousedover a xul element
+ } catch(e) { }
+},
+
+// In case of event delegation, we only need to rename the event.type,
+// liveHandler will take care of the rest.
+delegate = function( event ) {
+ event.type = event.data;
+ jQuery.event.handle.apply( this, arguments );
+};
+
+// Create mouseenter and mouseleave events
+jQuery.each({
+ mouseenter: "mouseover",
+ mouseleave: "mouseout"
+}, function( orig, fix ) {
+ jQuery.event.special[ orig ] = {
+ setup: function( data ) {
+ jQuery.event.add( this, fix, data && data.selector ? delegate : withinElement, orig );
+ },
+ teardown: function( data ) {
+ jQuery.event.remove( this, fix, data && data.selector ? delegate : withinElement );
+ }
+ };
+});
+
+// submit delegation
+if ( !jQuery.support.submitBubbles ) {
+
+ jQuery.event.special.submit = {
+ setup: function( data, namespaces ) {
+ if ( this.nodeName && this.nodeName.toLowerCase() !== "form" ) {
+ jQuery.event.add(this, "click.specialSubmit", function( e ) {
+ var elem = e.target,
+ type = elem.type;
+
+ if ( (type === "submit" || type === "image") && jQuery( elem ).closest("form").length ) {
+ trigger( "submit", this, arguments );
+ }
+ });
+
+ jQuery.event.add(this, "keypress.specialSubmit", function( e ) {
+ var elem = e.target,
+ type = elem.type;
+
+ if ( (type === "text" || type === "password") && jQuery( elem ).closest("form").length && e.keyCode === 13 ) {
+ trigger( "submit", this, arguments );
+ }
+ });
+
+ } else {
+ return false;
+ }
+ },
+
+ teardown: function( namespaces ) {
+ jQuery.event.remove( this, ".specialSubmit" );
+ }
+ };
+
+}
+
+// change delegation, happens here so we have bind.
+if ( !jQuery.support.changeBubbles ) {
+
+ var changeFilters,
+
+ getVal = function( elem ) {
+ var type = elem.type, val = elem.value;
+
+ if ( type === "radio" || type === "checkbox" ) {
+ val = elem.checked;
+
+ } else if ( type === "select-multiple" ) {
+ val = elem.selectedIndex > -1 ?
+ jQuery.map( elem.options, function( elem ) {
+ return elem.selected;
+ }).join("-") :
+ "";
+
+ } else if ( elem.nodeName.toLowerCase() === "select" ) {
+ val = elem.selectedIndex;
+ }
+
+ return val;
+ },
+
+ testChange = function testChange( e ) {
+ var elem = e.target, data, val;
+
+ if ( !rformElems.test( elem.nodeName ) || elem.readOnly ) {
+ return;
+ }
+
+ data = jQuery._data( elem, "_change_data" );
+ val = getVal(elem);
+
+ // the current data will be also retrieved by beforeactivate
+ if ( e.type !== "focusout" || elem.type !== "radio" ) {
+ jQuery._data( elem, "_change_data", val );
+ }
+
+ if ( data === undefined || val === data ) {
+ return;
+ }
+
+ if ( data != null || val ) {
+ e.type = "change";
+ e.liveFired = undefined;
+ jQuery.event.trigger( e, arguments[1], elem );
+ }
+ };
+
+ jQuery.event.special.change = {
+ filters: {
+ focusout: testChange,
+
+ beforedeactivate: testChange,
+
+ click: function( e ) {
+ var elem = e.target, type = elem.type;
+
+ if ( type === "radio" || type === "checkbox" || elem.nodeName.toLowerCase() === "select" ) {
+ testChange.call( this, e );
+ }
+ },
+
+ // Change has to be called before submit
+ // Keydown will be called before keypress, which is used in submit-event delegation
+ keydown: function( e ) {
+ var elem = e.target, type = elem.type;
+
+ if ( (e.keyCode === 13 && elem.nodeName.toLowerCase() !== "textarea") ||
+ (e.keyCode === 32 && (type === "checkbox" || type === "radio")) ||
+ type === "select-multiple" ) {
+ testChange.call( this, e );
+ }
+ },
+
+ // Beforeactivate happens also before the previous element is blurred
+ // with this event you can't trigger a change event, but you can store
+ // information
+ beforeactivate: function( e ) {
+ var elem = e.target;
+ jQuery._data( elem, "_change_data", getVal(elem) );
+ }
+ },
+
+ setup: function( data, namespaces ) {
+ if ( this.type === "file" ) {
+ return false;
+ }
+
+ for ( var type in changeFilters ) {
+ jQuery.event.add( this, type + ".specialChange", changeFilters[type] );
+ }
+
+ return rformElems.test( this.nodeName );
+ },
+
+ teardown: function( namespaces ) {
+ jQuery.event.remove( this, ".specialChange" );
+
+ return rformElems.test( this.nodeName );
+ }
+ };
+
+ changeFilters = jQuery.event.special.change.filters;
+
+ // Handle when the input is .focus()'d
+ changeFilters.focus = changeFilters.beforeactivate;
+}
+
+function trigger( type, elem, args ) {
+ // Piggyback on a donor event to simulate a different one.
+ // Fake originalEvent to avoid donor's stopPropagation, but if the
+ // simulated event prevents default then we do the same on the donor.
+ // Don't pass args or remember liveFired; they apply to the donor event.
+ var event = jQuery.extend( {}, args[ 0 ] );
+ event.type = type;
+ event.originalEvent = {};
+ event.liveFired = undefined;
+ jQuery.event.handle.call( elem, event );
+ if ( event.isDefaultPrevented() ) {
+ args[ 0 ].preventDefault();
+ }
+}
+
+// Create "bubbling" focus and blur events
+if ( document.addEventListener ) {
+ jQuery.each({ focus: "focusin", blur: "focusout" }, function( orig, fix ) {
+
+ // Attach a single capturing handler while someone wants focusin/focusout
+ var attaches = 0;
+
+ jQuery.event.special[ fix ] = {
+ setup: function() {
+ if ( attaches++ === 0 ) {
+ document.addEventListener( orig, handler, true );
+ }
+ },
+ teardown: function() {
+ if ( --attaches === 0 ) {
+ document.removeEventListener( orig, handler, true );
+ }
+ }
+ };
+
+ function handler( donor ) {
+ // Donor event is always a native one; fix it and switch its type.
+ // Let focusin/out handler cancel the donor focus/blur event.
+ var e = jQuery.event.fix( donor );
+ e.type = fix;
+ e.originalEvent = {};
+ jQuery.event.trigger( e, null, e.target );
+ if ( e.isDefaultPrevented() ) {
+ donor.preventDefault();
+ }
+ }
+ });
+}
+
+jQuery.each(["bind", "one"], function( i, name ) {
+ jQuery.fn[ name ] = function( type, data, fn ) {
+ // Handle object literals
+ if ( typeof type === "object" ) {
+ for ( var key in type ) {
+ this[ name ](key, data, type[key], fn);
+ }
+ return this;
+ }
+
+ if ( jQuery.isFunction( data ) || data === false ) {
+ fn = data;
+ data = undefined;
+ }
+
+ var handler = name === "one" ? jQuery.proxy( fn, function( event ) {
+ jQuery( this ).unbind( event, handler );
+ return fn.apply( this, arguments );
+ }) : fn;
+
+ if ( type === "unload" && name !== "one" ) {
+ this.one( type, data, fn );
+
+ } else {
+ for ( var i = 0, l = this.length; i < l; i++ ) {
+ jQuery.event.add( this[i], type, handler, data );
+ }
+ }
+
+ return this;
+ };
+});
+
+jQuery.fn.extend({
+ unbind: function( type, fn ) {
+ // Handle object literals
+ if ( typeof type === "object" && !type.preventDefault ) {
+ for ( var key in type ) {
+ this.unbind(key, type[key]);
+ }
+
+ } else {
+ for ( var i = 0, l = this.length; i < l; i++ ) {
+ jQuery.event.remove( this[i], type, fn );
+ }
+ }
+
+ return this;
+ },
+
+ delegate: function( selector, types, data, fn ) {
+ return this.live( types, data, fn, selector );
+ },
+
+ undelegate: function( selector, types, fn ) {
+ if ( arguments.length === 0 ) {
+ return this.unbind( "live" );
+
+ } else {
+ return this.die( types, null, fn, selector );
+ }
+ },
+
+ trigger: function( type, data ) {
+ return this.each(function() {
+ jQuery.event.trigger( type, data, this );
+ });
+ },
+
+ triggerHandler: function( type, data ) {
+ if ( this[0] ) {
+ var event = jQuery.Event( type );
+ event.preventDefault();
+ event.stopPropagation();
+ jQuery.event.trigger( event, data, this[0] );
+ return event.result;
+ }
+ },
+
+ toggle: function( fn ) {
+ // Save reference to arguments for access in closure
+ var args = arguments,
+ i = 1;
+
+ // link all the functions, so any of them can unbind this click handler
+ while ( i < args.length ) {
+ jQuery.proxy( fn, args[ i++ ] );
+ }
+
+ return this.click( jQuery.proxy( fn, function( event ) {
+ // Figure out which function to execute
+ var lastToggle = ( jQuery._data( this, "lastToggle" + fn.guid ) || 0 ) % i;
+ jQuery._data( this, "lastToggle" + fn.guid, lastToggle + 1 );
+
+ // Make sure that clicks stop
+ event.preventDefault();
+
+ // and execute the function
+ return args[ lastToggle ].apply( this, arguments ) || false;
+ }));
+ },
+
+ hover: function( fnOver, fnOut ) {
+ return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );
+ }
+});
+
+var liveMap = {
+ focus: "focusin",
+ blur: "focusout",
+ mouseenter: "mouseover",
+ mouseleave: "mouseout"
+};
+
+jQuery.each(["live", "die"], function( i, name ) {
+ jQuery.fn[ name ] = function( types, data, fn, origSelector /* Internal Use Only */ ) {
+ var type, i = 0, match, namespaces, preType,
+ selector = origSelector || this.selector,
+ context = origSelector ? this : jQuery( this.context );
+
+ if ( typeof types === "object" && !types.preventDefault ) {
+ for ( var key in types ) {
+ context[ name ]( key, data, types[key], selector );
+ }
+
+ return this;
+ }
+
+ if ( jQuery.isFunction( data ) ) {
+ fn = data;
+ data = undefined;
+ }
+
+ types = (types || "").split(" ");
+
+ while ( (type = types[ i++ ]) != null ) {
+ match = rnamespaces.exec( type );
+ namespaces = "";
+
+ if ( match ) {
+ namespaces = match[0];
+ type = type.replace( rnamespaces, "" );
+ }
+
+ if ( type === "hover" ) {
+ types.push( "mouseenter" + namespaces, "mouseleave" + namespaces );
+ continue;
+ }
+
+ preType = type;
+
+ if ( type === "focus" || type === "blur" ) {
+ types.push( liveMap[ type ] + namespaces );
+ type = type + namespaces;
+
+ } else {
+ type = (liveMap[ type ] || type) + namespaces;
+ }
+
+ if ( name === "live" ) {
+ // bind live handler
+ for ( var j = 0, l = context.length; j < l; j++ ) {
+ jQuery.event.add( context[j], "live." + liveConvert( type, selector ),
+ { data: data, selector: selector, handler: fn, origType: type, origHandler: fn, preType: preType } );
+ }
+
+ } else {
+ // unbind live handler
+ context.unbind( "live." + liveConvert( type, selector ), fn );
+ }
+ }
+
+ return this;
+ };
+});
+
+function liveHandler( event ) {
+ var stop, maxLevel, related, match, handleObj, elem, j, i, l, data, close, namespace, ret,
+ elems = [],
+ selectors = [],
+ events = jQuery._data( this, "events" );
+
+ // Make sure we avoid non-left-click bubbling in Firefox (#3861) and disabled elements in IE (#6911)
+ if ( event.liveFired === this || !events || !events.live || event.target.disabled || event.button && event.type === "click" ) {
+ return;
+ }
+
+ if ( event.namespace ) {
+ namespace = new RegExp("(^|\\.)" + event.namespace.split(".").join("\\.(?:.*\\.)?") + "(\\.|$)");
+ }
+
+ event.liveFired = this;
+
+ var live = events.live.slice(0);
+
+ for ( j = 0; j < live.length; j++ ) {
+ handleObj = live[j];
+
+ if ( handleObj.origType.replace( rnamespaces, "" ) === event.type ) {
+ selectors.push( handleObj.selector );
+
+ } else {
+ live.splice( j--, 1 );
+ }
+ }
+
+ match = jQuery( event.target ).closest( selectors, event.currentTarget );
+
+ for ( i = 0, l = match.length; i < l; i++ ) {
+ close = match[i];
+
+ for ( j = 0; j < live.length; j++ ) {
+ handleObj = live[j];
+
+ if ( close.selector === handleObj.selector && (!namespace || namespace.test( handleObj.namespace )) && !close.elem.disabled ) {
+ elem = close.elem;
+ related = null;
+
+ // Those two events require additional checking
+ if ( handleObj.preType === "mouseenter" || handleObj.preType === "mouseleave" ) {
+ event.type = handleObj.preType;
+ related = jQuery( event.relatedTarget ).closest( handleObj.selector )[0];
+ }
+
+ if ( !related || related !== elem ) {
+ elems.push({ elem: elem, handleObj: handleObj, level: close.level });
+ }
+ }
+ }
+ }
+
+ for ( i = 0, l = elems.length; i < l; i++ ) {
+ match = elems[i];
+
+ if ( maxLevel && match.level > maxLevel ) {
+ break;
+ }
+
+ event.currentTarget = match.elem;
+ event.data = match.handleObj.data;
+ event.handleObj = match.handleObj;
+
+ ret = match.handleObj.origHandler.apply( match.elem, arguments );
+
+ if ( ret === false || event.isPropagationStopped() ) {
+ maxLevel = match.level;
+
+ if ( ret === false ) {
+ stop = false;
+ }
+ if ( event.isImmediatePropagationStopped() ) {
+ break;
+ }
+ }
+ }
+
+ return stop;
+}
+
+function liveConvert( type, selector ) {
+ return (type && type !== "*" ? type + "." : "") + selector.replace(rperiod, "`").replace(rspace, "&");
+}
+
+jQuery.each( ("blur focus focusin focusout load resize scroll unload click dblclick " +
+ "mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " +
+ "change select submit keydown keypress keyup error").split(" "), function( i, name ) {
+
+ // Handle event binding
+ jQuery.fn[ name ] = function( data, fn ) {
+ if ( fn == null ) {
+ fn = data;
+ data = null;
+ }
+
+ return arguments.length > 0 ?
+ this.bind( name, data, fn ) :
+ this.trigger( name );
+ };
+
+ if ( jQuery.attrFn ) {
+ jQuery.attrFn[ name ] = true;
+ }
+});
+
+
+/*!
+ * Sizzle CSS Selector Engine
+ * Copyright 2011, The Dojo Foundation
+ * Released under the MIT, BSD, and GPL Licenses.
+ * More information: http://sizzlejs.com/
+ */
+(function(){
+
+var chunker = /((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,
+ done = 0,
+ toString = Object.prototype.toString,
+ hasDuplicate = false,
+ baseHasDuplicate = true,
+ rBackslash = /\\/g,
+ rNonWord = /\W/;
+
+// Here we check if the JavaScript engine is using some sort of
+// optimization where it does not always call our comparision
+// function. If that is the case, discard the hasDuplicate value.
+// Thus far that includes Google Chrome.
+[0, 0].sort(function() {
+ baseHasDuplicate = false;
+ return 0;
+});
+
+var Sizzle = function( selector, context, results, seed ) {
+ results = results || [];
+ context = context || document;
+
+ var origContext = context;
+
+ if ( context.nodeType !== 1 && context.nodeType !== 9 ) {
+ return [];
+ }
+
+ if ( !selector || typeof selector !== "string" ) {
+ return results;
+ }
+
+ var m, set, checkSet, extra, ret, cur, pop, i,
+ prune = true,
+ contextXML = Sizzle.isXML( context ),
+ parts = [],
+ soFar = selector;
+
+ // Reset the position of the chunker regexp (start from head)
+ do {
+ chunker.exec( "" );
+ m = chunker.exec( soFar );
+
+ if ( m ) {
+ soFar = m[3];
+
+ parts.push( m[1] );
+
+ if ( m[2] ) {
+ extra = m[3];
+ break;
+ }
+ }
+ } while ( m );
+
+ if ( parts.length > 1 && origPOS.exec( selector ) ) {
+
+ if ( parts.length === 2 && Expr.relative[ parts[0] ] ) {
+ set = posProcess( parts[0] + parts[1], context );
+
+ } else {
+ set = Expr.relative[ parts[0] ] ?
+ [ context ] :
+ Sizzle( parts.shift(), context );
+
+ while ( parts.length ) {
+ selector = parts.shift();
+
+ if ( Expr.relative[ selector ] ) {
+ selector += parts.shift();
+ }
+
+ set = posProcess( selector, set );
+ }
+ }
+
+ } else {
+ // Take a shortcut and set the context if the root selector is an ID
+ // (but not if it'll be faster if the inner selector is an ID)
+ if ( !seed && parts.length > 1 && context.nodeType === 9 && !contextXML &&
+ Expr.match.ID.test(parts[0]) && !Expr.match.ID.test(parts[parts.length - 1]) ) {
+
+ ret = Sizzle.find( parts.shift(), context, contextXML );
+ context = ret.expr ?
+ Sizzle.filter( ret.expr, ret.set )[0] :
+ ret.set[0];
+ }
+
+ if ( context ) {
+ ret = seed ?
+ { expr: parts.pop(), set: makeArray(seed) } :
+ Sizzle.find( parts.pop(), parts.length === 1 && (parts[0] === "~" || parts[0] === "+") && context.parentNode ? context.parentNode : context, contextXML );
+
+ set = ret.expr ?
+ Sizzle.filter( ret.expr, ret.set ) :
+ ret.set;
+
+ if ( parts.length > 0 ) {
+ checkSet = makeArray( set );
+
+ } else {
+ prune = false;
+ }
+
+ while ( parts.length ) {
+ cur = parts.pop();
+ pop = cur;
+
+ if ( !Expr.relative[ cur ] ) {
+ cur = "";
+ } else {
+ pop = parts.pop();
+ }
+
+ if ( pop == null ) {
+ pop = context;
+ }
+
+ Expr.relative[ cur ]( checkSet, pop, contextXML );
+ }
+
+ } else {
+ checkSet = parts = [];
+ }
+ }
+
+ if ( !checkSet ) {
+ checkSet = set;
+ }
+
+ if ( !checkSet ) {
+ Sizzle.error( cur || selector );
+ }
+
+ if ( toString.call(checkSet) === "[object Array]" ) {
+ if ( !prune ) {
+ results.push.apply( results, checkSet );
+
+ } else if ( context && context.nodeType === 1 ) {
+ for ( i = 0; checkSet[i] != null; i++ ) {
+ if ( checkSet[i] && (checkSet[i] === true || checkSet[i].nodeType === 1 && Sizzle.contains(context, checkSet[i])) ) {
+ results.push( set[i] );
+ }
+ }
+
+ } else {
+ for ( i = 0; checkSet[i] != null; i++ ) {
+ if ( checkSet[i] && checkSet[i].nodeType === 1 ) {
+ results.push( set[i] );
+ }
+ }
+ }
+
+ } else {
+ makeArray( checkSet, results );
+ }
+
+ if ( extra ) {
+ Sizzle( extra, origContext, results, seed );
+ Sizzle.uniqueSort( results );
+ }
+
+ return results;
+};
+
+Sizzle.uniqueSort = function( results ) {
+ if ( sortOrder ) {
+ hasDuplicate = baseHasDuplicate;
+ results.sort( sortOrder );
+
+ if ( hasDuplicate ) {
+ for ( var i = 1; i < results.length; i++ ) {
+ if ( results[i] === results[ i - 1 ] ) {
+ results.splice( i--, 1 );
+ }
+ }
+ }
+ }
+
+ return results;
+};
+
+Sizzle.matches = function( expr, set ) {
+ return Sizzle( expr, null, null, set );
+};
+
+Sizzle.matchesSelector = function( node, expr ) {
+ return Sizzle( expr, null, null, [node] ).length > 0;
+};
+
+Sizzle.find = function( expr, context, isXML ) {
+ var set;
+
+ if ( !expr ) {
+ return [];
+ }
+
+ for ( var i = 0, l = Expr.order.length; i < l; i++ ) {
+ var match,
+ type = Expr.order[i];
+
+ if ( (match = Expr.leftMatch[ type ].exec( expr )) ) {
+ var left = match[1];
+ match.splice( 1, 1 );
+
+ if ( left.substr( left.length - 1 ) !== "\\" ) {
+ match[1] = (match[1] || "").replace( rBackslash, "" );
+ set = Expr.find[ type ]( match, context, isXML );
+
+ if ( set != null ) {
+ expr = expr.replace( Expr.match[ type ], "" );
+ break;
+ }
+ }
+ }
+ }
+
+ if ( !set ) {
+ set = typeof context.getElementsByTagName !== "undefined" ?
+ context.getElementsByTagName( "*" ) :
+ [];
+ }
+
+ return { set: set, expr: expr };
+};
+
+Sizzle.filter = function( expr, set, inplace, not ) {
+ var match, anyFound,
+ old = expr,
+ result = [],
+ curLoop = set,
+ isXMLFilter = set && set[0] && Sizzle.isXML( set[0] );
+
+ while ( expr && set.length ) {
+ for ( var type in Expr.filter ) {
+ if ( (match = Expr.leftMatch[ type ].exec( expr )) != null && match[2] ) {
+ var found, item,
+ filter = Expr.filter[ type ],
+ left = match[1];
+
+ anyFound = false;
+
+ match.splice(1,1);
+
+ if ( left.substr( left.length - 1 ) === "\\" ) {
+ continue;
+ }
+
+ if ( curLoop === result ) {
+ result = [];
+ }
+
+ if ( Expr.preFilter[ type ] ) {
+ match = Expr.preFilter[ type ]( match, curLoop, inplace, result, not, isXMLFilter );
+
+ if ( !match ) {
+ anyFound = found = true;
+
+ } else if ( match === true ) {
+ continue;
+ }
+ }
+
+ if ( match ) {
+ for ( var i = 0; (item = curLoop[i]) != null; i++ ) {
+ if ( item ) {
+ found = filter( item, match, i, curLoop );
+ var pass = not ^ !!found;
+
+ if ( inplace && found != null ) {
+ if ( pass ) {
+ anyFound = true;
+
+ } else {
+ curLoop[i] = false;
+ }
+
+ } else if ( pass ) {
+ result.push( item );
+ anyFound = true;
+ }
+ }
+ }
+ }
+
+ if ( found !== undefined ) {
+ if ( !inplace ) {
+ curLoop = result;
+ }
+
+ expr = expr.replace( Expr.match[ type ], "" );
+
+ if ( !anyFound ) {
+ return [];
+ }
+
+ break;
+ }
+ }
+ }
+
+ // Improper expression
+ if ( expr === old ) {
+ if ( anyFound == null ) {
+ Sizzle.error( expr );
+
+ } else {
+ break;
+ }
+ }
+
+ old = expr;
+ }
+
+ return curLoop;
+};
+
+Sizzle.error = function( msg ) {
+ throw "Syntax error, unrecognized expression: " + msg;
+};
+
+var Expr = Sizzle.selectors = {
+ order: [ "ID", "NAME", "TAG" ],
+
+ match: {
+ ID: /#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,
+ CLASS: /\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,
+ NAME: /\[name=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*\]/,
+ ATTR: /\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(?:(['"])(.*?)\3|(#?(?:[\w\u00c0-\uFFFF\-]|\\.)*)|)|)\s*\]/,
+ TAG: /^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/,
+ CHILD: /:(only|nth|last|first)-child(?:\(\s*(even|odd|(?:[+\-]?\d+|(?:[+\-]?\d*)?n\s*(?:[+\-]\s*\d+)?))\s*\))?/,
+ POS: /:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/,
+ PSEUDO: /:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/
+ },
+
+ leftMatch: {},
+
+ attrMap: {
+ "class": "className",
+ "for": "htmlFor"
+ },
+
+ attrHandle: {
+ href: function( elem ) {
+ return elem.getAttribute( "href" );
+ },
+ type: function( elem ) {
+ return elem.getAttribute( "type" );
+ }
+ },
+
+ relative: {
+ "+": function(checkSet, part){
+ var isPartStr = typeof part === "string",
+ isTag = isPartStr && !rNonWord.test( part ),
+ isPartStrNotTag = isPartStr && !isTag;
+
+ if ( isTag ) {
+ part = part.toLowerCase();
+ }
+
+ for ( var i = 0, l = checkSet.length, elem; i < l; i++ ) {
+ if ( (elem = checkSet[i]) ) {
+ while ( (elem = elem.previousSibling) && elem.nodeType !== 1 ) {}
+
+ checkSet[i] = isPartStrNotTag || elem && elem.nodeName.toLowerCase() === part ?
+ elem || false :
+ elem === part;
+ }
+ }
+
+ if ( isPartStrNotTag ) {
+ Sizzle.filter( part, checkSet, true );
+ }
+ },
+
+ ">": function( checkSet, part ) {
+ var elem,
+ isPartStr = typeof part === "string",
+ i = 0,
+ l = checkSet.length;
+
+ if ( isPartStr && !rNonWord.test( part ) ) {
+ part = part.toLowerCase();
+
+ for ( ; i < l; i++ ) {
+ elem = checkSet[i];
+
+ if ( elem ) {
+ var parent = elem.parentNode;
+ checkSet[i] = parent.nodeName.toLowerCase() === part ? parent : false;
+ }
+ }
+
+ } else {
+ for ( ; i < l; i++ ) {
+ elem = checkSet[i];
+
+ if ( elem ) {
+ checkSet[i] = isPartStr ?
+ elem.parentNode :
+ elem.parentNode === part;
+ }
+ }
+
+ if ( isPartStr ) {
+ Sizzle.filter( part, checkSet, true );
+ }
+ }
+ },
+
+ "": function(checkSet, part, isXML){
+ var nodeCheck,
+ doneName = done++,
+ checkFn = dirCheck;
+
+ if ( typeof part === "string" && !rNonWord.test( part ) ) {
+ part = part.toLowerCase();
+ nodeCheck = part;
+ checkFn = dirNodeCheck;
+ }
+
+ checkFn( "parentNode", part, doneName, checkSet, nodeCheck, isXML );
+ },
+
+ "~": function( checkSet, part, isXML ) {
+ var nodeCheck,
+ doneName = done++,
+ checkFn = dirCheck;
+
+ if ( typeof part === "string" && !rNonWord.test( part ) ) {
+ part = part.toLowerCase();
+ nodeCheck = part;
+ checkFn = dirNodeCheck;
+ }
+
+ checkFn( "previousSibling", part, doneName, checkSet, nodeCheck, isXML );
+ }
+ },
+
+ find: {
+ ID: function( match, context, isXML ) {
+ if ( typeof context.getElementById !== "undefined" && !isXML ) {
+ var m = context.getElementById(match[1]);
+ // Check parentNode to catch when Blackberry 4.6 returns
+ // nodes that are no longer in the document #6963
+ return m && m.parentNode ? [m] : [];
+ }
+ },
+
+ NAME: function( match, context ) {
+ if ( typeof context.getElementsByName !== "undefined" ) {
+ var ret = [],
+ results = context.getElementsByName( match[1] );
+
+ for ( var i = 0, l = results.length; i < l; i++ ) {
+ if ( results[i].getAttribute("name") === match[1] ) {
+ ret.push( results[i] );
+ }
+ }
+
+ return ret.length === 0 ? null : ret;
+ }
+ },
+
+ TAG: function( match, context ) {
+ if ( typeof context.getElementsByTagName !== "undefined" ) {
+ return context.getElementsByTagName( match[1] );
+ }
+ }
+ },
+ preFilter: {
+ CLASS: function( match, curLoop, inplace, result, not, isXML ) {
+ match = " " + match[1].replace( rBackslash, "" ) + " ";
+
+ if ( isXML ) {
+ return match;
+ }
+
+ for ( var i = 0, elem; (elem = curLoop[i]) != null; i++ ) {
+ if ( elem ) {
+ if ( not ^ (elem.className && (" " + elem.className + " ").replace(/[\t\n\r]/g, " ").indexOf(match) >= 0) ) {
+ if ( !inplace ) {
+ result.push( elem );
+ }
+
+ } else if ( inplace ) {
+ curLoop[i] = false;
+ }
+ }
+ }
+
+ return false;
+ },
+
+ ID: function( match ) {
+ return match[1].replace( rBackslash, "" );
+ },
+
+ TAG: function( match, curLoop ) {
+ return match[1].replace( rBackslash, "" ).toLowerCase();
+ },
+
+ CHILD: function( match ) {
+ if ( match[1] === "nth" ) {
+ if ( !match[2] ) {
+ Sizzle.error( match[0] );
+ }
+
+ match[2] = match[2].replace(/^\+|\s*/g, '');
+
+ // parse equations like 'even', 'odd', '5', '2n', '3n+2', '4n-1', '-n+6'
+ var test = /(-?)(\d*)(?:n([+\-]?\d*))?/.exec(
+ match[2] === "even" && "2n" || match[2] === "odd" && "2n+1" ||
+ !/\D/.test( match[2] ) && "0n+" + match[2] || match[2]);
+
+ // calculate the numbers (first)n+(last) including if they are negative
+ match[2] = (test[1] + (test[2] || 1)) - 0;
+ match[3] = test[3] - 0;
+ }
+ else if ( match[2] ) {
+ Sizzle.error( match[0] );
+ }
+
+ // TODO: Move to normal caching system
+ match[0] = done++;
+
+ return match;
+ },
+
+ ATTR: function( match, curLoop, inplace, result, not, isXML ) {
+ var name = match[1] = match[1].replace( rBackslash, "" );
+
+ if ( !isXML && Expr.attrMap[name] ) {
+ match[1] = Expr.attrMap[name];
+ }
+
+ // Handle if an un-quoted value was used
+ match[4] = ( match[4] || match[5] || "" ).replace( rBackslash, "" );
+
+ if ( match[2] === "~=" ) {
+ match[4] = " " + match[4] + " ";
+ }
+
+ return match;
+ },
+
+ PSEUDO: function( match, curLoop, inplace, result, not ) {
+ if ( match[1] === "not" ) {
+ // If we're dealing with a complex expression, or a simple one
+ if ( ( chunker.exec(match[3]) || "" ).length > 1 || /^\w/.test(match[3]) ) {
+ match[3] = Sizzle(match[3], null, null, curLoop);
+
+ } else {
+ var ret = Sizzle.filter(match[3], curLoop, inplace, true ^ not);
+
+ if ( !inplace ) {
+ result.push.apply( result, ret );
+ }
+
+ return false;
+ }
+
+ } else if ( Expr.match.POS.test( match[0] ) || Expr.match.CHILD.test( match[0] ) ) {
+ return true;
+ }
+
+ return match;
+ },
+
+ POS: function( match ) {
+ match.unshift( true );
+
+ return match;
+ }
+ },
+
+ filters: {
+ enabled: function( elem ) {
+ return elem.disabled === false && elem.type !== "hidden";
+ },
+
+ disabled: function( elem ) {
+ return elem.disabled === true;
+ },
+
+ checked: function( elem ) {
+ return elem.checked === true;
+ },
+
+ selected: function( elem ) {
+ // Accessing this property makes selected-by-default
+ // options in Safari work properly
+ if ( elem.parentNode ) {
+ elem.parentNode.selectedIndex;
+ }
+
+ return elem.selected === true;
+ },
+
+ parent: function( elem ) {
+ return !!elem.firstChild;
+ },
+
+ empty: function( elem ) {
+ return !elem.firstChild;
+ },
+
+ has: function( elem, i, match ) {
+ return !!Sizzle( match[3], elem ).length;
+ },
+
+ header: function( elem ) {
+ return (/h\d/i).test( elem.nodeName );
+ },
+
+ text: function( elem ) {
+ var attr = elem.getAttribute( "type" ), type = elem.type;
+ // IE6 and 7 will map elem.type to 'text' for new HTML5 types (search, etc)
+ // use getAttribute instead to test this case
+ return "text" === type && ( attr === type || attr === null );
+ },
+
+ radio: function( elem ) {
+ return "radio" === elem.type;
+ },
+
+ checkbox: function( elem ) {
+ return "checkbox" === elem.type;
+ },
+
+ file: function( elem ) {
+ return "file" === elem.type;
+ },
+ password: function( elem ) {
+ return "password" === elem.type;
+ },
+
+ submit: function( elem ) {
+ return "submit" === elem.type;
+ },
+
+ image: function( elem ) {
+ return "image" === elem.type;
+ },
+
+ reset: function( elem ) {
+ return "reset" === elem.type;
+ },
+
+ button: function( elem ) {
+ return "button" === elem.type || elem.nodeName.toLowerCase() === "button";
+ },
+
+ input: function( elem ) {
+ return (/input|select|textarea|button/i).test( elem.nodeName );
+ }
+ },
+ setFilters: {
+ first: function( elem, i ) {
+ return i === 0;
+ },
+
+ last: function( elem, i, match, array ) {
+ return i === array.length - 1;
+ },
+
+ even: function( elem, i ) {
+ return i % 2 === 0;
+ },
+
+ odd: function( elem, i ) {
+ return i % 2 === 1;
+ },
+
+ lt: function( elem, i, match ) {
+ return i < match[3] - 0;
+ },
+
+ gt: function( elem, i, match ) {
+ return i > match[3] - 0;
+ },
+
+ nth: function( elem, i, match ) {
+ return match[3] - 0 === i;
+ },
+
+ eq: function( elem, i, match ) {
+ return match[3] - 0 === i;
+ }
+ },
+ filter: {
+ PSEUDO: function( elem, match, i, array ) {
+ var name = match[1],
+ filter = Expr.filters[ name ];
+
+ if ( filter ) {
+ return filter( elem, i, match, array );
+
+ } else if ( name === "contains" ) {
+ return (elem.textContent || elem.innerText || Sizzle.getText([ elem ]) || "").indexOf(match[3]) >= 0;
+
+ } else if ( name === "not" ) {
+ var not = match[3];
+
+ for ( var j = 0, l = not.length; j < l; j++ ) {
+ if ( not[j] === elem ) {
+ return false;
+ }
+ }
+
+ return true;
+
+ } else {
+ Sizzle.error( name );
+ }
+ },
+
+ CHILD: function( elem, match ) {
+ var type = match[1],
+ node = elem;
+
+ switch ( type ) {
+ case "only":
+ case "first":
+ while ( (node = node.previousSibling) ) {
+ if ( node.nodeType === 1 ) {
+ return false;
+ }
+ }
+
+ if ( type === "first" ) {
+ return true;
+ }
+
+ node = elem;
+
+ case "last":
+ while ( (node = node.nextSibling) ) {
+ if ( node.nodeType === 1 ) {
+ return false;
+ }
+ }
+
+ return true;
+
+ case "nth":
+ var first = match[2],
+ last = match[3];
+
+ if ( first === 1 && last === 0 ) {
+ return true;
+ }
+
+ var doneName = match[0],
+ parent = elem.parentNode;
+
+ if ( parent && (parent.sizcache !== doneName || !elem.nodeIndex) ) {
+ var count = 0;
+
+ for ( node = parent.firstChild; node; node = node.nextSibling ) {
+ if ( node.nodeType === 1 ) {
+ node.nodeIndex = ++count;
+ }
+ }
+
+ parent.sizcache = doneName;
+ }
+
+ var diff = elem.nodeIndex - last;
+
+ if ( first === 0 ) {
+ return diff === 0;
+
+ } else {
+ return ( diff % first === 0 && diff / first >= 0 );
+ }
+ }
+ },
+
+ ID: function( elem, match ) {
+ return elem.nodeType === 1 && elem.getAttribute("id") === match;
+ },
+
+ TAG: function( elem, match ) {
+ return (match === "*" && elem.nodeType === 1) || elem.nodeName.toLowerCase() === match;
+ },
+
+ CLASS: function( elem, match ) {
+ return (" " + (elem.className || elem.getAttribute("class")) + " ")
+ .indexOf( match ) > -1;
+ },
+
+ ATTR: function( elem, match ) {
+ var name = match[1],
+ result = Expr.attrHandle[ name ] ?
+ Expr.attrHandle[ name ]( elem ) :
+ elem[ name ] != null ?
+ elem[ name ] :
+ elem.getAttribute( name ),
+ value = result + "",
+ type = match[2],
+ check = match[4];
+
+ return result == null ?
+ type === "!=" :
+ type === "=" ?
+ value === check :
+ type === "*=" ?
+ value.indexOf(check) >= 0 :
+ type === "~=" ?
+ (" " + value + " ").indexOf(check) >= 0 :
+ !check ?
+ value && result !== false :
+ type === "!=" ?
+ value !== check :
+ type === "^=" ?
+ value.indexOf(check) === 0 :
+ type === "$=" ?
+ value.substr(value.length - check.length) === check :
+ type === "|=" ?
+ value === check || value.substr(0, check.length + 1) === check + "-" :
+ false;
+ },
+
+ POS: function( elem, match, i, array ) {
+ var name = match[2],
+ filter = Expr.setFilters[ name ];
+
+ if ( filter ) {
+ return filter( elem, i, match, array );
+ }
+ }
+ }
+};
+
+var origPOS = Expr.match.POS,
+ fescape = function(all, num){
+ return "\\" + (num - 0 + 1);
+ };
+
+for ( var type in Expr.match ) {
+ Expr.match[ type ] = new RegExp( Expr.match[ type ].source + (/(?![^\[]*\])(?![^\(]*\))/.source) );
+ Expr.leftMatch[ type ] = new RegExp( /(^(?:.|\r|\n)*?)/.source + Expr.match[ type ].source.replace(/\\(\d+)/g, fescape) );
+}
+
+var makeArray = function( array, results ) {
+ array = Array.prototype.slice.call( array, 0 );
+
+ if ( results ) {
+ results.push.apply( results, array );
+ return results;
+ }
+
+ return array;
+};
+
+// Perform a simple check to determine if the browser is capable of
+// converting a NodeList to an array using builtin methods.
+// Also verifies that the returned array holds DOM nodes
+// (which is not the case in the Blackberry browser)
+try {
+ Array.prototype.slice.call( document.documentElement.childNodes, 0 )[0].nodeType;
+
+// Provide a fallback method if it does not work
+} catch( e ) {
+ makeArray = function( array, results ) {
+ var i = 0,
+ ret = results || [];
+
+ if ( toString.call(array) === "[object Array]" ) {
+ Array.prototype.push.apply( ret, array );
+
+ } else {
+ if ( typeof array.length === "number" ) {
+ for ( var l = array.length; i < l; i++ ) {
+ ret.push( array[i] );
+ }
+
+ } else {
+ for ( ; array[i]; i++ ) {
+ ret.push( array[i] );
+ }
+ }
+ }
+
+ return ret;
+ };
+}
+
+var sortOrder, siblingCheck;
+
+if ( document.documentElement.compareDocumentPosition ) {
+ sortOrder = function( a, b ) {
+ if ( a === b ) {
+ hasDuplicate = true;
+ return 0;
+ }
+
+ if ( !a.compareDocumentPosition || !b.compareDocumentPosition ) {
+ return a.compareDocumentPosition ? -1 : 1;
+ }
+
+ return a.compareDocumentPosition(b) & 4 ? -1 : 1;
+ };
+
+} else {
+ sortOrder = function( a, b ) {
+ var al, bl,
+ ap = [],
+ bp = [],
+ aup = a.parentNode,
+ bup = b.parentNode,
+ cur = aup;
+
+ // The nodes are identical, we can exit early
+ if ( a === b ) {
+ hasDuplicate = true;
+ return 0;
+
+ // If the nodes are siblings (or identical) we can do a quick check
+ } else if ( aup === bup ) {
+ return siblingCheck( a, b );
+
+ // If no parents were found then the nodes are disconnected
+ } else if ( !aup ) {
+ return -1;
+
+ } else if ( !bup ) {
+ return 1;
+ }
+
+ // Otherwise they're somewhere else in the tree so we need
+ // to build up a full list of the parentNodes for comparison
+ while ( cur ) {
+ ap.unshift( cur );
+ cur = cur.parentNode;
+ }
+
+ cur = bup;
+
+ while ( cur ) {
+ bp.unshift( cur );
+ cur = cur.parentNode;
+ }
+
+ al = ap.length;
+ bl = bp.length;
+
+ // Start walking down the tree looking for a discrepancy
+ for ( var i = 0; i < al && i < bl; i++ ) {
+ if ( ap[i] !== bp[i] ) {
+ return siblingCheck( ap[i], bp[i] );
+ }
+ }
+
+ // We ended someplace up the tree so do a sibling check
+ return i === al ?
+ siblingCheck( a, bp[i], -1 ) :
+ siblingCheck( ap[i], b, 1 );
+ };
+
+ siblingCheck = function( a, b, ret ) {
+ if ( a === b ) {
+ return ret;
+ }
+
+ var cur = a.nextSibling;
+
+ while ( cur ) {
+ if ( cur === b ) {
+ return -1;
+ }
+
+ cur = cur.nextSibling;
+ }
+
+ return 1;
+ };
+}
+
+// Utility function for retreiving the text value of an array of DOM nodes
+Sizzle.getText = function( elems ) {
+ var ret = "", elem;
+
+ for ( var i = 0; elems[i]; i++ ) {
+ elem = elems[i];
+
+ // Get the text from text nodes and CDATA nodes
+ if ( elem.nodeType === 3 || elem.nodeType === 4 ) {
+ ret += elem.nodeValue;
+
+ // Traverse everything else, except comment nodes
+ } else if ( elem.nodeType !== 8 ) {
+ ret += Sizzle.getText( elem.childNodes );
+ }
+ }
+
+ return ret;
+};
+
+// Check to see if the browser returns elements by name when
+// querying by getElementById (and provide a workaround)
+(function(){
+ // We're going to inject a fake input element with a specified name
+ var form = document.createElement("div"),
+ id = "script" + (new Date()).getTime(),
+ root = document.documentElement;
+
+ form.innerHTML = "<a name='" + id + "'/>";
+
+ // Inject it into the root element, check its status, and remove it quickly
+ root.insertBefore( form, root.firstChild );
+
+ // The workaround has to do additional checks after a getElementById
+ // Which slows things down for other browsers (hence the branching)
+ if ( document.getElementById( id ) ) {
+ Expr.find.ID = function( match, context, isXML ) {
+ if ( typeof context.getElementById !== "undefined" && !isXML ) {
+ var m = context.getElementById(match[1]);
+
+ return m ?
+ m.id === match[1] || typeof m.getAttributeNode !== "undefined" && m.getAttributeNode("id").nodeValue === match[1] ?
+ [m] :
+ undefined :
+ [];
+ }
+ };
+
+ Expr.filter.ID = function( elem, match ) {
+ var node = typeof elem.getAttributeNode !== "undefined" && elem.getAttributeNode("id");
+
+ return elem.nodeType === 1 && node && node.nodeValue === match;
+ };
+ }
+
+ root.removeChild( form );
+
+ // release memory in IE
+ root = form = null;
+})();
+
+(function(){
+ // Check to see if the browser returns only elements
+ // when doing getElementsByTagName("*")
+
+ // Create a fake element
+ var div = document.createElement("div");
+ div.appendChild( document.createComment("") );
+
+ // Make sure no comments are found
+ if ( div.getElementsByTagName("*").length > 0 ) {
+ Expr.find.TAG = function( match, context ) {
+ var results = context.getElementsByTagName( match[1] );
+
+ // Filter out possible comments
+ if ( match[1] === "*" ) {
+ var tmp = [];
+
+ for ( var i = 0; results[i]; i++ ) {
+ if ( results[i].nodeType === 1 ) {
+ tmp.push( results[i] );
+ }
+ }
+
+ results = tmp;
+ }
+
+ return results;
+ };
+ }
+
+ // Check to see if an attribute returns normalized href attributes
+ div.innerHTML = "<a href='#'></a>";
+
+ if ( div.firstChild && typeof div.firstChild.getAttribute !== "undefined" &&
+ div.firstChild.getAttribute("href") !== "#" ) {
+
+ Expr.attrHandle.href = function( elem ) {
+ return elem.getAttribute( "href", 2 );
+ };
+ }
+
+ // release memory in IE
+ div = null;
+})();
+
+if ( document.querySelectorAll ) {
+ (function(){
+ var oldSizzle = Sizzle,
+ div = document.createElement("div"),
+ id = "__sizzle__";
+
+ div.innerHTML = "<p class='TEST'></p>";
+
+ // Safari can't handle uppercase or unicode characters when
+ // in quirks mode.
+ if ( div.querySelectorAll && div.querySelectorAll(".TEST").length === 0 ) {
+ return;
+ }
+
+ Sizzle = function( query, context, extra, seed ) {
+ context = context || document;
+
+ // Only use querySelectorAll on non-XML documents
+ // (ID selectors don't work in non-HTML documents)
+ if ( !seed && !Sizzle.isXML(context) ) {
+ // See if we find a selector to speed up
+ var match = /^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec( query );
+
+ if ( match && (context.nodeType === 1 || context.nodeType === 9) ) {
+ // Speed-up: Sizzle("TAG")
+ if ( match[1] ) {
+ return makeArray( context.getElementsByTagName( query ), extra );
+
+ // Speed-up: Sizzle(".CLASS")
+ } else if ( match[2] && Expr.find.CLASS && context.getElementsByClassName ) {
+ return makeArray( context.getElementsByClassName( match[2] ), extra );
+ }
+ }
+
+ if ( context.nodeType === 9 ) {
+ // Speed-up: Sizzle("body")
+ // The body element only exists once, optimize finding it
+ if ( query === "body" && context.body ) {
+ return makeArray( [ context.body ], extra );
+
+ // Speed-up: Sizzle("#ID")
+ } else if ( match && match[3] ) {
+ var elem = context.getElementById( match[3] );
+
+ // Check parentNode to catch when Blackberry 4.6 returns
+ // nodes that are no longer in the document #6963
+ if ( elem && elem.parentNode ) {
+ // Handle the case where IE and Opera return items
+ // by name instead of ID
+ if ( elem.id === match[3] ) {
+ return makeArray( [ elem ], extra );
+ }
+
+ } else {
+ return makeArray( [], extra );
+ }
+ }
+
+ try {
+ return makeArray( context.querySelectorAll(query), extra );
+ } catch(qsaError) {}
+
+ // qSA works strangely on Element-rooted queries
+ // We can work around this by specifying an extra ID on the root
+ // and working up from there (Thanks to Andrew Dupont for the technique)
+ // IE 8 doesn't work on object elements
+ } else if ( context.nodeType === 1 && context.nodeName.toLowerCase() !== "object" ) {
+ var oldContext = context,
+ old = context.getAttribute( "id" ),
+ nid = old || id,
+ hasParent = context.parentNode,
+ relativeHierarchySelector = /^\s*[+~]/.test( query );
+
+ if ( !old ) {
+ context.setAttribute( "id", nid );
+ } else {
+ nid = nid.replace( /'/g, "\\$&" );
+ }
+ if ( relativeHierarchySelector && hasParent ) {
+ context = context.parentNode;
+ }
+
+ try {
+ if ( !relativeHierarchySelector || hasParent ) {
+ return makeArray( context.querySelectorAll( "[id='" + nid + "'] " + query ), extra );
+ }
+
+ } catch(pseudoError) {
+ } finally {
+ if ( !old ) {
+ oldContext.removeAttribute( "id" );
+ }
+ }
+ }
+ }
+
+ return oldSizzle(query, context, extra, seed);
+ };
+
+ for ( var prop in oldSizzle ) {
+ Sizzle[ prop ] = oldSizzle[ prop ];
+ }
+
+ // release memory in IE
+ div = null;
+ })();
+}
+
+(function(){
+ var html = document.documentElement,
+ matches = html.matchesSelector || html.mozMatchesSelector || html.webkitMatchesSelector || html.msMatchesSelector;
+
+ if ( matches ) {
+ // Check to see if it's possible to do matchesSelector
+ // on a disconnected node (IE 9 fails this)
+ var disconnectedMatch = !matches.call( document.createElement( "div" ), "div" ),
+ pseudoWorks = false;
+
+ try {
+ // This should fail with an exception
+ // Gecko does not error, returns false instead
+ matches.call( document.documentElement, "[test!='']:sizzle" );
+
+ } catch( pseudoError ) {
+ pseudoWorks = true;
+ }
+
+ Sizzle.matchesSelector = function( node, expr ) {
+ // Make sure that attribute selectors are quoted
+ expr = expr.replace(/\=\s*([^'"\]]*)\s*\]/g, "='$1']");
+
+ if ( !Sizzle.isXML( node ) ) {
+ try {
+ if ( pseudoWorks || !Expr.match.PSEUDO.test( expr ) && !/!=/.test( expr ) ) {
+ var ret = matches.call( node, expr );
+
+ // IE 9's matchesSelector returns false on disconnected nodes
+ if ( ret || !disconnectedMatch ||
+ // As well, disconnected nodes are said to be in a document
+ // fragment in IE 9, so check for that
+ node.document && node.document.nodeType !== 11 ) {
+ return ret;
+ }
+ }
+ } catch(e) {}
+ }
+
+ return Sizzle(expr, null, null, [node]).length > 0;
+ };
+ }
+})();
+
+(function(){
+ var div = document.createElement("div");
+
+ div.innerHTML = "<div class='test e'></div><div class='test'></div>";
+
+ // Opera can't find a second classname (in 9.6)
+ // Also, make sure that getElementsByClassName actually exists
+ if ( !div.getElementsByClassName || div.getElementsByClassName("e").length === 0 ) {
+ return;
+ }
+
+ // Safari caches class attributes, doesn't catch changes (in 3.2)
+ div.lastChild.className = "e";
+
+ if ( div.getElementsByClassName("e").length === 1 ) {
+ return;
+ }
+
+ Expr.order.splice(1, 0, "CLASS");
+ Expr.find.CLASS = function( match, context, isXML ) {
+ if ( typeof context.getElementsByClassName !== "undefined" && !isXML ) {
+ return context.getElementsByClassName(match[1]);
+ }
+ };
+
+ // release memory in IE
+ div = null;
+})();
+
+function dirNodeCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {
+ for ( var i = 0, l = checkSet.length; i < l; i++ ) {
+ var elem = checkSet[i];
+
+ if ( elem ) {
+ var match = false;
+
+ elem = elem[dir];
+
+ while ( elem ) {
+ if ( elem.sizcache === doneName ) {
+ match = checkSet[elem.sizset];
+ break;
+ }
+
+ if ( elem.nodeType === 1 && !isXML ){
+ elem.sizcache = doneName;
+ elem.sizset = i;
+ }
+
+ if ( elem.nodeName.toLowerCase() === cur ) {
+ match = elem;
+ break;
+ }
+
+ elem = elem[dir];
+ }
+
+ checkSet[i] = match;
+ }
+ }
+}
+
+function dirCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {
+ for ( var i = 0, l = checkSet.length; i < l; i++ ) {
+ var elem = checkSet[i];
+
+ if ( elem ) {
+ var match = false;
+
+ elem = elem[dir];
+
+ while ( elem ) {
+ if ( elem.sizcache === doneName ) {
+ match = checkSet[elem.sizset];
+ break;
+ }
+
+ if ( elem.nodeType === 1 ) {
+ if ( !isXML ) {
+ elem.sizcache = doneName;
+ elem.sizset = i;
+ }
+
+ if ( typeof cur !== "string" ) {
+ if ( elem === cur ) {
+ match = true;
+ break;
+ }
+
+ } else if ( Sizzle.filter( cur, [elem] ).length > 0 ) {
+ match = elem;
+ break;
+ }
+ }
+
+ elem = elem[dir];
+ }
+
+ checkSet[i] = match;
+ }
+ }
+}
+
+if ( document.documentElement.contains ) {
+ Sizzle.contains = function( a, b ) {
+ return a !== b && (a.contains ? a.contains(b) : true);
+ };
+
+} else if ( document.documentElement.compareDocumentPosition ) {
+ Sizzle.contains = function( a, b ) {
+ return !!(a.compareDocumentPosition(b) & 16);
+ };
+
+} else {
+ Sizzle.contains = function() {
+ return false;
+ };
+}
+
+Sizzle.isXML = function( elem ) {
+ // documentElement is verified for cases where it doesn't yet exist
+ // (such as loading iframes in IE - #4833)
+ var documentElement = (elem ? elem.ownerDocument || elem : 0).documentElement;
+
+ return documentElement ? documentElement.nodeName !== "HTML" : false;
+};
+
+var posProcess = function( selector, context ) {
+ var match,
+ tmpSet = [],
+ later = "",
+ root = context.nodeType ? [context] : context;
+
+ // Position selectors must be done after the filter
+ // And so must :not(positional) so we move all PSEUDOs to the end
+ while ( (match = Expr.match.PSEUDO.exec( selector )) ) {
+ later += match[0];
+ selector = selector.replace( Expr.match.PSEUDO, "" );
+ }
+
+ selector = Expr.relative[selector] ? selector + "*" : selector;
+
+ for ( var i = 0, l = root.length; i < l; i++ ) {
+ Sizzle( selector, root[i], tmpSet );
+ }
+
+ return Sizzle.filter( later, tmpSet );
+};
+
+// EXPOSE
+jQuery.find = Sizzle;
+jQuery.expr = Sizzle.selectors;
+jQuery.expr[":"] = jQuery.expr.filters;
+jQuery.unique = Sizzle.uniqueSort;
+jQuery.text = Sizzle.getText;
+jQuery.isXMLDoc = Sizzle.isXML;
+jQuery.contains = Sizzle.contains;
+
+
+})();
+
+
+var runtil = /Until$/,
+ rparentsprev = /^(?:parents|prevUntil|prevAll)/,
+ // Note: This RegExp should be improved, or likely pulled from Sizzle
+ rmultiselector = /,/,
+ isSimple = /^.[^:#\[\.,]*$/,
+ slice = Array.prototype.slice,
+ POS = jQuery.expr.match.POS,
+ // methods guaranteed to produce a unique set when starting from a unique set
+ guaranteedUnique = {
+ children: true,
+ contents: true,
+ next: true,
+ prev: true
+ };
+
+jQuery.fn.extend({
+ find: function( selector ) {
+ var ret = this.pushStack( "", "find", selector ),
+ length = 0;
+
+ for ( var i = 0, l = this.length; i < l; i++ ) {
+ length = ret.length;
+ jQuery.find( selector, this[i], ret );
+
+ if ( i > 0 ) {
+ // Make sure that the results are unique
+ for ( var n = length; n < ret.length; n++ ) {
+ for ( var r = 0; r < length; r++ ) {
+ if ( ret[r] === ret[n] ) {
+ ret.splice(n--, 1);
+ break;
+ }
+ }
+ }
+ }
+ }
+
+ return ret;
+ },
+
+ has: function( target ) {
+ var targets = jQuery( target );
+ return this.filter(function() {
+ for ( var i = 0, l = targets.length; i < l; i++ ) {
+ if ( jQuery.contains( this, targets[i] ) ) {
+ return true;
+ }
+ }
+ });
+ },
+
+ not: function( selector ) {
+ return this.pushStack( winnow(this, selector, false), "not", selector);
+ },
+
+ filter: function( selector ) {
+ return this.pushStack( winnow(this, selector, true), "filter", selector );
+ },
+
+ is: function( selector ) {
+ return !!selector && jQuery.filter( selector, this ).length > 0;
+ },
+
+ closest: function( selectors, context ) {
+ var ret = [], i, l, cur = this[0];
+
+ if ( jQuery.isArray( selectors ) ) {
+ var match, selector,
+ matches = {},
+ level = 1;
+
+ if ( cur && selectors.length ) {
+ for ( i = 0, l = selectors.length; i < l; i++ ) {
+ selector = selectors[i];
+
+ if ( !matches[selector] ) {
+ matches[selector] = jQuery.expr.match.POS.test( selector ) ?
+ jQuery( selector, context || this.context ) :
+ selector;
+ }
+ }
+
+ while ( cur && cur.ownerDocument && cur !== context ) {
+ for ( selector in matches ) {
+ match = matches[selector];
+
+ if ( match.jquery ? match.index(cur) > -1 : jQuery(cur).is(match) ) {
+ ret.push({ selector: selector, elem: cur, level: level });
+ }
+ }
+
+ cur = cur.parentNode;
+ level++;
+ }
+ }
+
+ return ret;
+ }
+
+ var pos = POS.test( selectors ) ?
+ jQuery( selectors, context || this.context ) : null;
+
+ for ( i = 0, l = this.length; i < l; i++ ) {
+ cur = this[i];
+
+ while ( cur ) {
+ if ( pos ? pos.index(cur) > -1 : jQuery.find.matchesSelector(cur, selectors) ) {
+ ret.push( cur );
+ break;
+
+ } else {
+ cur = cur.parentNode;
+ if ( !cur || !cur.ownerDocument || cur === context ) {
+ break;
+ }
+ }
+ }
+ }
+
+ ret = ret.length > 1 ? jQuery.unique(ret) : ret;
+
+ return this.pushStack( ret, "closest", selectors );
+ },
+
+ // Determine the position of an element within
+ // the matched set of elements
+ index: function( elem ) {
+ if ( !elem || typeof elem === "string" ) {
+ return jQuery.inArray( this[0],
+ // If it receives a string, the selector is used
+ // If it receives nothing, the siblings are used
+ elem ? jQuery( elem ) : this.parent().children() );
+ }
+ // Locate the position of the desired element
+ return jQuery.inArray(
+ // If it receives a jQuery object, the first element is used
+ elem.jquery ? elem[0] : elem, this );
+ },
+
+ add: function( selector, context ) {
+ var set = typeof selector === "string" ?
+ jQuery( selector, context ) :
+ jQuery.makeArray( selector ),
+ all = jQuery.merge( this.get(), set );
+
+ return this.pushStack( isDisconnected( set[0] ) || isDisconnected( all[0] ) ?
+ all :
+ jQuery.unique( all ) );
+ },
+
+ andSelf: function() {
+ return this.add( this.prevObject );
+ }
+});
+
+// A painfully simple check to see if an element is disconnected
+// from a document (should be improved, where feasible).
+function isDisconnected( node ) {
+ return !node || !node.parentNode || node.parentNode.nodeType === 11;
+}
+
+jQuery.each({
+ parent: function( elem ) {
+ var parent = elem.parentNode;
+ return parent && parent.nodeType !== 11 ? parent : null;
+ },
+ parents: function( elem ) {
+ return jQuery.dir( elem, "parentNode" );
+ },
+ parentsUntil: function( elem, i, until ) {
+ return jQuery.dir( elem, "parentNode", until );
+ },
+ next: function( elem ) {
+ return jQuery.nth( elem, 2, "nextSibling" );
+ },
+ prev: function( elem ) {
+ return jQuery.nth( elem, 2, "previousSibling" );
+ },
+ nextAll: function( elem ) {
+ return jQuery.dir( elem, "nextSibling" );
+ },
+ prevAll: function( elem ) {
+ return jQuery.dir( elem, "previousSibling" );
+ },
+ nextUntil: function( elem, i, until ) {
+ return jQuery.dir( elem, "nextSibling", until );
+ },
+ prevUntil: function( elem, i, until ) {
+ return jQuery.dir( elem, "previousSibling", until );
+ },
+ siblings: function( elem ) {
+ return jQuery.sibling( elem.parentNode.firstChild, elem );
+ },
+ children: function( elem ) {
+ return jQuery.sibling( elem.firstChild );
+ },
+ contents: function( elem ) {
+ return jQuery.nodeName( elem, "iframe" ) ?
+ elem.contentDocument || elem.contentWindow.document :
+ jQuery.makeArray( elem.childNodes );
+ }
+}, function( name, fn ) {
+ jQuery.fn[ name ] = function( until, selector ) {
+ var ret = jQuery.map( this, fn, until ),
+ // The variable 'args' was introduced in
+ // https://github.com/jquery/jquery/commit/52a0238
+ // to work around a bug in Chrome 10 (Dev) and should be removed when the bug is fixed.
+ // http://code.google.com/p/v8/issues/detail?id=1050
+ args = slice.call(arguments);
+
+ if ( !runtil.test( name ) ) {
+ selector = until;
+ }
+
+ if ( selector && typeof selector === "string" ) {
+ ret = jQuery.filter( selector, ret );
+ }
+
+ ret = this.length > 1 && !guaranteedUnique[ name ] ? jQuery.unique( ret ) : ret;
+
+ if ( (this.length > 1 || rmultiselector.test( selector )) && rparentsprev.test( name ) ) {
+ ret = ret.reverse();
+ }
+
+ return this.pushStack( ret, name, args.join(",") );
+ };
+});
+
+jQuery.extend({
+ filter: function( expr, elems, not ) {
+ if ( not ) {
+ expr = ":not(" + expr + ")";
+ }
+
+ return elems.length === 1 ?
+ jQuery.find.matchesSelector(elems[0], expr) ? [ elems[0] ] : [] :
+ jQuery.find.matches(expr, elems);
+ },
+
+ dir: function( elem, dir, until ) {
+ var matched = [],
+ cur = elem[ dir ];
+
+ while ( cur && cur.nodeType !== 9 && (until === undefined || cur.nodeType !== 1 || !jQuery( cur ).is( until )) ) {
+ if ( cur.nodeType === 1 ) {
+ matched.push( cur );
+ }
+ cur = cur[dir];
+ }
+ return matched;
+ },
+
+ nth: function( cur, result, dir, elem ) {
+ result = result || 1;
+ var num = 0;
+
+ for ( ; cur; cur = cur[dir] ) {
+ if ( cur.nodeType === 1 && ++num === result ) {
+ break;
+ }
+ }
+
+ return cur;
+ },
+
+ sibling: function( n, elem ) {
+ var r = [];
+
+ for ( ; n; n = n.nextSibling ) {
+ if ( n.nodeType === 1 && n !== elem ) {
+ r.push( n );
+ }
+ }
+
+ return r;
+ }
+});
+
+// Implement the identical functionality for filter and not
+function winnow( elements, qualifier, keep ) {
+ if ( jQuery.isFunction( qualifier ) ) {
+ return jQuery.grep(elements, function( elem, i ) {
+ var retVal = !!qualifier.call( elem, i, elem );
+ return retVal === keep;
+ });
+
+ } else if ( qualifier.nodeType ) {
+ return jQuery.grep(elements, function( elem, i ) {
+ return (elem === qualifier) === keep;
+ });
+
+ } else if ( typeof qualifier === "string" ) {
+ var filtered = jQuery.grep(elements, function( elem ) {
+ return elem.nodeType === 1;
+ });
+
+ if ( isSimple.test( qualifier ) ) {
+ return jQuery.filter(qualifier, filtered, !keep);
+ } else {
+ qualifier = jQuery.filter( qualifier, filtered );
+ }
+ }
+
+ return jQuery.grep(elements, function( elem, i ) {
+ return (jQuery.inArray( elem, qualifier ) >= 0) === keep;
+ });
+}
+
+
+
+
+var rinlinejQuery = / jQuery\d+="(?:\d+|null)"/g,
+ rleadingWhitespace = /^\s+/,
+ rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,
+ rtagName = /<([\w:]+)/,
+ rtbody = /<tbody/i,
+ rhtml = /<|&#?\w+;/,
+ rnocache = /<(?:script|object|embed|option|style)/i,
+ // checked="checked" or checked
+ rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i,
+ wrapMap = {
+ option: [ 1, "<select multiple='multiple'>", "</select>" ],
+ legend: [ 1, "<fieldset>", "</fieldset>" ],
+ thead: [ 1, "<table>", "</table>" ],
+ tr: [ 2, "<table><tbody>", "</tbody></table>" ],
+ td: [ 3, "<table><tbody><tr>", "</tr></tbody></table>" ],
+ col: [ 2, "<table><tbody></tbody><colgroup>", "</colgroup></table>" ],
+ area: [ 1, "<map>", "</map>" ],
+ _default: [ 0, "", "" ]
+ };
+
+wrapMap.optgroup = wrapMap.option;
+wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;
+wrapMap.th = wrapMap.td;
+
+// IE can't serialize <link> and <script> tags normally
+if ( !jQuery.support.htmlSerialize ) {
+ wrapMap._default = [ 1, "div<div>", "</div>" ];
+}
+
+jQuery.fn.extend({
+ text: function( text ) {
+ if ( jQuery.isFunction(text) ) {
+ return this.each(function(i) {
+ var self = jQuery( this );
+
+ self.text( text.call(this, i, self.text()) );
+ });
+ }
+
+ if ( typeof text !== "object" && text !== undefined ) {
+ return this.empty().append( (this[0] && this[0].ownerDocument || document).createTextNode( text ) );
+ }
+
+ return jQuery.text( this );
+ },
+
+ wrapAll: function( html ) {
+ if ( jQuery.isFunction( html ) ) {
+ return this.each(function(i) {
+ jQuery(this).wrapAll( html.call(this, i) );
+ });
+ }
+
+ if ( this[0] ) {
+ // The elements to wrap the target around
+ var wrap = jQuery( html, this[0].ownerDocument ).eq(0).clone(true);
+
+ if ( this[0].parentNode ) {
+ wrap.insertBefore( this[0] );
+ }
+
+ wrap.map(function() {
+ var elem = this;
+
+ while ( elem.firstChild && elem.firstChild.nodeType === 1 ) {
+ elem = elem.firstChild;
+ }
+
+ return elem;
+ }).append(this);
+ }
+
+ return this;
+ },
+
+ wrapInner: function( html ) {
+ if ( jQuery.isFunction( html ) ) {
+ return this.each(function(i) {
+ jQuery(this).wrapInner( html.call(this, i) );
+ });
+ }
+
+ return this.each(function() {
+ var self = jQuery( this ),
+ contents = self.contents();
+
+ if ( contents.length ) {
+ contents.wrapAll( html );
+
+ } else {
+ self.append( html );
+ }
+ });
+ },
+
+ wrap: function( html ) {
+ return this.each(function() {
+ jQuery( this ).wrapAll( html );
+ });
+ },
+
+ unwrap: function() {
+ return this.parent().each(function() {
+ if ( !jQuery.nodeName( this, "body" ) ) {
+ jQuery( this ).replaceWith( this.childNodes );
+ }
+ }).end();
+ },
+
+ append: function() {
+ return this.domManip(arguments, true, function( elem ) {
+ if ( this.nodeType === 1 ) {
+ this.appendChild( elem );
+ }
+ });
+ },
+
+ prepend: function() {
+ return this.domManip(arguments, true, function( elem ) {
+ if ( this.nodeType === 1 ) {
+ this.insertBefore( elem, this.firstChild );
+ }
+ });
+ },
+
+ before: function() {
+ if ( this[0] && this[0].parentNode ) {
+ return this.domManip(arguments, false, function( elem ) {
+ this.parentNode.insertBefore( elem, this );
+ });
+ } else if ( arguments.length ) {
+ var set = jQuery(arguments[0]);
+ set.push.apply( set, this.toArray() );
+ return this.pushStack( set, "before", arguments );
+ }
+ },
+
+ after: function() {
+ if ( this[0] && this[0].parentNode ) {
+ return this.domManip(arguments, false, function( elem ) {
+ this.parentNode.insertBefore( elem, this.nextSibling );
+ });
+ } else if ( arguments.length ) {
+ var set = this.pushStack( this, "after", arguments );
+ set.push.apply( set, jQuery(arguments[0]).toArray() );
+ return set;
+ }
+ },
+
+ // keepData is for internal use only--do not document
+ remove: function( selector, keepData ) {
+ for ( var i = 0, elem; (elem = this[i]) != null; i++ ) {
+ if ( !selector || jQuery.filter( selector, [ elem ] ).length ) {
+ if ( !keepData && elem.nodeType === 1 ) {
+ jQuery.cleanData( elem.getElementsByTagName("*") );
+ jQuery.cleanData( [ elem ] );
+ }
+
+ if ( elem.parentNode ) {
+ elem.parentNode.removeChild( elem );
+ }
+ }
+ }
+
+ return this;
+ },
+
+ empty: function() {
+ for ( var i = 0, elem; (elem = this[i]) != null; i++ ) {
+ // Remove element nodes and prevent memory leaks
+ if ( elem.nodeType === 1 ) {
+ jQuery.cleanData( elem.getElementsByTagName("*") );
+ }
+
+ // Remove any remaining nodes
+ while ( elem.firstChild ) {
+ elem.removeChild( elem.firstChild );
+ }
+ }
+
+ return this;
+ },
+
+ clone: function( dataAndEvents, deepDataAndEvents ) {
+ dataAndEvents = dataAndEvents == null ? false : dataAndEvents;
+ deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;
+
+ return this.map( function () {
+ return jQuery.clone( this, dataAndEvents, deepDataAndEvents );
+ });
+ },
+
+ html: function( value ) {
+ if ( value === undefined ) {
+ return this[0] && this[0].nodeType === 1 ?
+ this[0].innerHTML.replace(rinlinejQuery, "") :
+ null;
+
+ // See if we can take a shortcut and just use innerHTML
+ } else if ( typeof value === "string" && !rnocache.test( value ) &&
+ (jQuery.support.leadingWhitespace || !rleadingWhitespace.test( value )) &&
+ !wrapMap[ (rtagName.exec( value ) || ["", ""])[1].toLowerCase() ] ) {
+
+ value = value.replace(rxhtmlTag, "<$1></$2>");
+
+ try {
+ for ( var i = 0, l = this.length; i < l; i++ ) {
+ // Remove element nodes and prevent memory leaks
+ if ( this[i].nodeType === 1 ) {
+ jQuery.cleanData( this[i].getElementsByTagName("*") );
+ this[i].innerHTML = value;
+ }
+ }
+
+ // If using innerHTML throws an exception, use the fallback method
+ } catch(e) {
+ this.empty().append( value );
+ }
+
+ } else if ( jQuery.isFunction( value ) ) {
+ this.each(function(i){
+ var self = jQuery( this );
+
+ self.html( value.call(this, i, self.html()) );
+ });
+
+ } else {
+ this.empty().append( value );
+ }
+
+ return this;
+ },
+
+ replaceWith: function( value ) {
+ if ( this[0] && this[0].parentNode ) {
+ // Make sure that the elements are removed from the DOM before they are inserted
+ // this can help fix replacing a parent with child elements
+ if ( jQuery.isFunction( value ) ) {
+ return this.each(function(i) {
+ var self = jQuery(this), old = self.html();
+ self.replaceWith( value.call( this, i, old ) );
+ });
+ }
+
+ if ( typeof value !== "string" ) {
+ value = jQuery( value ).detach();
+ }
+
+ return this.each(function() {
+ var next = this.nextSibling,
+ parent = this.parentNode;
+
+ jQuery( this ).remove();
+
+ if ( next ) {
+ jQuery(next).before( value );
+ } else {
+ jQuery(parent).append( value );
+ }
+ });
+ } else {
+ return this.length ?
+ this.pushStack( jQuery(jQuery.isFunction(value) ? value() : value), "replaceWith", value ) :
+ this;
+ }
+ },
+
+ detach: function( selector ) {
+ return this.remove( selector, true );
+ },
+
+ domManip: function( args, table, callback ) {
+ var results, first, fragment, parent,
+ value = args[0],
+ scripts = [];
+
+ // We can't cloneNode fragments that contain checked, in WebKit
+ if ( !jQuery.support.checkClone && arguments.length === 3 && typeof value === "string" && rchecked.test( value ) ) {
+ return this.each(function() {
+ jQuery(this).domManip( args, table, callback, true );
+ });
+ }
+
+ if ( jQuery.isFunction(value) ) {
+ return this.each(function(i) {
+ var self = jQuery(this);
+ args[0] = value.call(this, i, table ? self.html() : undefined);
+ self.domManip( args, table, callback );
+ });
+ }
+
+ if ( this[0] ) {
+ parent = value && value.parentNode;
+
+ // If we're in a fragment, just use that instead of building a new one
+ if ( jQuery.support.parentNode && parent && parent.nodeType === 11 && parent.childNodes.length === this.length ) {
+ results = { fragment: parent };
+
+ } else {
+ results = jQuery.buildFragment( args, this, scripts );
+ }
+
+ fragment = results.fragment;
+
+ if ( fragment.childNodes.length === 1 ) {
+ first = fragment = fragment.firstChild;
+ } else {
+ first = fragment.firstChild;
+ }
+
+ if ( first ) {
+ table = table && jQuery.nodeName( first, "tr" );
+
+ for ( var i = 0, l = this.length, lastIndex = l - 1; i < l; i++ ) {
+ callback.call(
+ table ?
+ root(this[i], first) :
+ this[i],
+ // Make sure that we do not leak memory by inadvertently discarding
+ // the original fragment (which might have attached data) instead of
+ // using it; in addition, use the original fragment object for the last
+ // item instead of first because it can end up being emptied incorrectly
+ // in certain situations (Bug #8070).
+ // Fragments from the fragment cache must always be cloned and never used
+ // in place.
+ results.cacheable || (l > 1 && i < lastIndex) ?
+ jQuery.clone( fragment, true, true ) :
+ fragment
+ );
+ }
+ }
+
+ if ( scripts.length ) {
+ jQuery.each( scripts, evalScript );
+ }
+ }
+
+ return this;
+ }
+});
+
+function root( elem, cur ) {
+ return jQuery.nodeName(elem, "table") ?
+ (elem.getElementsByTagName("tbody")[0] ||
+ elem.appendChild(elem.ownerDocument.createElement("tbody"))) :
+ elem;
+}
+
+function cloneCopyEvent( src, dest ) {
+
+ if ( dest.nodeType !== 1 || !jQuery.hasData( src ) ) {
+ return;
+ }
+
+ var internalKey = jQuery.expando,
+ oldData = jQuery.data( src ),
+ curData = jQuery.data( dest, oldData );
+
+ // Switch to use the internal data object, if it exists, for the next
+ // stage of data copying
+ if ( (oldData = oldData[ internalKey ]) ) {
+ var events = oldData.events;
+ curData = curData[ internalKey ] = jQuery.extend({}, oldData);
+
+ if ( events ) {
+ delete curData.handle;
+ curData.events = {};
+
+ for ( var type in events ) {
+ for ( var i = 0, l = events[ type ].length; i < l; i++ ) {
+ jQuery.event.add( dest, type + ( events[ type ][ i ].namespace ? "." : "" ) + events[ type ][ i ].namespace, events[ type ][ i ], events[ type ][ i ].data );
+ }
+ }
+ }
+ }
+}
+
+function cloneFixAttributes(src, dest) {
+ // We do not need to do anything for non-Elements
+ if ( dest.nodeType !== 1 ) {
+ return;
+ }
+
+ var nodeName = dest.nodeName.toLowerCase();
+
+ // clearAttributes removes the attributes, which we don't want,
+ // but also removes the attachEvent events, which we *do* want
+ dest.clearAttributes();
+
+ // mergeAttributes, in contrast, only merges back on the
+ // original attributes, not the events
+ dest.mergeAttributes(src);
+
+ // IE6-8 fail to clone children inside object elements that use
+ // the proprietary classid attribute value (rather than the type
+ // attribute) to identify the type of content to display
+ if ( nodeName === "object" ) {
+ dest.outerHTML = src.outerHTML;
+
+ } else if ( nodeName === "input" && (src.type === "checkbox" || src.type === "radio") ) {
+ // IE6-8 fails to persist the checked state of a cloned checkbox
+ // or radio button. Worse, IE6-7 fail to give the cloned element
+ // a checked appearance if the defaultChecked value isn't also set
+ if ( src.checked ) {
+ dest.defaultChecked = dest.checked = src.checked;
+ }
+
+ // IE6-7 get confused and end up setting the value of a cloned
+ // checkbox/radio button to an empty string instead of "on"
+ if ( dest.value !== src.value ) {
+ dest.value = src.value;
+ }
+
+ // IE6-8 fails to return the selected option to the default selected
+ // state when cloning options
+ } else if ( nodeName === "option" ) {
+ dest.selected = src.defaultSelected;
+
+ // IE6-8 fails to set the defaultValue to the correct value when
+ // cloning other types of input fields
+ } else if ( nodeName === "input" || nodeName === "textarea" ) {
+ dest.defaultValue = src.defaultValue;
+ }
+
+ // Event data gets referenced instead of copied if the expando
+ // gets copied too
+ dest.removeAttribute( jQuery.expando );
+}
+
+jQuery.buildFragment = function( args, nodes, scripts ) {
+ var fragment, cacheable, cacheresults,
+ doc = (nodes && nodes[0] ? nodes[0].ownerDocument || nodes[0] : document);
+
+ // Only cache "small" (1/2 KB) HTML strings that are associated with the main document
+ // Cloning options loses the selected state, so don't cache them
+ // IE 6 doesn't like it when you put <object> or <embed> elements in a fragment
+ // Also, WebKit does not clone 'checked' attributes on cloneNode, so don't cache
+ if ( args.length === 1 && typeof args[0] === "string" && args[0].length < 512 && doc === document &&
+ args[0].charAt(0) === "<" && !rnocache.test( args[0] ) && (jQuery.support.checkClone || !rchecked.test( args[0] )) ) {
+
+ cacheable = true;
+ cacheresults = jQuery.fragments[ args[0] ];
+ if ( cacheresults ) {
+ if ( cacheresults !== 1 ) {
+ fragment = cacheresults;
+ }
+ }
+ }
+
+ if ( !fragment ) {
+ fragment = doc.createDocumentFragment();
+ jQuery.clean( args, doc, fragment, scripts );
+ }
+
+ if ( cacheable ) {
+ jQuery.fragments[ args[0] ] = cacheresults ? fragment : 1;
+ }
+
+ return { fragment: fragment, cacheable: cacheable };
+};
+
+jQuery.fragments = {};
+
+jQuery.each({
+ appendTo: "append",
+ prependTo: "prepend",
+ insertBefore: "before",
+ insertAfter: "after",
+ replaceAll: "replaceWith"
+}, function( name, original ) {
+ jQuery.fn[ name ] = function( selector ) {
+ var ret = [],
+ insert = jQuery( selector ),
+ parent = this.length === 1 && this[0].parentNode;
+
+ if ( parent && parent.nodeType === 11 && parent.childNodes.length === 1 && insert.length === 1 ) {
+ insert[ original ]( this[0] );
+ return this;
+
+ } else {
+ for ( var i = 0, l = insert.length; i < l; i++ ) {
+ var elems = (i > 0 ? this.clone(true) : this).get();
+ jQuery( insert[i] )[ original ]( elems );
+ ret = ret.concat( elems );
+ }
+
+ return this.pushStack( ret, name, insert.selector );
+ }
+ };
+});
+
+function getAll( elem ) {
+ if ( "getElementsByTagName" in elem ) {
+ return elem.getElementsByTagName( "*" );
+
+ } else if ( "querySelectorAll" in elem ) {
+ return elem.querySelectorAll( "*" );
+
+ } else {
+ return [];
+ }
+}
+
+jQuery.extend({
+ clone: function( elem, dataAndEvents, deepDataAndEvents ) {
+ var clone = elem.cloneNode(true),
+ srcElements,
+ destElements,
+ i;
+
+ if ( (!jQuery.support.noCloneEvent || !jQuery.support.noCloneChecked) &&
+ (elem.nodeType === 1 || elem.nodeType === 11) && !jQuery.isXMLDoc(elem) ) {
+ // IE copies events bound via attachEvent when using cloneNode.
+ // Calling detachEvent on the clone will also remove the events
+ // from the original. In order to get around this, we use some
+ // proprietary methods to clear the events. Thanks to MooTools
+ // guys for this hotness.
+
+ cloneFixAttributes( elem, clone );
+
+ // Using Sizzle here is crazy slow, so we use getElementsByTagName
+ // instead
+ srcElements = getAll( elem );
+ destElements = getAll( clone );
+
+ // Weird iteration because IE will replace the length property
+ // with an element if you are cloning the body and one of the
+ // elements on the page has a name or id of "length"
+ for ( i = 0; srcElements[i]; ++i ) {
+ cloneFixAttributes( srcElements[i], destElements[i] );
+ }
+ }
+
+ // Copy the events from the original to the clone
+ if ( dataAndEvents ) {
+ cloneCopyEvent( elem, clone );
+
+ if ( deepDataAndEvents ) {
+ srcElements = getAll( elem );
+ destElements = getAll( clone );
+
+ for ( i = 0; srcElements[i]; ++i ) {
+ cloneCopyEvent( srcElements[i], destElements[i] );
+ }
+ }
+ }
+
+ // Return the cloned set
+ return clone;
+},
+ clean: function( elems, context, fragment, scripts ) {
+ context = context || document;
+
+ // !context.createElement fails in IE with an error but returns typeof 'object'
+ if ( typeof context.createElement === "undefined" ) {
+ context = context.ownerDocument || context[0] && context[0].ownerDocument || document;
+ }
+
+ var ret = [];
+
+ for ( var i = 0, elem; (elem = elems[i]) != null; i++ ) {
+ if ( typeof elem === "number" ) {
+ elem += "";
+ }
+
+ if ( !elem ) {
+ continue;
+ }
+
+ // Convert html string into DOM nodes
+ if ( typeof elem === "string" && !rhtml.test( elem ) ) {
+ elem = context.createTextNode( elem );
+
+ } else if ( typeof elem === "string" ) {
+ // Fix "XHTML"-style tags in all browsers
+ elem = elem.replace(rxhtmlTag, "<$1></$2>");
+
+ // Trim whitespace, otherwise indexOf won't work as expected
+ var tag = (rtagName.exec( elem ) || ["", ""])[1].toLowerCase(),
+ wrap = wrapMap[ tag ] || wrapMap._default,
+ depth = wrap[0],
+ div = context.createElement("div");
+
+ // Go to html and back, then peel off extra wrappers
+ div.innerHTML = wrap[1] + elem + wrap[2];
+
+ // Move to the right depth
+ while ( depth-- ) {
+ div = div.lastChild;
+ }
+
+ // Remove IE's autoinserted <tbody> from table fragments
+ if ( !jQuery.support.tbody ) {
+
+ // String was a <table>, *may* have spurious <tbody>
+ var hasBody = rtbody.test(elem),
+ tbody = tag === "table" && !hasBody ?
+ div.firstChild && div.firstChild.childNodes :
+
+ // String was a bare <thead> or <tfoot>
+ wrap[1] === "<table>" && !hasBody ?
+ div.childNodes :
+ [];
+
+ for ( var j = tbody.length - 1; j >= 0 ; --j ) {
+ if ( jQuery.nodeName( tbody[ j ], "tbody" ) && !tbody[ j ].childNodes.length ) {
+ tbody[ j ].parentNode.removeChild( tbody[ j ] );
+ }
+ }
+
+ }
+
+ // IE completely kills leading whitespace when innerHTML is used
+ if ( !jQuery.support.leadingWhitespace && rleadingWhitespace.test( elem ) ) {
+ div.insertBefore( context.createTextNode( rleadingWhitespace.exec(elem)[0] ), div.firstChild );
+ }
+
+ elem = div.childNodes;
+ }
+
+ if ( elem.nodeType ) {
+ ret.push( elem );
+ } else {
+ ret = jQuery.merge( ret, elem );
+ }
+ }
+
+ if ( fragment ) {
+ for ( i = 0; ret[i]; i++ ) {
+ if ( scripts && jQuery.nodeName( ret[i], "script" ) && (!ret[i].type || ret[i].type.toLowerCase() === "text/javascript") ) {
+ scripts.push( ret[i].parentNode ? ret[i].parentNode.removeChild( ret[i] ) : ret[i] );
+
+ } else {
+ if ( ret[i].nodeType === 1 ) {
+ ret.splice.apply( ret, [i + 1, 0].concat(jQuery.makeArray(ret[i].getElementsByTagName("script"))) );
+ }
+ fragment.appendChild( ret[i] );
+ }
+ }
+ }
+
+ return ret;
+ },
+
+ cleanData: function( elems ) {
+ var data, id, cache = jQuery.cache, internalKey = jQuery.expando, special = jQuery.event.special,
+ deleteExpando = jQuery.support.deleteExpando;
+
+ for ( var i = 0, elem; (elem = elems[i]) != null; i++ ) {
+ if ( elem.nodeName && jQuery.noData[elem.nodeName.toLowerCase()] ) {
+ continue;
+ }
+
+ id = elem[ jQuery.expando ];
+
+ if ( id ) {
+ data = cache[ id ] && cache[ id ][ internalKey ];
+
+ if ( data && data.events ) {
+ for ( var type in data.events ) {
+ if ( special[ type ] ) {
+ jQuery.event.remove( elem, type );
+
+ // This is a shortcut to avoid jQuery.event.remove's overhead
+ } else {
+ jQuery.removeEvent( elem, type, data.handle );
+ }
+ }
+
+ // Null the DOM reference to avoid IE6/7/8 leak (#7054)
+ if ( data.handle ) {
+ data.handle.elem = null;
+ }
+ }
+
+ if ( deleteExpando ) {
+ delete elem[ jQuery.expando ];
+
+ } else if ( elem.removeAttribute ) {
+ elem.removeAttribute( jQuery.expando );
+ }
+
+ delete cache[ id ];
+ }
+ }
+ }
+});
+
+function evalScript( i, elem ) {
+ if ( elem.src ) {
+ jQuery.ajax({
+ url: elem.src,
+ async: false,
+ dataType: "script"
+ });
+ } else {
+ jQuery.globalEval( elem.text || elem.textContent || elem.innerHTML || "" );
+ }
+
+ if ( elem.parentNode ) {
+ elem.parentNode.removeChild( elem );
+ }
+}
+
+
+
+
+var ralpha = /alpha\([^)]*\)/i,
+ ropacity = /opacity=([^)]*)/,
+ rdashAlpha = /-([a-z])/ig,
+ // fixed for IE9, see #8346
+ rupper = /([A-Z]|^ms)/g,
+ rnumpx = /^-?\d+(?:px)?$/i,
+ rnum = /^-?\d/,
+
+ cssShow = { position: "absolute", visibility: "hidden", display: "block" },
+ cssWidth = [ "Left", "Right" ],
+ cssHeight = [ "Top", "Bottom" ],
+ curCSS,
+
+ getComputedStyle,
+ currentStyle,
+
+ fcamelCase = function( all, letter ) {
+ return letter.toUpperCase();
+ };
+
+jQuery.fn.css = function( name, value ) {
+ // Setting 'undefined' is a no-op
+ if ( arguments.length === 2 && value === undefined ) {
+ return this;
+ }
+
+ return jQuery.access( this, name, value, true, function( elem, name, value ) {
+ return value !== undefined ?
+ jQuery.style( elem, name, value ) :
+ jQuery.css( elem, name );
+ });
+};
+
+jQuery.extend({
+ // Add in style property hooks for overriding the default
+ // behavior of getting and setting a style property
+ cssHooks: {
+ opacity: {
+ get: function( elem, computed ) {
+ if ( computed ) {
+ // We should always get a number back from opacity
+ var ret = curCSS( elem, "opacity", "opacity" );
+ return ret === "" ? "1" : ret;
+
+ } else {
+ return elem.style.opacity;
+ }
+ }
+ }
+ },
+
+ // Exclude the following css properties to add px
+ cssNumber: {
+ "zIndex": true,
+ "fontWeight": true,
+ "opacity": true,
+ "zoom": true,
+ "lineHeight": true
+ },
+
+ // Add in properties whose names you wish to fix before
+ // setting or getting the value
+ cssProps: {
+ // normalize float css property
+ "float": jQuery.support.cssFloat ? "cssFloat" : "styleFloat"
+ },
+
+ // Get and set the style property on a DOM Node
+ style: function( elem, name, value, extra ) {
+ // Don't set styles on text and comment nodes
+ if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {
+ return;
+ }
+
+ // Make sure that we're working with the right name
+ var ret, origName = jQuery.camelCase( name ),
+ style = elem.style, hooks = jQuery.cssHooks[ origName ];
+
+ name = jQuery.cssProps[ origName ] || origName;
+
+ // Check if we're setting a value
+ if ( value !== undefined ) {
+ // Make sure that NaN and null values aren't set. See: #7116
+ if ( typeof value === "number" && isNaN( value ) || value == null ) {
+ return;
+ }
+
+ // If a number was passed in, add 'px' to the (except for certain CSS properties)
+ if ( typeof value === "number" && !jQuery.cssNumber[ origName ] ) {
+ value += "px";
+ }
+
+ // If a hook was provided, use that value, otherwise just set the specified value
+ if ( !hooks || !("set" in hooks) || (value = hooks.set( elem, value )) !== undefined ) {
+ // Wrapped to prevent IE from throwing errors when 'invalid' values are provided
+ // Fixes bug #5509
+ try {
+ style[ name ] = value;
+ } catch(e) {}
+ }
+
+ } else {
+ // If a hook was provided get the non-computed value from there
+ if ( hooks && "get" in hooks && (ret = hooks.get( elem, false, extra )) !== undefined ) {
+ return ret;
+ }
+
+ // Otherwise just get the value from the style object
+ return style[ name ];
+ }
+ },
+
+ css: function( elem, name, extra ) {
+ // Make sure that we're working with the right name
+ var ret, origName = jQuery.camelCase( name ),
+ hooks = jQuery.cssHooks[ origName ];
+
+ name = jQuery.cssProps[ origName ] || origName;
+
+ // If a hook was provided get the computed value from there
+ if ( hooks && "get" in hooks && (ret = hooks.get( elem, true, extra )) !== undefined ) {
+ return ret;
+
+ // Otherwise, if a way to get the computed value exists, use that
+ } else if ( curCSS ) {
+ return curCSS( elem, name, origName );
+ }
+ },
+
+ // A method for quickly swapping in/out CSS properties to get correct calculations
+ swap: function( elem, options, callback ) {
+ var old = {};
+
+ // Remember the old values, and insert the new ones
+ for ( var name in options ) {
+ old[ name ] = elem.style[ name ];
+ elem.style[ name ] = options[ name ];
+ }
+
+ callback.call( elem );
+
+ // Revert the old values
+ for ( name in options ) {
+ elem.style[ name ] = old[ name ];
+ }
+ },
+
+ camelCase: function( string ) {
+ return string.replace( rdashAlpha, fcamelCase );
+ }
+});
+
+// DEPRECATED, Use jQuery.css() instead
+jQuery.curCSS = jQuery.css;
+
+jQuery.each(["height", "width"], function( i, name ) {
+ jQuery.cssHooks[ name ] = {
+ get: function( elem, computed, extra ) {
+ var val;
+
+ if ( computed ) {
+ if ( elem.offsetWidth !== 0 ) {
+ val = getWH( elem, name, extra );
+
+ } else {
+ jQuery.swap( elem, cssShow, function() {
+ val = getWH( elem, name, extra );
+ });
+ }
+
+ if ( val <= 0 ) {
+ val = curCSS( elem, name, name );
+
+ if ( val === "0px" && currentStyle ) {
+ val = currentStyle( elem, name, name );
+ }
+
+ if ( val != null ) {
+ // Should return "auto" instead of 0, use 0 for
+ // temporary backwards-compat
+ return val === "" || val === "auto" ? "0px" : val;
+ }
+ }
+
+ if ( val < 0 || val == null ) {
+ val = elem.style[ name ];
+
+ // Should return "auto" instead of 0, use 0 for
+ // temporary backwards-compat
+ return val === "" || val === "auto" ? "0px" : val;
+ }
+
+ return typeof val === "string" ? val : val + "px";
+ }
+ },
+
+ set: function( elem, value ) {
+ if ( rnumpx.test( value ) ) {
+ // ignore negative width and height values #1599
+ value = parseFloat(value);
+
+ if ( value >= 0 ) {
+ return value + "px";
+ }
+
+ } else {
+ return value;
+ }
+ }
+ };
+});
+
+if ( !jQuery.support.opacity ) {
+ jQuery.cssHooks.opacity = {
+ get: function( elem, computed ) {
+ // IE uses filters for opacity
+ return ropacity.test((computed && elem.currentStyle ? elem.currentStyle.filter : elem.style.filter) || "") ?
+ (parseFloat(RegExp.$1) / 100) + "" :
+ computed ? "1" : "";
+ },
+
+ set: function( elem, value ) {
+ var style = elem.style;
+
+ // IE has trouble with opacity if it does not have layout
+ // Force it by setting the zoom level
+ style.zoom = 1;
+
+ // Set the alpha filter to set the opacity
+ var opacity = jQuery.isNaN(value) ?
+ "" :
+ "alpha(opacity=" + value * 100 + ")",
+ filter = style.filter || "";
+
+ style.filter = ralpha.test(filter) ?
+ filter.replace(ralpha, opacity) :
+ style.filter + ' ' + opacity;
+ }
+ };
+}
+
+jQuery(function() {
+ // This hook cannot be added until DOM ready because the support test
+ // for it is not run until after DOM ready
+ if ( !jQuery.support.reliableMarginRight ) {
+ jQuery.cssHooks.marginRight = {
+ get: function( elem, computed ) {
+ // WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right
+ // Work around by temporarily setting element display to inline-block
+ var ret;
+ jQuery.swap( elem, { "display": "inline-block" }, function() {
+ if ( computed ) {
+ ret = curCSS( elem, "margin-right", "marginRight" );
+ } else {
+ ret = elem.style.marginRight;
+ }
+ });
+ return ret;
+ }
+ };
+ }
+});
+
+if ( document.defaultView && document.defaultView.getComputedStyle ) {
+ getComputedStyle = function( elem, newName, name ) {
+ var ret, defaultView, computedStyle;
+
+ name = name.replace( rupper, "-$1" ).toLowerCase();
+
+ if ( !(defaultView = elem.ownerDocument.defaultView) ) {
+ return undefined;
+ }
+
+ if ( (computedStyle = defaultView.getComputedStyle( elem, null )) ) {
+ ret = computedStyle.getPropertyValue( name );
+ if ( ret === "" && !jQuery.contains( elem.ownerDocument.documentElement, elem ) ) {
+ ret = jQuery.style( elem, name );
+ }
+ }
+
+ return ret;
+ };
+}
+
+if ( document.documentElement.currentStyle ) {
+ currentStyle = function( elem, name ) {
+ var left,
+ ret = elem.currentStyle && elem.currentStyle[ name ],
+ rsLeft = elem.runtimeStyle && elem.runtimeStyle[ name ],
+ style = elem.style;
+
+ // From the awesome hack by Dean Edwards
+ // http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291
+
+ // If we're not dealing with a regular pixel number
+ // but a number that has a weird ending, we need to convert it to pixels
+ if ( !rnumpx.test( ret ) && rnum.test( ret ) ) {
+ // Remember the original values
+ left = style.left;
+
+ // Put in the new values to get a computed value out
+ if ( rsLeft ) {
+ elem.runtimeStyle.left = elem.currentStyle.left;
+ }
+ style.left = name === "fontSize" ? "1em" : (ret || 0);
+ ret = style.pixelLeft + "px";
+
+ // Revert the changed values
+ style.left = left;
+ if ( rsLeft ) {
+ elem.runtimeStyle.left = rsLeft;
+ }
+ }
+
+ return ret === "" ? "auto" : ret;
+ };
+}
+
+curCSS = getComputedStyle || currentStyle;
+
+function getWH( elem, name, extra ) {
+ var which = name === "width" ? cssWidth : cssHeight,
+ val = name === "width" ? elem.offsetWidth : elem.offsetHeight;
+
+ if ( extra === "border" ) {
+ return val;
+ }
+
+ jQuery.each( which, function() {
+ if ( !extra ) {
+ val -= parseFloat(jQuery.css( elem, "padding" + this )) || 0;
+ }
+
+ if ( extra === "margin" ) {
+ val += parseFloat(jQuery.css( elem, "margin" + this )) || 0;
+
+ } else {
+ val -= parseFloat(jQuery.css( elem, "border" + this + "Width" )) || 0;
+ }
+ });
+
+ return val;
+}
+
+if ( jQuery.expr && jQuery.expr.filters ) {
+ jQuery.expr.filters.hidden = function( elem ) {
+ var width = elem.offsetWidth,
+ height = elem.offsetHeight;
+
+ return (width === 0 && height === 0) || (!jQuery.support.reliableHiddenOffsets && (elem.style.display || jQuery.css( elem, "display" )) === "none");
+ };
+
+ jQuery.expr.filters.visible = function( elem ) {
+ return !jQuery.expr.filters.hidden( elem );
+ };
+}
+
+
+
+
+var r20 = /%20/g,
+ rbracket = /\[\]$/,
+ rCRLF = /\r?\n/g,
+ rhash = /#.*$/,
+ rheaders = /^(.*?):[ \t]*([^\r\n]*)\r?$/mg, // IE leaves an \r character at EOL
+ rinput = /^(?:color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,
+ // #7653, #8125, #8152: local protocol detection
+ rlocalProtocol = /^(?:about|app|app\-storage|.+\-extension|file|widget):$/,
+ rnoContent = /^(?:GET|HEAD)$/,
+ rprotocol = /^\/\//,
+ rquery = /\?/,
+ rscript = /<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,
+ rselectTextarea = /^(?:select|textarea)/i,
+ rspacesAjax = /\s+/,
+ rts = /([?&])_=[^&]*/,
+ rucHeaders = /(^|\-)([a-z])/g,
+ rucHeadersFunc = function( _, $1, $2 ) {
+ return $1 + $2.toUpperCase();
+ },
+ rurl = /^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,
+
+ // Keep a copy of the old load method
+ _load = jQuery.fn.load,
+
+ /* Prefilters
+ * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)
+ * 2) These are called:
+ * - BEFORE asking for a transport
+ * - AFTER param serialization (s.data is a string if s.processData is true)
+ * 3) key is the dataType
+ * 4) the catchall symbol "*" can be used
+ * 5) execution will start with transport dataType and THEN continue down to "*" if needed
+ */
+ prefilters = {},
+
+ /* Transports bindings
+ * 1) key is the dataType
+ * 2) the catchall symbol "*" can be used
+ * 3) selection will start with transport dataType and THEN go to "*" if needed
+ */
+ transports = {},
+
+ // Document location
+ ajaxLocation,
+
+ // Document location segments
+ ajaxLocParts;
+
+// #8138, IE may throw an exception when accessing
+// a field from document.location if document.domain has been set
+try {
+ ajaxLocation = document.location.href;
+} catch( e ) {
+ // Use the href attribute of an A element
+ // since IE will modify it given document.location
+ ajaxLocation = document.createElement( "a" );
+ ajaxLocation.href = "";
+ ajaxLocation = ajaxLocation.href;
+}
+
+// Segment location into parts
+ajaxLocParts = rurl.exec( ajaxLocation.toLowerCase() ) || [];
+
+// Base "constructor" for jQuery.ajaxPrefilter and jQuery.ajaxTransport
+function addToPrefiltersOrTransports( structure ) {
+
+ // dataTypeExpression is optional and defaults to "*"
+ return function( dataTypeExpression, func ) {
+
+ if ( typeof dataTypeExpression !== "string" ) {
+ func = dataTypeExpression;
+ dataTypeExpression = "*";
+ }
+
+ if ( jQuery.isFunction( func ) ) {
+ var dataTypes = dataTypeExpression.toLowerCase().split( rspacesAjax ),
+ i = 0,
+ length = dataTypes.length,
+ dataType,
+ list,
+ placeBefore;
+
+ // For each dataType in the dataTypeExpression
+ for(; i < length; i++ ) {
+ dataType = dataTypes[ i ];
+ // We control if we're asked to add before
+ // any existing element
+ placeBefore = /^\+/.test( dataType );
+ if ( placeBefore ) {
+ dataType = dataType.substr( 1 ) || "*";
+ }
+ list = structure[ dataType ] = structure[ dataType ] || [];
+ // then we add to the structure accordingly
+ list[ placeBefore ? "unshift" : "push" ]( func );
+ }
+ }
+ };
+}
+
+//Base inspection function for prefilters and transports
+function inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR,
+ dataType /* internal */, inspected /* internal */ ) {
+
+ dataType = dataType || options.dataTypes[ 0 ];
+ inspected = inspected || {};
+
+ inspected[ dataType ] = true;
+
+ var list = structure[ dataType ],
+ i = 0,
+ length = list ? list.length : 0,
+ executeOnly = ( structure === prefilters ),
+ selection;
+
+ for(; i < length && ( executeOnly || !selection ); i++ ) {
+ selection = list[ i ]( options, originalOptions, jqXHR );
+ // If we got redirected to another dataType
+ // we try there if executing only and not done already
+ if ( typeof selection === "string" ) {
+ if ( !executeOnly || inspected[ selection ] ) {
+ selection = undefined;
+ } else {
+ options.dataTypes.unshift( selection );
+ selection = inspectPrefiltersOrTransports(
+ structure, options, originalOptions, jqXHR, selection, inspected );
+ }
+ }
+ }
+ // If we're only executing or nothing was selected
+ // we try the catchall dataType if not done already
+ if ( ( executeOnly || !selection ) && !inspected[ "*" ] ) {
+ selection = inspectPrefiltersOrTransports(
+ structure, options, originalOptions, jqXHR, "*", inspected );
+ }
+ // unnecessary when only executing (prefilters)
+ // but it'll be ignored by the caller in that case
+ return selection;
+}
+
+jQuery.fn.extend({
+ load: function( url, params, callback ) {
+ if ( typeof url !== "string" && _load ) {
+ return _load.apply( this, arguments );
+
+ // Don't do a request if no elements are being requested
+ } else if ( !this.length ) {
+ return this;
+ }
+
+ var off = url.indexOf( " " );
+ if ( off >= 0 ) {
+ var selector = url.slice( off, url.length );
+ url = url.slice( 0, off );
+ }
+
+ // Default to a GET request
+ var type = "GET";
+
+ // If the second parameter was provided
+ if ( params ) {
+ // If it's a function
+ if ( jQuery.isFunction( params ) ) {
+ // We assume that it's the callback
+ callback = params;
+ params = undefined;
+
+ // Otherwise, build a param string
+ } else if ( typeof params === "object" ) {
+ params = jQuery.param( params, jQuery.ajaxSettings.traditional );
+ type = "POST";
+ }
+ }
+
+ var self = this;
+
+ // Request the remote document
+ jQuery.ajax({
+ url: url,
+ type: type,
+ dataType: "html",
+ data: params,
+ // Complete callback (responseText is used internally)
+ complete: function( jqXHR, status, responseText ) {
+ // Store the response as specified by the jqXHR object
+ responseText = jqXHR.responseText;
+ // If successful, inject the HTML into all the matched elements
+ if ( jqXHR.isResolved() ) {
+ // #4825: Get the actual response in case
+ // a dataFilter is present in ajaxSettings
+ jqXHR.done(function( r ) {
+ responseText = r;
+ });
+ // See if a selector was specified
+ self.html( selector ?
+ // Create a dummy div to hold the results
+ jQuery("<div>")
+ // inject the contents of the document in, removing the scripts
+ // to avoid any 'Permission Denied' errors in IE
+ .append(responseText.replace(rscript, ""))
+
+ // Locate the specified elements
+ .find(selector) :
+
+ // If not, just inject the full result
+ responseText );
+ }
+
+ if ( callback ) {
+ self.each( callback, [ responseText, status, jqXHR ] );
+ }
+ }
+ });
+
+ return this;
+ },
+
+ serialize: function() {
+ return jQuery.param( this.serializeArray() );
+ },
+
+ serializeArray: function() {
+ return this.map(function(){
+ return this.elements ? jQuery.makeArray( this.elements ) : this;
+ })
+ .filter(function(){
+ return this.name && !this.disabled &&
+ ( this.checked || rselectTextarea.test( this.nodeName ) ||
+ rinput.test( this.type ) );
+ })
+ .map(function( i, elem ){
+ var val = jQuery( this ).val();
+
+ return val == null ?
+ null :
+ jQuery.isArray( val ) ?
+ jQuery.map( val, function( val, i ){
+ return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
+ }) :
+ { name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
+ }).get();
+ }
+});
+
+// Attach a bunch of functions for handling common AJAX events
+jQuery.each( "ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split( " " ), function( i, o ){
+ jQuery.fn[ o ] = function( f ){
+ return this.bind( o, f );
+ };
+} );
+
+jQuery.each( [ "get", "post" ], function( i, method ) {
+ jQuery[ method ] = function( url, data, callback, type ) {
+ // shift arguments if data argument was omitted
+ if ( jQuery.isFunction( data ) ) {
+ type = type || callback;
+ callback = data;
+ data = undefined;
+ }
+
+ return jQuery.ajax({
+ type: method,
+ url: url,
+ data: data,
+ success: callback,
+ dataType: type
+ });
+ };
+} );
+
+jQuery.extend({
+
+ getScript: function( url, callback ) {
+ return jQuery.get( url, undefined, callback, "script" );
+ },
+
+ getJSON: function( url, data, callback ) {
+ return jQuery.get( url, data, callback, "json" );
+ },
+
+ // Creates a full fledged settings object into target
+ // with both ajaxSettings and settings fields.
+ // If target is omitted, writes into ajaxSettings.
+ ajaxSetup: function ( target, settings ) {
+ if ( !settings ) {
+ // Only one parameter, we extend ajaxSettings
+ settings = target;
+ target = jQuery.extend( true, jQuery.ajaxSettings, settings );
+ } else {
+ // target was provided, we extend into it
+ jQuery.extend( true, target, jQuery.ajaxSettings, settings );
+ }
+ // Flatten fields we don't want deep extended
+ for( var field in { context: 1, url: 1 } ) {
+ if ( field in settings ) {
+ target[ field ] = settings[ field ];
+ } else if( field in jQuery.ajaxSettings ) {
+ target[ field ] = jQuery.ajaxSettings[ field ];
+ }
+ }
+ return target;
+ },
+
+ ajaxSettings: {
+ url: ajaxLocation,
+ isLocal: rlocalProtocol.test( ajaxLocParts[ 1 ] ),
+ global: true,
+ type: "GET",
+ contentType: "application/x-www-form-urlencoded",
+ processData: true,
+ async: true,
+ /*
+ timeout: 0,
+ data: null,
+ dataType: null,
+ username: null,
+ password: null,
+ cache: null,
+ traditional: false,
+ headers: {},
+ */
+
+ accepts: {
+ xml: "application/xml, text/xml",
+ html: "text/html",
+ text: "text/plain",
+ json: "application/json, text/javascript",
+ "*": "*/*"
+ },
+
+ contents: {
+ xml: /xml/,
+ html: /html/,
+ json: /json/
+ },
+
+ responseFields: {
+ xml: "responseXML",
+ text: "responseText"
+ },
+
+ // List of data converters
+ // 1) key format is "source_type destination_type" (a single space in-between)
+ // 2) the catchall symbol "*" can be used for source_type
+ converters: {
+
+ // Convert anything to text
+ "* text": window.String,
+
+ // Text to html (true = no transformation)
+ "text html": true,
+
+ // Evaluate text as a json expression
+ "text json": jQuery.parseJSON,
+
+ // Parse text as xml
+ "text xml": jQuery.parseXML
+ }
+ },
+
+ ajaxPrefilter: addToPrefiltersOrTransports( prefilters ),
+ ajaxTransport: addToPrefiltersOrTransports( transports ),
+
+ // Main method
+ ajax: function( url, options ) {
+
+ // If url is an object, simulate pre-1.5 signature
+ if ( typeof url === "object" ) {
+ options = url;
+ url = undefined;
+ }
+
+ // Force options to be an object
+ options = options || {};
+
+ var // Create the final options object
+ s = jQuery.ajaxSetup( {}, options ),
+ // Callbacks context
+ callbackContext = s.context || s,
+ // Context for global events
+ // It's the callbackContext if one was provided in the options
+ // and if it's a DOM node or a jQuery collection
+ globalEventContext = callbackContext !== s &&
+ ( callbackContext.nodeType || callbackContext instanceof jQuery ) ?
+ jQuery( callbackContext ) : jQuery.event,
+ // Deferreds
+ deferred = jQuery.Deferred(),
+ completeDeferred = jQuery._Deferred(),
+ // Status-dependent callbacks
+ statusCode = s.statusCode || {},
+ // ifModified key
+ ifModifiedKey,
+ // Headers (they are sent all at once)
+ requestHeaders = {},
+ // Response headers
+ responseHeadersString,
+ responseHeaders,
+ // transport
+ transport,
+ // timeout handle
+ timeoutTimer,
+ // Cross-domain detection vars
+ parts,
+ // The jqXHR state
+ state = 0,
+ // To know if global events are to be dispatched
+ fireGlobals,
+ // Loop variable
+ i,
+ // Fake xhr
+ jqXHR = {
+
+ readyState: 0,
+
+ // Caches the header
+ setRequestHeader: function( name, value ) {
+ if ( !state ) {
+ requestHeaders[ name.toLowerCase().replace( rucHeaders, rucHeadersFunc ) ] = value;
+ }
+ return this;
+ },
+
+ // Raw string
+ getAllResponseHeaders: function() {
+ return state === 2 ? responseHeadersString : null;
+ },
+
+ // Builds headers hashtable if needed
+ getResponseHeader: function( key ) {
+ var match;
+ if ( state === 2 ) {
+ if ( !responseHeaders ) {
+ responseHeaders = {};
+ while( ( match = rheaders.exec( responseHeadersString ) ) ) {
+ responseHeaders[ match[1].toLowerCase() ] = match[ 2 ];
+ }
+ }
+ match = responseHeaders[ key.toLowerCase() ];
+ }
+ return match === undefined ? null : match;
+ },
+
+ // Overrides response content-type header
+ overrideMimeType: function( type ) {
+ if ( !state ) {
+ s.mimeType = type;
+ }
+ return this;
+ },
+
+ // Cancel the request
+ abort: function( statusText ) {
+ statusText = statusText || "abort";
+ if ( transport ) {
+ transport.abort( statusText );
+ }
+ done( 0, statusText );
+ return this;
+ }
+ };
+
+ // Callback for when everything is done
+ // It is defined here because jslint complains if it is declared
+ // at the end of the function (which would be more logical and readable)
+ function done( status, statusText, responses, headers ) {
+
+ // Called once
+ if ( state === 2 ) {
+ return;
+ }
+
+ // State is "done" now
+ state = 2;
+
+ // Clear timeout if it exists
+ if ( timeoutTimer ) {
+ clearTimeout( timeoutTimer );
+ }
+
+ // Dereference transport for early garbage collection
+ // (no matter how long the jqXHR object will be used)
+ transport = undefined;
+
+ // Cache response headers
+ responseHeadersString = headers || "";
+
+ // Set readyState
+ jqXHR.readyState = status ? 4 : 0;
+
+ var isSuccess,
+ success,
+ error,
+ response = responses ? ajaxHandleResponses( s, jqXHR, responses ) : undefined,
+ lastModified,
+ etag;
+
+ // If successful, handle type chaining
+ if ( status >= 200 && status < 300 || status === 304 ) {
+
+ // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
+ if ( s.ifModified ) {
+
+ if ( ( lastModified = jqXHR.getResponseHeader( "Last-Modified" ) ) ) {
+ jQuery.lastModified[ ifModifiedKey ] = lastModified;
+ }
+ if ( ( etag = jqXHR.getResponseHeader( "Etag" ) ) ) {
+ jQuery.etag[ ifModifiedKey ] = etag;
+ }
+ }
+
+ // If not modified
+ if ( status === 304 ) {
+
+ statusText = "notmodified";
+ isSuccess = true;
+
+ // If we have data
+ } else {
+
+ try {
+ success = ajaxConvert( s, response );
+ statusText = "success";
+ isSuccess = true;
+ } catch(e) {
+ // We have a parsererror
+ statusText = "parsererror";
+ error = e;
+ }
+ }
+ } else {
+ // We extract error from statusText
+ // then normalize statusText and status for non-aborts
+ error = statusText;
+ if( !statusText || status ) {
+ statusText = "error";
+ if ( status < 0 ) {
+ status = 0;
+ }
+ }
+ }
+
+ // Set data for the fake xhr object
+ jqXHR.status = status;
+ jqXHR.statusText = statusText;
+
+ // Success/Error
+ if ( isSuccess ) {
+ deferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );
+ } else {
+ deferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );
+ }
+
+ // Status-dependent callbacks
+ jqXHR.statusCode( statusCode );
+ statusCode = undefined;
+
+ if ( fireGlobals ) {
+ globalEventContext.trigger( "ajax" + ( isSuccess ? "Success" : "Error" ),
+ [ jqXHR, s, isSuccess ? success : error ] );
+ }
+
+ // Complete
+ completeDeferred.resolveWith( callbackContext, [ jqXHR, statusText ] );
+
+ if ( fireGlobals ) {
+ globalEventContext.trigger( "ajaxComplete", [ jqXHR, s] );
+ // Handle the global AJAX counter
+ if ( !( --jQuery.active ) ) {
+ jQuery.event.trigger( "ajaxStop" );
+ }
+ }
+ }
+
+ // Attach deferreds
+ deferred.promise( jqXHR );
+ jqXHR.success = jqXHR.done;
+ jqXHR.error = jqXHR.fail;
+ jqXHR.complete = completeDeferred.done;
+
+ // Status-dependent callbacks
+ jqXHR.statusCode = function( map ) {
+ if ( map ) {
+ var tmp;
+ if ( state < 2 ) {
+ for( tmp in map ) {
+ statusCode[ tmp ] = [ statusCode[tmp], map[tmp] ];
+ }
+ } else {
+ tmp = map[ jqXHR.status ];
+ jqXHR.then( tmp, tmp );
+ }
+ }
+ return this;
+ };
+
+ // Remove hash character (#7531: and string promotion)
+ // Add protocol if not provided (#5866: IE7 issue with protocol-less urls)
+ // We also use the url parameter if available
+ s.url = ( ( url || s.url ) + "" ).replace( rhash, "" ).replace( rprotocol, ajaxLocParts[ 1 ] + "//" );
+
+ // Extract dataTypes list
+ s.dataTypes = jQuery.trim( s.dataType || "*" ).toLowerCase().split( rspacesAjax );
+
+ // Determine if a cross-domain request is in order
+ if ( s.crossDomain == null ) {
+ parts = rurl.exec( s.url.toLowerCase() );
+ s.crossDomain = !!( parts &&
+ ( parts[ 1 ] != ajaxLocParts[ 1 ] || parts[ 2 ] != ajaxLocParts[ 2 ] ||
+ ( parts[ 3 ] || ( parts[ 1 ] === "http:" ? 80 : 443 ) ) !=
+ ( ajaxLocParts[ 3 ] || ( ajaxLocParts[ 1 ] === "http:" ? 80 : 443 ) ) )
+ );
+ }
+
+ // Convert data if not already a string
+ if ( s.data && s.processData && typeof s.data !== "string" ) {
+ s.data = jQuery.param( s.data, s.traditional );
+ }
+
+ // Apply prefilters
+ inspectPrefiltersOrTransports( prefilters, s, options, jqXHR );
+
+ // If request was aborted inside a prefiler, stop there
+ if ( state === 2 ) {
+ return false;
+ }
+
+ // We can fire global events as of now if asked to
+ fireGlobals = s.global;
+
+ // Uppercase the type
+ s.type = s.type.toUpperCase();
+
+ // Determine if request has content
+ s.hasContent = !rnoContent.test( s.type );
+
+ // Watch for a new set of requests
+ if ( fireGlobals && jQuery.active++ === 0 ) {
+ jQuery.event.trigger( "ajaxStart" );
+ }
+
+ // More options handling for requests with no content
+ if ( !s.hasContent ) {
+
+ // If data is available, append data to url
+ if ( s.data ) {
+ s.url += ( rquery.test( s.url ) ? "&" : "?" ) + s.data;
+ }
+
+ // Get ifModifiedKey before adding the anti-cache parameter
+ ifModifiedKey = s.url;
+
+ // Add anti-cache in url if needed
+ if ( s.cache === false ) {
+
+ var ts = jQuery.now(),
+ // try replacing _= if it is there
+ ret = s.url.replace( rts, "$1_=" + ts );
+
+ // if nothing was replaced, add timestamp to the end
+ s.url = ret + ( (ret === s.url ) ? ( rquery.test( s.url ) ? "&" : "?" ) + "_=" + ts : "" );
+ }
+ }
+
+ // Set the correct header, if data is being sent
+ if ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {
+ requestHeaders[ "Content-Type" ] = s.contentType;
+ }
+
+ // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
+ if ( s.ifModified ) {
+ ifModifiedKey = ifModifiedKey || s.url;
+ if ( jQuery.lastModified[ ifModifiedKey ] ) {
+ requestHeaders[ "If-Modified-Since" ] = jQuery.lastModified[ ifModifiedKey ];
+ }
+ if ( jQuery.etag[ ifModifiedKey ] ) {
+ requestHeaders[ "If-None-Match" ] = jQuery.etag[ ifModifiedKey ];
+ }
+ }
+
+ // Set the Accepts header for the server, depending on the dataType
+ requestHeaders.Accept = s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[0] ] ?
+ s.accepts[ s.dataTypes[0] ] + ( s.dataTypes[ 0 ] !== "*" ? ", */*; q=0.01" : "" ) :
+ s.accepts[ "*" ];
+
+ // Check for headers option
+ for ( i in s.headers ) {
+ jqXHR.setRequestHeader( i, s.headers[ i ] );
+ }
+
+ // Allow custom headers/mimetypes and early abort
+ if ( s.beforeSend && ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || state === 2 ) ) {
+ // Abort if not done already
+ jqXHR.abort();
+ return false;
+
+ }
+
+ // Install callbacks on deferreds
+ for ( i in { success: 1, error: 1, complete: 1 } ) {
+ jqXHR[ i ]( s[ i ] );
+ }
+
+ // Get transport
+ transport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );
+
+ // If no transport, we auto-abort
+ if ( !transport ) {
+ done( -1, "No Transport" );
+ } else {
+ jqXHR.readyState = 1;
+ // Send global event
+ if ( fireGlobals ) {
+ globalEventContext.trigger( "ajaxSend", [ jqXHR, s ] );
+ }
+ // Timeout
+ if ( s.async && s.timeout > 0 ) {
+ timeoutTimer = setTimeout( function(){
+ jqXHR.abort( "timeout" );
+ }, s.timeout );
+ }
+
+ try {
+ state = 1;
+ transport.send( requestHeaders, done );
+ } catch (e) {
+ // Propagate exception as error if not done
+ if ( status < 2 ) {
+ done( -1, e );
+ // Simply rethrow otherwise
+ } else {
+ jQuery.error( e );
+ }
+ }
+ }
+
+ return jqXHR;
+ },
+
+ // Serialize an array of form elements or a set of
+ // key/values into a query string
+ param: function( a, traditional ) {
+ var s = [],
+ add = function( key, value ) {
+ // If value is a function, invoke it and return its value
+ value = jQuery.isFunction( value ) ? value() : value;
+ s[ s.length ] = encodeURIComponent( key ) + "=" + encodeURIComponent( value );
+ };
+
+ // Set traditional to true for jQuery <= 1.3.2 behavior.
+ if ( traditional === undefined ) {
+ traditional = jQuery.ajaxSettings.traditional;
+ }
+
+ // If an array was passed in, assume that it is an array of form elements.
+ if ( jQuery.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {
+ // Serialize the form elements
+ jQuery.each( a, function() {
+ add( this.name, this.value );
+ } );
+
+ } else {
+ // If traditional, encode the "old" way (the way 1.3.2 or older
+ // did it), otherwise encode params recursively.
+ for ( var prefix in a ) {
+ buildParams( prefix, a[ prefix ], traditional, add );
+ }
+ }
+
+ // Return the resulting serialization
+ return s.join( "&" ).replace( r20, "+" );
+ }
+});
+
+function buildParams( prefix, obj, traditional, add ) {
+ if ( jQuery.isArray( obj ) && obj.length ) {
+ // Serialize array item.
+ jQuery.each( obj, function( i, v ) {
+ if ( traditional || rbracket.test( prefix ) ) {
+ // Treat each array item as a scalar.
+ add( prefix, v );
+
+ } else {
+ // If array item is non-scalar (array or object), encode its
+ // numeric index to resolve deserialization ambiguity issues.
+ // Note that rack (as of 1.0.0) can't currently deserialize
+ // nested arrays properly, and attempting to do so may cause
+ // a server error. Possible fixes are to modify rack's
+ // deserialization algorithm or to provide an option or flag
+ // to force array serialization to be shallow.
+ buildParams( prefix + "[" + ( typeof v === "object" || jQuery.isArray(v) ? i : "" ) + "]", v, traditional, add );
+ }
+ });
+
+ } else if ( !traditional && obj != null && typeof obj === "object" ) {
+ // If we see an array here, it is empty and should be treated as an empty
+ // object
+ if ( jQuery.isArray( obj ) || jQuery.isEmptyObject( obj ) ) {
+ add( prefix, "" );
+
+ // Serialize object item.
+ } else {
+ for ( var name in obj ) {
+ buildParams( prefix + "[" + name + "]", obj[ name ], traditional, add );
+ }
+ }
+
+ } else {
+ // Serialize scalar item.
+ add( prefix, obj );
+ }
+}
+
+// This is still on the jQuery object... for now
+// Want to move this to jQuery.ajax some day
+jQuery.extend({
+
+ // Counter for holding the number of active queries
+ active: 0,
+
+ // Last-Modified header cache for next request
+ lastModified: {},
+ etag: {}
+
+});
+
+/* Handles responses to an ajax request:
+ * - sets all responseXXX fields accordingly
+ * - finds the right dataType (mediates between content-type and expected dataType)
+ * - returns the corresponding response
+ */
+function ajaxHandleResponses( s, jqXHR, responses ) {
+
+ var contents = s.contents,
+ dataTypes = s.dataTypes,
+ responseFields = s.responseFields,
+ ct,
+ type,
+ finalDataType,
+ firstDataType;
+
+ // Fill responseXXX fields
+ for( type in responseFields ) {
+ if ( type in responses ) {
+ jqXHR[ responseFields[type] ] = responses[ type ];
+ }
+ }
+
+ // Remove auto dataType and get content-type in the process
+ while( dataTypes[ 0 ] === "*" ) {
+ dataTypes.shift();
+ if ( ct === undefined ) {
+ ct = s.mimeType || jqXHR.getResponseHeader( "content-type" );
+ }
+ }
+
+ // Check if we're dealing with a known content-type
+ if ( ct ) {
+ for ( type in contents ) {
+ if ( contents[ type ] && contents[ type ].test( ct ) ) {
+ dataTypes.unshift( type );
+ break;
+ }
+ }
+ }
+
+ // Check to see if we have a response for the expected dataType
+ if ( dataTypes[ 0 ] in responses ) {
+ finalDataType = dataTypes[ 0 ];
+ } else {
+ // Try convertible dataTypes
+ for ( type in responses ) {
+ if ( !dataTypes[ 0 ] || s.converters[ type + " " + dataTypes[0] ] ) {
+ finalDataType = type;
+ break;
+ }
+ if ( !firstDataType ) {
+ firstDataType = type;
+ }
+ }
+ // Or just use first one
+ finalDataType = finalDataType || firstDataType;
+ }
+
+ // If we found a dataType
+ // We add the dataType to the list if needed
+ // and return the corresponding response
+ if ( finalDataType ) {
+ if ( finalDataType !== dataTypes[ 0 ] ) {
+ dataTypes.unshift( finalDataType );
+ }
+ return responses[ finalDataType ];
+ }
+}
+
+// Chain conversions given the request and the original response
+function ajaxConvert( s, response ) {
+
+ // Apply the dataFilter if provided
+ if ( s.dataFilter ) {
+ response = s.dataFilter( response, s.dataType );
+ }
+
+ var dataTypes = s.dataTypes,
+ converters = {},
+ i,
+ key,
+ length = dataTypes.length,
+ tmp,
+ // Current and previous dataTypes
+ current = dataTypes[ 0 ],
+ prev,
+ // Conversion expression
+ conversion,
+ // Conversion function
+ conv,
+ // Conversion functions (transitive conversion)
+ conv1,
+ conv2;
+
+ // For each dataType in the chain
+ for( i = 1; i < length; i++ ) {
+
+ // Create converters map
+ // with lowercased keys
+ if ( i === 1 ) {
+ for( key in s.converters ) {
+ if( typeof key === "string" ) {
+ converters[ key.toLowerCase() ] = s.converters[ key ];
+ }
+ }
+ }
+
+ // Get the dataTypes
+ prev = current;
+ current = dataTypes[ i ];
+
+ // If current is auto dataType, update it to prev
+ if( current === "*" ) {
+ current = prev;
+ // If no auto and dataTypes are actually different
+ } else if ( prev !== "*" && prev !== current ) {
+
+ // Get the converter
+ conversion = prev + " " + current;
+ conv = converters[ conversion ] || converters[ "* " + current ];
+
+ // If there is no direct converter, search transitively
+ if ( !conv ) {
+ conv2 = undefined;
+ for( conv1 in converters ) {
+ tmp = conv1.split( " " );
+ if ( tmp[ 0 ] === prev || tmp[ 0 ] === "*" ) {
+ conv2 = converters[ tmp[1] + " " + current ];
+ if ( conv2 ) {
+ conv1 = converters[ conv1 ];
+ if ( conv1 === true ) {
+ conv = conv2;
+ } else if ( conv2 === true ) {
+ conv = conv1;
+ }
+ break;
+ }
+ }
+ }
+ }
+ // If we found no converter, dispatch an error
+ if ( !( conv || conv2 ) ) {
+ jQuery.error( "No conversion from " + conversion.replace(" "," to ") );
+ }
+ // If found converter is not an equivalence
+ if ( conv !== true ) {
+ // Convert with 1 or 2 converters accordingly
+ response = conv ? conv( response ) : conv2( conv1(response) );
+ }
+ }
+ }
+ return response;
+}
+
+
+
+
+var jsc = jQuery.now(),
+ jsre = /(\=)\?(&|$)|\?\?/i;
+
+// Default jsonp settings
+jQuery.ajaxSetup({
+ jsonp: "callback",
+ jsonpCallback: function() {
+ return jQuery.expando + "_" + ( jsc++ );
+ }
+});
+
+// Detect, normalize options and install callbacks for jsonp requests
+jQuery.ajaxPrefilter( "json jsonp", function( s, originalSettings, jqXHR ) {
+
+ var dataIsString = ( typeof s.data === "string" );
+
+ if ( s.dataTypes[ 0 ] === "jsonp" ||
+ originalSettings.jsonpCallback ||
+ originalSettings.jsonp != null ||
+ s.jsonp !== false && ( jsre.test( s.url ) ||
+ dataIsString && jsre.test( s.data ) ) ) {
+
+ var responseContainer,
+ jsonpCallback = s.jsonpCallback =
+ jQuery.isFunction( s.jsonpCallback ) ? s.jsonpCallback() : s.jsonpCallback,
+ previous = window[ jsonpCallback ],
+ url = s.url,
+ data = s.data,
+ replace = "$1" + jsonpCallback + "$2",
+ cleanUp = function() {
+ // Set callback back to previous value
+ window[ jsonpCallback ] = previous;
+ // Call if it was a function and we have a response
+ if ( responseContainer && jQuery.isFunction( previous ) ) {
+ window[ jsonpCallback ]( responseContainer[ 0 ] );
+ }
+ };
+
+ if ( s.jsonp !== false ) {
+ url = url.replace( jsre, replace );
+ if ( s.url === url ) {
+ if ( dataIsString ) {
+ data = data.replace( jsre, replace );
+ }
+ if ( s.data === data ) {
+ // Add callback manually
+ url += (/\?/.test( url ) ? "&" : "?") + s.jsonp + "=" + jsonpCallback;
+ }
+ }
+ }
+
+ s.url = url;
+ s.data = data;
+
+ // Install callback
+ window[ jsonpCallback ] = function( response ) {
+ responseContainer = [ response ];
+ };
+
+ // Install cleanUp function
+ jqXHR.then( cleanUp, cleanUp );
+
+ // Use data converter to retrieve json after script execution
+ s.converters["script json"] = function() {
+ if ( !responseContainer ) {
+ jQuery.error( jsonpCallback + " was not called" );
+ }
+ return responseContainer[ 0 ];
+ };
+
+ // force json dataType
+ s.dataTypes[ 0 ] = "json";
+
+ // Delegate to script
+ return "script";
+ }
+} );
+
+
+
+
+// Install script dataType
+jQuery.ajaxSetup({
+ accepts: {
+ script: "text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"
+ },
+ contents: {
+ script: /javascript|ecmascript/
+ },
+ converters: {
+ "text script": function( text ) {
+ jQuery.globalEval( text );
+ return text;
+ }
+ }
+});
+
+// Handle cache's special case and global
+jQuery.ajaxPrefilter( "script", function( s ) {
+ if ( s.cache === undefined ) {
+ s.cache = false;
+ }
+ if ( s.crossDomain ) {
+ s.type = "GET";
+ s.global = false;
+ }
+} );
+
+// Bind script tag hack transport
+jQuery.ajaxTransport( "script", function(s) {
+
+ // This transport only deals with cross domain requests
+ if ( s.crossDomain ) {
+
+ var script,
+ head = document.head || document.getElementsByTagName( "head" )[0] || document.documentElement;
+
+ return {
+
+ send: function( _, callback ) {
+
+ script = document.createElement( "script" );
+
+ script.async = "async";
+
+ if ( s.scriptCharset ) {
+ script.charset = s.scriptCharset;
+ }
+
+ script.src = s.url;
+
+ // Attach handlers for all browsers
+ script.onload = script.onreadystatechange = function( _, isAbort ) {
+
+ if ( !script.readyState || /loaded|complete/.test( script.readyState ) ) {
+
+ // Handle memory leak in IE
+ script.onload = script.onreadystatechange = null;
+
+ // Remove the script
+ if ( head && script.parentNode ) {
+ head.removeChild( script );
+ }
+
+ // Dereference the script
+ script = undefined;
+
+ // Callback if not abort
+ if ( !isAbort ) {
+ callback( 200, "success" );
+ }
+ }
+ };
+ // Use insertBefore instead of appendChild to circumvent an IE6 bug.
+ // This arises when a base node is used (#2709 and #4378).
+ head.insertBefore( script, head.firstChild );
+ },
+
+ abort: function() {
+ if ( script ) {
+ script.onload( 0, 1 );
+ }
+ }
+ };
+ }
+} );
+
+
+
+
+var // #5280: next active xhr id and list of active xhrs' callbacks
+ xhrId = jQuery.now(),
+ xhrCallbacks,
+
+ // XHR used to determine supports properties
+ testXHR;
+
+// #5280: Internet Explorer will keep connections alive if we don't abort on unload
+function xhrOnUnloadAbort() {
+ jQuery( window ).unload(function() {
+ // Abort all pending requests
+ for ( var key in xhrCallbacks ) {
+ xhrCallbacks[ key ]( 0, 1 );
+ }
+ });
+}
+
+// Functions to create xhrs
+function createStandardXHR() {
+ try {
+ return new window.XMLHttpRequest();
+ } catch( e ) {}
+}
+
+function createActiveXHR() {
+ try {
+ return new window.ActiveXObject( "Microsoft.XMLHTTP" );
+ } catch( e ) {}
+}
+
+// Create the request object
+// (This is still attached to ajaxSettings for backward compatibility)
+jQuery.ajaxSettings.xhr = window.ActiveXObject ?
+ /* Microsoft failed to properly
+ * implement the XMLHttpRequest in IE7 (can't request local files),
+ * so we use the ActiveXObject when it is available
+ * Additionally XMLHttpRequest can be disabled in IE7/IE8 so
+ * we need a fallback.
+ */
+ function() {
+ return !this.isLocal && createStandardXHR() || createActiveXHR();
+ } :
+ // For all other browsers, use the standard XMLHttpRequest object
+ createStandardXHR;
+
+// Test if we can create an xhr object
+testXHR = jQuery.ajaxSettings.xhr();
+jQuery.support.ajax = !!testXHR;
+
+// Does this browser support crossDomain XHR requests
+jQuery.support.cors = testXHR && ( "withCredentials" in testXHR );
+
+// No need for the temporary xhr anymore
+testXHR = undefined;
+
+// Create transport if the browser can provide an xhr
+if ( jQuery.support.ajax ) {
+
+ jQuery.ajaxTransport(function( s ) {
+ // Cross domain only allowed if supported through XMLHttpRequest
+ if ( !s.crossDomain || jQuery.support.cors ) {
+
+ var callback;
+
+ return {
+ send: function( headers, complete ) {
+
+ // Get a new xhr
+ var xhr = s.xhr(),
+ handle,
+ i;
+
+ // Open the socket
+ // Passing null username, generates a login popup on Opera (#2865)
+ if ( s.username ) {
+ xhr.open( s.type, s.url, s.async, s.username, s.password );
+ } else {
+ xhr.open( s.type, s.url, s.async );
+ }
+
+ // Apply custom fields if provided
+ if ( s.xhrFields ) {
+ for ( i in s.xhrFields ) {
+ xhr[ i ] = s.xhrFields[ i ];
+ }
+ }
+
+ // Override mime type if needed
+ if ( s.mimeType && xhr.overrideMimeType ) {
+ xhr.overrideMimeType( s.mimeType );
+ }
+
+ // X-Requested-With header
+ // For cross-domain requests, seeing as conditions for a preflight are
+ // akin to a jigsaw puzzle, we simply never set it to be sure.
+ // (it can always be set on a per-request basis or even using ajaxSetup)
+ // For same-domain requests, won't change header if already provided.
+ if ( !s.crossDomain && !headers["X-Requested-With"] ) {
+ headers[ "X-Requested-With" ] = "XMLHttpRequest";
+ }
+
+ // Need an extra try/catch for cross domain requests in Firefox 3
+ try {
+ for ( i in headers ) {
+ xhr.setRequestHeader( i, headers[ i ] );
+ }
+ } catch( _ ) {}
+
+ // Do send the request
+ // This may raise an exception which is actually
+ // handled in jQuery.ajax (so no try/catch here)
+ xhr.send( ( s.hasContent && s.data ) || null );
+
+ // Listener
+ callback = function( _, isAbort ) {
+
+ var status,
+ statusText,
+ responseHeaders,
+ responses,
+ xml;
+
+ // Firefox throws exceptions when accessing properties
+ // of an xhr when a network error occured
+ // http://helpful.knobs-dials.com/index.php/Component_returned_failure_code:_0x80040111_(NS_ERROR_NOT_AVAILABLE)
+ try {
+
+ // Was never called and is aborted or complete
+ if ( callback && ( isAbort || xhr.readyState === 4 ) ) {
+
+ // Only called once
+ callback = undefined;
+
+ // Do not keep as active anymore
+ if ( handle ) {
+ xhr.onreadystatechange = jQuery.noop;
+ delete xhrCallbacks[ handle ];
+ }
+
+ // If it's an abort
+ if ( isAbort ) {
+ // Abort it manually if needed
+ if ( xhr.readyState !== 4 ) {
+ xhr.abort();
+ }
+ } else {
+ status = xhr.status;
+ responseHeaders = xhr.getAllResponseHeaders();
+ responses = {};
+ xml = xhr.responseXML;
+
+ // Construct response list
+ if ( xml && xml.documentElement /* #4958 */ ) {
+ responses.xml = xml;
+ }
+ responses.text = xhr.responseText;
+
+ // Firefox throws an exception when accessing
+ // statusText for faulty cross-domain requests
+ try {
+ statusText = xhr.statusText;
+ } catch( e ) {
+ // We normalize with Webkit giving an empty statusText
+ statusText = "";
+ }
+
+ // Filter status for non standard behaviors
+
+ // If the request is local and we have data: assume a success
+ // (success with no data won't get notified, that's the best we
+ // can do given current implementations)
+ if ( !status && s.isLocal && !s.crossDomain ) {
+ status = responses.text ? 200 : 404;
+ // IE - #1450: sometimes returns 1223 when it should be 204
+ } else if ( status === 1223 ) {
+ status = 204;
+ }
+ }
+ }
+ } catch( firefoxAccessException ) {
+ if ( !isAbort ) {
+ complete( -1, firefoxAccessException );
+ }
+ }
+
+ // Call complete if needed
+ if ( responses ) {
+ complete( status, statusText, responses, responseHeaders );
+ }
+ };
+
+ // if we're in sync mode or it's in cache
+ // and has been retrieved directly (IE6 & IE7)
+ // we need to manually fire the callback
+ if ( !s.async || xhr.readyState === 4 ) {
+ callback();
+ } else {
+ // Create the active xhrs callbacks list if needed
+ // and attach the unload handler
+ if ( !xhrCallbacks ) {
+ xhrCallbacks = {};
+ xhrOnUnloadAbort();
+ }
+ // Add to list of active xhrs callbacks
+ handle = xhrId++;
+ xhr.onreadystatechange = xhrCallbacks[ handle ] = callback;
+ }
+ },
+
+ abort: function() {
+ if ( callback ) {
+ callback(0,1);
+ }
+ }
+ };
+ }
+ });
+}
+
+
+
+
+var elemdisplay = {},
+ rfxtypes = /^(?:toggle|show|hide)$/,
+ rfxnum = /^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,
+ timerId,
+ fxAttrs = [
+ // height animations
+ [ "height", "marginTop", "marginBottom", "paddingTop", "paddingBottom" ],
+ // width animations
+ [ "width", "marginLeft", "marginRight", "paddingLeft", "paddingRight" ],
+ // opacity animations
+ [ "opacity" ]
+ ];
+
+jQuery.fn.extend({
+ show: function( speed, easing, callback ) {
+ var elem, display;
+
+ if ( speed || speed === 0 ) {
+ return this.animate( genFx("show", 3), speed, easing, callback);
+
+ } else {
+ for ( var i = 0, j = this.length; i < j; i++ ) {
+ elem = this[i];
+ display = elem.style.display;
+
+ // Reset the inline display of this element to learn if it is
+ // being hidden by cascaded rules or not
+ if ( !jQuery._data(elem, "olddisplay") && display === "none" ) {
+ display = elem.style.display = "";
+ }
+
+ // Set elements which have been overridden with display: none
+ // in a stylesheet to whatever the default browser style is
+ // for such an element
+ if ( display === "" && jQuery.css( elem, "display" ) === "none" ) {
+ jQuery._data(elem, "olddisplay", defaultDisplay(elem.nodeName));
+ }
+ }
+
+ // Set the display of most of the elements in a second loop
+ // to avoid the constant reflow
+ for ( i = 0; i < j; i++ ) {
+ elem = this[i];
+ display = elem.style.display;
+
+ if ( display === "" || display === "none" ) {
+ elem.style.display = jQuery._data(elem, "olddisplay") || "";
+ }
+ }
+
+ return this;
+ }
+ },
+
+ hide: function( speed, easing, callback ) {
+ if ( speed || speed === 0 ) {
+ return this.animate( genFx("hide", 3), speed, easing, callback);
+
+ } else {
+ for ( var i = 0, j = this.length; i < j; i++ ) {
+ var display = jQuery.css( this[i], "display" );
+
+ if ( display !== "none" && !jQuery._data( this[i], "olddisplay" ) ) {
+ jQuery._data( this[i], "olddisplay", display );
+ }
+ }
+
+ // Set the display of the elements in a second loop
+ // to avoid the constant reflow
+ for ( i = 0; i < j; i++ ) {
+ this[i].style.display = "none";
+ }
+
+ return this;
+ }
+ },
+
+ // Save the old toggle function
+ _toggle: jQuery.fn.toggle,
+
+ toggle: function( fn, fn2, callback ) {
+ var bool = typeof fn === "boolean";
+
+ if ( jQuery.isFunction(fn) && jQuery.isFunction(fn2) ) {
+ this._toggle.apply( this, arguments );
+
+ } else if ( fn == null || bool ) {
+ this.each(function() {
+ var state = bool ? fn : jQuery(this).is(":hidden");
+ jQuery(this)[ state ? "show" : "hide" ]();
+ });
+
+ } else {
+ this.animate(genFx("toggle", 3), fn, fn2, callback);
+ }
+
+ return this;
+ },
+
+ fadeTo: function( speed, to, easing, callback ) {
+ return this.filter(":hidden").css("opacity", 0).show().end()
+ .animate({opacity: to}, speed, easing, callback);
+ },
+
+ animate: function( prop, speed, easing, callback ) {
+ var optall = jQuery.speed(speed, easing, callback);
+
+ if ( jQuery.isEmptyObject( prop ) ) {
+ return this.each( optall.complete );
+ }
+
+ return this[ optall.queue === false ? "each" : "queue" ](function() {
+ // XXX 'this' does not always have a nodeName when running the
+ // test suite
+
+ var opt = jQuery.extend({}, optall), p,
+ isElement = this.nodeType === 1,
+ hidden = isElement && jQuery(this).is(":hidden"),
+ self = this;
+
+ for ( p in prop ) {
+ var name = jQuery.camelCase( p );
+
+ if ( p !== name ) {
+ prop[ name ] = prop[ p ];
+ delete prop[ p ];
+ p = name;
+ }
+
+ if ( prop[p] === "hide" && hidden || prop[p] === "show" && !hidden ) {
+ return opt.complete.call(this);
+ }
+
+ if ( isElement && ( p === "height" || p === "width" ) ) {
+ // Make sure that nothing sneaks out
+ // Record all 3 overflow attributes because IE does not
+ // change the overflow attribute when overflowX and
+ // overflowY are set to the same value
+ opt.overflow = [ this.style.overflow, this.style.overflowX, this.style.overflowY ];
+
+ // Set display property to inline-block for height/width
+ // animations on inline elements that are having width/height
+ // animated
+ if ( jQuery.css( this, "display" ) === "inline" &&
+ jQuery.css( this, "float" ) === "none" ) {
+ if ( !jQuery.support.inlineBlockNeedsLayout ) {
+ this.style.display = "inline-block";
+
+ } else {
+ var display = defaultDisplay(this.nodeName);
+
+ // inline-level elements accept inline-block;
+ // block-level elements need to be inline with layout
+ if ( display === "inline" ) {
+ this.style.display = "inline-block";
+
+ } else {
+ this.style.display = "inline";
+ this.style.zoom = 1;
+ }
+ }
+ }
+ }
+
+ if ( jQuery.isArray( prop[p] ) ) {
+ // Create (if needed) and add to specialEasing
+ (opt.specialEasing = opt.specialEasing || {})[p] = prop[p][1];
+ prop[p] = prop[p][0];
+ }
+ }
+
+ if ( opt.overflow != null ) {
+ this.style.overflow = "hidden";
+ }
+
+ opt.curAnim = jQuery.extend({}, prop);
+
+ jQuery.each( prop, function( name, val ) {
+ var e = new jQuery.fx( self, opt, name );
+
+ if ( rfxtypes.test(val) ) {
+ e[ val === "toggle" ? hidden ? "show" : "hide" : val ]( prop );
+
+ } else {
+ var parts = rfxnum.exec(val),
+ start = e.cur();
+
+ if ( parts ) {
+ var end = parseFloat( parts[2] ),
+ unit = parts[3] || ( jQuery.cssNumber[ name ] ? "" : "px" );
+
+ // We need to compute starting value
+ if ( unit !== "px" ) {
+ jQuery.style( self, name, (end || 1) + unit);
+ start = ((end || 1) / e.cur()) * start;
+ jQuery.style( self, name, start + unit);
+ }
+
+ // If a +=/-= token was provided, we're doing a relative animation
+ if ( parts[1] ) {
+ end = ((parts[1] === "-=" ? -1 : 1) * end) + start;
+ }
+
+ e.custom( start, end, unit );
+
+ } else {
+ e.custom( start, val, "" );
+ }
+ }
+ });
+
+ // For JS strict compliance
+ return true;
+ });
+ },
+
+ stop: function( clearQueue, gotoEnd ) {
+ var timers = jQuery.timers;
+
+ if ( clearQueue ) {
+ this.queue([]);
+ }
+
+ this.each(function() {
+ // go in reverse order so anything added to the queue during the loop is ignored
+ for ( var i = timers.length - 1; i >= 0; i-- ) {
+ if ( timers[i].elem === this ) {
+ if (gotoEnd) {
+ // force the next step to be the last
+ timers[i](true);
+ }
+
+ timers.splice(i, 1);
+ }
+ }
+ });
+
+ // start the next in the queue if the last step wasn't forced
+ if ( !gotoEnd ) {
+ this.dequeue();
+ }
+
+ return this;
+ }
+
+});
+
+function genFx( type, num ) {
+ var obj = {};
+
+ jQuery.each( fxAttrs.concat.apply([], fxAttrs.slice(0,num)), function() {
+ obj[ this ] = type;
+ });
+
+ return obj;
+}
+
+// Generate shortcuts for custom animations
+jQuery.each({
+ slideDown: genFx("show", 1),
+ slideUp: genFx("hide", 1),
+ slideToggle: genFx("toggle", 1),
+ fadeIn: { opacity: "show" },
+ fadeOut: { opacity: "hide" },
+ fadeToggle: { opacity: "toggle" }
+}, function( name, props ) {
+ jQuery.fn[ name ] = function( speed, easing, callback ) {
+ return this.animate( props, speed, easing, callback );
+ };
+});
+
+jQuery.extend({
+ speed: function( speed, easing, fn ) {
+ var opt = speed && typeof speed === "object" ? jQuery.extend({}, speed) : {
+ complete: fn || !fn && easing ||
+ jQuery.isFunction( speed ) && speed,
+ duration: speed,
+ easing: fn && easing || easing && !jQuery.isFunction(easing) && easing
+ };
+
+ opt.duration = jQuery.fx.off ? 0 : typeof opt.duration === "number" ? opt.duration :
+ opt.duration in jQuery.fx.speeds ? jQuery.fx.speeds[opt.duration] : jQuery.fx.speeds._default;
+
+ // Queueing
+ opt.old = opt.complete;
+ opt.complete = function() {
+ if ( opt.queue !== false ) {
+ jQuery(this).dequeue();
+ }
+ if ( jQuery.isFunction( opt.old ) ) {
+ opt.old.call( this );
+ }
+ };
+
+ return opt;
+ },
+
+ easing: {
+ linear: function( p, n, firstNum, diff ) {
+ return firstNum + diff * p;
+ },
+ swing: function( p, n, firstNum, diff ) {
+ return ((-Math.cos(p*Math.PI)/2) + 0.5) * diff + firstNum;
+ }
+ },
+
+ timers: [],
+
+ fx: function( elem, options, prop ) {
+ this.options = options;
+ this.elem = elem;
+ this.prop = prop;
+
+ if ( !options.orig ) {
+ options.orig = {};
+ }
+ }
+
+});
+
+jQuery.fx.prototype = {
+ // Simple function for setting a style value
+ update: function() {
+ if ( this.options.step ) {
+ this.options.step.call( this.elem, this.now, this );
+ }
+
+ (jQuery.fx.step[this.prop] || jQuery.fx.step._default)( this );
+ },
+
+ // Get the current size
+ cur: function() {
+ if ( this.elem[this.prop] != null && (!this.elem.style || this.elem.style[this.prop] == null) ) {
+ return this.elem[ this.prop ];
+ }
+
+ var parsed,
+ r = jQuery.css( this.elem, this.prop );
+ // Empty strings, null, undefined and "auto" are converted to 0,
+ // complex values such as "rotate(1rad)" are returned as is,
+ // simple values such as "10px" are parsed to Float.
+ return isNaN( parsed = parseFloat( r ) ) ? !r || r === "auto" ? 0 : r : parsed;
+ },
+
+ // Start an animation from one number to another
+ custom: function( from, to, unit ) {
+ var self = this,
+ fx = jQuery.fx;
+
+ this.startTime = jQuery.now();
+ this.start = from;
+ this.end = to;
+ this.unit = unit || this.unit || ( jQuery.cssNumber[ this.prop ] ? "" : "px" );
+ this.now = this.start;
+ this.pos = this.state = 0;
+
+ function t( gotoEnd ) {
+ return self.step(gotoEnd);
+ }
+
+ t.elem = this.elem;
+
+ if ( t() && jQuery.timers.push(t) && !timerId ) {
+ timerId = setInterval(fx.tick, fx.interval);
+ }
+ },
+
+ // Simple 'show' function
+ show: function() {
+ // Remember where we started, so that we can go back to it later
+ this.options.orig[this.prop] = jQuery.style( this.elem, this.prop );
+ this.options.show = true;
+
+ // Begin the animation
+ // Make sure that we start at a small width/height to avoid any
+ // flash of content
+ this.custom(this.prop === "width" || this.prop === "height" ? 1 : 0, this.cur());
+
+ // Start by showing the element
+ jQuery( this.elem ).show();
+ },
+
+ // Simple 'hide' function
+ hide: function() {
+ // Remember where we started, so that we can go back to it later
+ this.options.orig[this.prop] = jQuery.style( this.elem, this.prop );
+ this.options.hide = true;
+
+ // Begin the animation
+ this.custom(this.cur(), 0);
+ },
+
+ // Each step of an animation
+ step: function( gotoEnd ) {
+ var t = jQuery.now(), done = true;
+
+ if ( gotoEnd || t >= this.options.duration + this.startTime ) {
+ this.now = this.end;
+ this.pos = this.state = 1;
+ this.update();
+
+ this.options.curAnim[ this.prop ] = true;
+
+ for ( var i in this.options.curAnim ) {
+ if ( this.options.curAnim[i] !== true ) {
+ done = false;
+ }
+ }
+
+ if ( done ) {
+ // Reset the overflow
+ if ( this.options.overflow != null && !jQuery.support.shrinkWrapBlocks ) {
+ var elem = this.elem,
+ options = this.options;
+
+ jQuery.each( [ "", "X", "Y" ], function (index, value) {
+ elem.style[ "overflow" + value ] = options.overflow[index];
+ } );
+ }
+
+ // Hide the element if the "hide" operation was done
+ if ( this.options.hide ) {
+ jQuery(this.elem).hide();
+ }
+
+ // Reset the properties, if the item has been hidden or shown
+ if ( this.options.hide || this.options.show ) {
+ for ( var p in this.options.curAnim ) {
+ jQuery.style( this.elem, p, this.options.orig[p] );
+ }
+ }
+
+ // Execute the complete function
+ this.options.complete.call( this.elem );
+ }
+
+ return false;
+
+ } else {
+ var n = t - this.startTime;
+ this.state = n / this.options.duration;
+
+ // Perform the easing function, defaults to swing
+ var specialEasing = this.options.specialEasing && this.options.specialEasing[this.prop];
+ var defaultEasing = this.options.easing || (jQuery.easing.swing ? "swing" : "linear");
+ this.pos = jQuery.easing[specialEasing || defaultEasing](this.state, n, 0, 1, this.options.duration);
+ this.now = this.start + ((this.end - this.start) * this.pos);
+
+ // Perform the next step of the animation
+ this.update();
+ }
+
+ return true;
+ }
+};
+
+jQuery.extend( jQuery.fx, {
+ tick: function() {
+ var timers = jQuery.timers;
+
+ for ( var i = 0; i < timers.length; i++ ) {
+ if ( !timers[i]() ) {
+ timers.splice(i--, 1);
+ }
+ }
+
+ if ( !timers.length ) {
+ jQuery.fx.stop();
+ }
+ },
+
+ interval: 13,
+
+ stop: function() {
+ clearInterval( timerId );
+ timerId = null;
+ },
+
+ speeds: {
+ slow: 600,
+ fast: 200,
+ // Default speed
+ _default: 400
+ },
+
+ step: {
+ opacity: function( fx ) {
+ jQuery.style( fx.elem, "opacity", fx.now );
+ },
+
+ _default: function( fx ) {
+ if ( fx.elem.style && fx.elem.style[ fx.prop ] != null ) {
+ fx.elem.style[ fx.prop ] = (fx.prop === "width" || fx.prop === "height" ? Math.max(0, fx.now) : fx.now) + fx.unit;
+ } else {
+ fx.elem[ fx.prop ] = fx.now;
+ }
+ }
+ }
+});
+
+if ( jQuery.expr && jQuery.expr.filters ) {
+ jQuery.expr.filters.animated = function( elem ) {
+ return jQuery.grep(jQuery.timers, function( fn ) {
+ return elem === fn.elem;
+ }).length;
+ };
+}
+
+function defaultDisplay( nodeName ) {
+ if ( !elemdisplay[ nodeName ] ) {
+ var elem = jQuery("<" + nodeName + ">").appendTo("body"),
+ display = elem.css("display");
+
+ elem.remove();
+
+ if ( display === "none" || display === "" ) {
+ display = "block";
+ }
+
+ elemdisplay[ nodeName ] = display;
+ }
+
+ return elemdisplay[ nodeName ];
+}
+
+
+
+
+var rtable = /^t(?:able|d|h)$/i,
+ rroot = /^(?:body|html)$/i;
+
+if ( "getBoundingClientRect" in document.documentElement ) {
+ jQuery.fn.offset = function( options ) {
+ var elem = this[0], box;
+
+ if ( options ) {
+ return this.each(function( i ) {
+ jQuery.offset.setOffset( this, options, i );
+ });
+ }
+
+ if ( !elem || !elem.ownerDocument ) {
+ return null;
+ }
+
+ if ( elem === elem.ownerDocument.body ) {
+ return jQuery.offset.bodyOffset( elem );
+ }
+
+ try {
+ box = elem.getBoundingClientRect();
+ } catch(e) {}
+
+ var doc = elem.ownerDocument,
+ docElem = doc.documentElement;
+
+ // Make sure we're not dealing with a disconnected DOM node
+ if ( !box || !jQuery.contains( docElem, elem ) ) {
+ return box ? { top: box.top, left: box.left } : { top: 0, left: 0 };
+ }
+
+ var body = doc.body,
+ win = getWindow(doc),
+ clientTop = docElem.clientTop || body.clientTop || 0,
+ clientLeft = docElem.clientLeft || body.clientLeft || 0,
+ scrollTop = win.pageYOffset || jQuery.support.boxModel && docElem.scrollTop || body.scrollTop,
+ scrollLeft = win.pageXOffset || jQuery.support.boxModel && docElem.scrollLeft || body.scrollLeft,
+ top = box.top + scrollTop - clientTop,
+ left = box.left + scrollLeft - clientLeft;
+
+ return { top: top, left: left };
+ };
+
+} else {
+ jQuery.fn.offset = function( options ) {
+ var elem = this[0];
+
+ if ( options ) {
+ return this.each(function( i ) {
+ jQuery.offset.setOffset( this, options, i );
+ });
+ }
+
+ if ( !elem || !elem.ownerDocument ) {
+ return null;
+ }
+
+ if ( elem === elem.ownerDocument.body ) {
+ return jQuery.offset.bodyOffset( elem );
+ }
+
+ jQuery.offset.initialize();
+
+ var computedStyle,
+ offsetParent = elem.offsetParent,
+ prevOffsetParent = elem,
+ doc = elem.ownerDocument,
+ docElem = doc.documentElement,
+ body = doc.body,
+ defaultView = doc.defaultView,
+ prevComputedStyle = defaultView ? defaultView.getComputedStyle( elem, null ) : elem.currentStyle,
+ top = elem.offsetTop,
+ left = elem.offsetLeft;
+
+ while ( (elem = elem.parentNode) && elem !== body && elem !== docElem ) {
+ if ( jQuery.offset.supportsFixedPosition && prevComputedStyle.position === "fixed" ) {
+ break;
+ }
+
+ computedStyle = defaultView ? defaultView.getComputedStyle(elem, null) : elem.currentStyle;
+ top -= elem.scrollTop;
+ left -= elem.scrollLeft;
+
+ if ( elem === offsetParent ) {
+ top += elem.offsetTop;
+ left += elem.offsetLeft;
+
+ if ( jQuery.offset.doesNotAddBorder && !(jQuery.offset.doesAddBorderForTableAndCells && rtable.test(elem.nodeName)) ) {
+ top += parseFloat( computedStyle.borderTopWidth ) || 0;
+ left += parseFloat( computedStyle.borderLeftWidth ) || 0;
+ }
+
+ prevOffsetParent = offsetParent;
+ offsetParent = elem.offsetParent;
+ }
+
+ if ( jQuery.offset.subtractsBorderForOverflowNotVisible && computedStyle.overflow !== "visible" ) {
+ top += parseFloat( computedStyle.borderTopWidth ) || 0;
+ left += parseFloat( computedStyle.borderLeftWidth ) || 0;
+ }
+
+ prevComputedStyle = computedStyle;
+ }
+
+ if ( prevComputedStyle.position === "relative" || prevComputedStyle.position === "static" ) {
+ top += body.offsetTop;
+ left += body.offsetLeft;
+ }
+
+ if ( jQuery.offset.supportsFixedPosition && prevComputedStyle.position === "fixed" ) {
+ top += Math.max( docElem.scrollTop, body.scrollTop );
+ left += Math.max( docElem.scrollLeft, body.scrollLeft );
+ }
+
+ return { top: top, left: left };
+ };
+}
+
+jQuery.offset = {
+ initialize: function() {
+ var body = document.body, container = document.createElement("div"), innerDiv, checkDiv, table, td, bodyMarginTop = parseFloat( jQuery.css(body, "marginTop") ) || 0,
+ html = "<div style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;'><div></div></div><table style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;' cellpadding='0' cellspacing='0'><tr><td></td></tr></table>";
+
+ jQuery.extend( container.style, { position: "absolute", top: 0, left: 0, margin: 0, border: 0, width: "1px", height: "1px", visibility: "hidden" } );
+
+ container.innerHTML = html;
+ body.insertBefore( container, body.firstChild );
+ innerDiv = container.firstChild;
+ checkDiv = innerDiv.firstChild;
+ td = innerDiv.nextSibling.firstChild.firstChild;
+
+ this.doesNotAddBorder = (checkDiv.offsetTop !== 5);
+ this.doesAddBorderForTableAndCells = (td.offsetTop === 5);
+
+ checkDiv.style.position = "fixed";
+ checkDiv.style.top = "20px";
+
+ // safari subtracts parent border width here which is 5px
+ this.supportsFixedPosition = (checkDiv.offsetTop === 20 || checkDiv.offsetTop === 15);
+ checkDiv.style.position = checkDiv.style.top = "";
+
+ innerDiv.style.overflow = "hidden";
+ innerDiv.style.position = "relative";
+
+ this.subtractsBorderForOverflowNotVisible = (checkDiv.offsetTop === -5);
+
+ this.doesNotIncludeMarginInBodyOffset = (body.offsetTop !== bodyMarginTop);
+
+ body.removeChild( container );
+ jQuery.offset.initialize = jQuery.noop;
+ },
+
+ bodyOffset: function( body ) {
+ var top = body.offsetTop,
+ left = body.offsetLeft;
+
+ jQuery.offset.initialize();
+
+ if ( jQuery.offset.doesNotIncludeMarginInBodyOffset ) {
+ top += parseFloat( jQuery.css(body, "marginTop") ) || 0;
+ left += parseFloat( jQuery.css(body, "marginLeft") ) || 0;
+ }
+
+ return { top: top, left: left };
+ },
+
+ setOffset: function( elem, options, i ) {
+ var position = jQuery.css( elem, "position" );
+
+ // set position first, in-case top/left are set even on static elem
+ if ( position === "static" ) {
+ elem.style.position = "relative";
+ }
+
+ var curElem = jQuery( elem ),
+ curOffset = curElem.offset(),
+ curCSSTop = jQuery.css( elem, "top" ),
+ curCSSLeft = jQuery.css( elem, "left" ),
+ calculatePosition = (position === "absolute" || position === "fixed") && jQuery.inArray('auto', [curCSSTop, curCSSLeft]) > -1,
+ props = {}, curPosition = {}, curTop, curLeft;
+
+ // need to be able to calculate position if either top or left is auto and position is either absolute or fixed
+ if ( calculatePosition ) {
+ curPosition = curElem.position();
+ }
+
+ curTop = calculatePosition ? curPosition.top : parseInt( curCSSTop, 10 ) || 0;
+ curLeft = calculatePosition ? curPosition.left : parseInt( curCSSLeft, 10 ) || 0;
+
+ if ( jQuery.isFunction( options ) ) {
+ options = options.call( elem, i, curOffset );
+ }
+
+ if (options.top != null) {
+ props.top = (options.top - curOffset.top) + curTop;
+ }
+ if (options.left != null) {
+ props.left = (options.left - curOffset.left) + curLeft;
+ }
+
+ if ( "using" in options ) {
+ options.using.call( elem, props );
+ } else {
+ curElem.css( props );
+ }
+ }
+};
+
+
+jQuery.fn.extend({
+ position: function() {
+ if ( !this[0] ) {
+ return null;
+ }
+
+ var elem = this[0],
+
+ // Get *real* offsetParent
+ offsetParent = this.offsetParent(),
+
+ // Get correct offsets
+ offset = this.offset(),
+ parentOffset = rroot.test(offsetParent[0].nodeName) ? { top: 0, left: 0 } : offsetParent.offset();
+
+ // Subtract element margins
+ // note: when an element has margin: auto the offsetLeft and marginLeft
+ // are the same in Safari causing offset.left to incorrectly be 0
+ offset.top -= parseFloat( jQuery.css(elem, "marginTop") ) || 0;
+ offset.left -= parseFloat( jQuery.css(elem, "marginLeft") ) || 0;
+
+ // Add offsetParent borders
+ parentOffset.top += parseFloat( jQuery.css(offsetParent[0], "borderTopWidth") ) || 0;
+ parentOffset.left += parseFloat( jQuery.css(offsetParent[0], "borderLeftWidth") ) || 0;
+
+ // Subtract the two offsets
+ return {
+ top: offset.top - parentOffset.top,
+ left: offset.left - parentOffset.left
+ };
+ },
+
+ offsetParent: function() {
+ return this.map(function() {
+ var offsetParent = this.offsetParent || document.body;
+ while ( offsetParent && (!rroot.test(offsetParent.nodeName) && jQuery.css(offsetParent, "position") === "static") ) {
+ offsetParent = offsetParent.offsetParent;
+ }
+ return offsetParent;
+ });
+ }
+});
+
+
+// Create scrollLeft and scrollTop methods
+jQuery.each( ["Left", "Top"], function( i, name ) {
+ var method = "scroll" + name;
+
+ jQuery.fn[ method ] = function(val) {
+ var elem = this[0], win;
+
+ if ( !elem ) {
+ return null;
+ }
+
+ if ( val !== undefined ) {
+ // Set the scroll offset
+ return this.each(function() {
+ win = getWindow( this );
+
+ if ( win ) {
+ win.scrollTo(
+ !i ? val : jQuery(win).scrollLeft(),
+ i ? val : jQuery(win).scrollTop()
+ );
+
+ } else {
+ this[ method ] = val;
+ }
+ });
+ } else {
+ win = getWindow( elem );
+
+ // Return the scroll offset
+ return win ? ("pageXOffset" in win) ? win[ i ? "pageYOffset" : "pageXOffset" ] :
+ jQuery.support.boxModel && win.document.documentElement[ method ] ||
+ win.document.body[ method ] :
+ elem[ method ];
+ }
+ };
+});
+
+function getWindow( elem ) {
+ return jQuery.isWindow( elem ) ?
+ elem :
+ elem.nodeType === 9 ?
+ elem.defaultView || elem.parentWindow :
+ false;
+}
+
+
+
+
+// Create innerHeight, innerWidth, outerHeight and outerWidth methods
+jQuery.each([ "Height", "Width" ], function( i, name ) {
+
+ var type = name.toLowerCase();
+
+ // innerHeight and innerWidth
+ jQuery.fn["inner" + name] = function() {
+ return this[0] ?
+ parseFloat( jQuery.css( this[0], type, "padding" ) ) :
+ null;
+ };
+
+ // outerHeight and outerWidth
+ jQuery.fn["outer" + name] = function( margin ) {
+ return this[0] ?
+ parseFloat( jQuery.css( this[0], type, margin ? "margin" : "border" ) ) :
+ null;
+ };
+
+ jQuery.fn[ type ] = function( size ) {
+ // Get window width or height
+ var elem = this[0];
+ if ( !elem ) {
+ return size == null ? null : this;
+ }
+
+ if ( jQuery.isFunction( size ) ) {
+ return this.each(function( i ) {
+ var self = jQuery( this );
+ self[ type ]( size.call( this, i, self[ type ]() ) );
+ });
+ }
+
+ if ( jQuery.isWindow( elem ) ) {
+ // Everyone else use document.documentElement or document.body depending on Quirks vs Standards mode
+ // 3rd condition allows Nokia support, as it supports the docElem prop but not CSS1Compat
+ var docElemProp = elem.document.documentElement[ "client" + name ];
+ return elem.document.compatMode === "CSS1Compat" && docElemProp ||
+ elem.document.body[ "client" + name ] || docElemProp;
+
+ // Get document width or height
+ } else if ( elem.nodeType === 9 ) {
+ // Either scroll[Width/Height] or offset[Width/Height], whichever is greater
+ return Math.max(
+ elem.documentElement["client" + name],
+ elem.body["scroll" + name], elem.documentElement["scroll" + name],
+ elem.body["offset" + name], elem.documentElement["offset" + name]
+ );
+
+ // Get or set width or height on the element
+ } else if ( size === undefined ) {
+ var orig = jQuery.css( elem, type ),
+ ret = parseFloat( orig );
+
+ return jQuery.isNaN( ret ) ? orig : ret;
+
+ // Set the width or height on the element (default to pixels if value is unitless)
+ } else {
+ return this.css( type, typeof size === "string" ? size : size + "px" );
+ }
+ };
+
+});
+
+
+window.jQuery = window.$ = jQuery;
+})(window); \ No newline at end of file
diff --git a/bug/bug/jquery-validation-1.8.1/lib/jquery-1.6.1.js b/bug/bug/jquery-validation-1.8.1/lib/jquery-1.6.1.js
new file mode 100644
index 0000000..a2bf530
--- /dev/null
+++ b/bug/bug/jquery-validation-1.8.1/lib/jquery-1.6.1.js
@@ -0,0 +1,8936 @@
+/*!
+ * jQuery JavaScript Library v1.6.1
+ * http://jquery.com/
+ *
+ * Copyright 2011, John Resig
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * Includes Sizzle.js
+ * http://sizzlejs.com/
+ * Copyright 2011, The Dojo Foundation
+ * Released under the MIT, BSD, and GPL Licenses.
+ *
+ * Date: Thu May 12 15:04:36 2011 -0400
+ */
+(function( window, undefined ) {
+
+// Use the correct document accordingly with window argument (sandbox)
+var document = window.document,
+ navigator = window.navigator,
+ location = window.location;
+var jQuery = (function() {
+
+// Define a local copy of jQuery
+var jQuery = function( selector, context ) {
+ // The jQuery object is actually just the init constructor 'enhanced'
+ return new jQuery.fn.init( selector, context, rootjQuery );
+ },
+
+ // Map over jQuery in case of overwrite
+ _jQuery = window.jQuery,
+
+ // Map over the $ in case of overwrite
+ _$ = window.$,
+
+ // A central reference to the root jQuery(document)
+ rootjQuery,
+
+ // A simple way to check for HTML strings or ID strings
+ // (both of which we optimize for)
+ quickExpr = /^(?:[^<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,
+
+ // Check if a string has a non-whitespace character in it
+ rnotwhite = /\S/,
+
+ // Used for trimming whitespace
+ trimLeft = /^\s+/,
+ trimRight = /\s+$/,
+
+ // Check for digits
+ rdigit = /\d/,
+
+ // Match a standalone tag
+ rsingleTag = /^<(\w+)\s*\/?>(?:<\/\1>)?$/,
+
+ // JSON RegExp
+ rvalidchars = /^[\],:{}\s]*$/,
+ rvalidescape = /\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,
+ rvalidtokens = /"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,
+ rvalidbraces = /(?:^|:|,)(?:\s*\[)+/g,
+
+ // Useragent RegExp
+ rwebkit = /(webkit)[ \/]([\w.]+)/,
+ ropera = /(opera)(?:.*version)?[ \/]([\w.]+)/,
+ rmsie = /(msie) ([\w.]+)/,
+ rmozilla = /(mozilla)(?:.*? rv:([\w.]+))?/,
+
+ // Keep a UserAgent string for use with jQuery.browser
+ userAgent = navigator.userAgent,
+
+ // For matching the engine and version of the browser
+ browserMatch,
+
+ // The deferred used on DOM ready
+ readyList,
+
+ // The ready event handler
+ DOMContentLoaded,
+
+ // Save a reference to some core methods
+ toString = Object.prototype.toString,
+ hasOwn = Object.prototype.hasOwnProperty,
+ push = Array.prototype.push,
+ slice = Array.prototype.slice,
+ trim = String.prototype.trim,
+ indexOf = Array.prototype.indexOf,
+
+ // [[Class]] -> type pairs
+ class2type = {};
+
+jQuery.fn = jQuery.prototype = {
+ constructor: jQuery,
+ init: function( selector, context, rootjQuery ) {
+ var match, elem, ret, doc;
+
+ // Handle $(""), $(null), or $(undefined)
+ if ( !selector ) {
+ return this;
+ }
+
+ // Handle $(DOMElement)
+ if ( selector.nodeType ) {
+ this.context = this[0] = selector;
+ this.length = 1;
+ return this;
+ }
+
+ // The body element only exists once, optimize finding it
+ if ( selector === "body" && !context && document.body ) {
+ this.context = document;
+ this[0] = document.body;
+ this.selector = selector;
+ this.length = 1;
+ return this;
+ }
+
+ // Handle HTML strings
+ if ( typeof selector === "string" ) {
+ // Are we dealing with HTML string or an ID?
+ if ( selector.charAt(0) === "<" && selector.charAt( selector.length - 1 ) === ">" && selector.length >= 3 ) {
+ // Assume that strings that start and end with <> are HTML and skip the regex check
+ match = [ null, selector, null ];
+
+ } else {
+ match = quickExpr.exec( selector );
+ }
+
+ // Verify a match, and that no context was specified for #id
+ if ( match && (match[1] || !context) ) {
+
+ // HANDLE: $(html) -> $(array)
+ if ( match[1] ) {
+ context = context instanceof jQuery ? context[0] : context;
+ doc = (context ? context.ownerDocument || context : document);
+
+ // If a single string is passed in and it's a single tag
+ // just do a createElement and skip the rest
+ ret = rsingleTag.exec( selector );
+
+ if ( ret ) {
+ if ( jQuery.isPlainObject( context ) ) {
+ selector = [ document.createElement( ret[1] ) ];
+ jQuery.fn.attr.call( selector, context, true );
+
+ } else {
+ selector = [ doc.createElement( ret[1] ) ];
+ }
+
+ } else {
+ ret = jQuery.buildFragment( [ match[1] ], [ doc ] );
+ selector = (ret.cacheable ? jQuery.clone(ret.fragment) : ret.fragment).childNodes;
+ }
+
+ return jQuery.merge( this, selector );
+
+ // HANDLE: $("#id")
+ } else {
+ elem = document.getElementById( match[2] );
+
+ // Check parentNode to catch when Blackberry 4.6 returns
+ // nodes that are no longer in the document #6963
+ if ( elem && elem.parentNode ) {
+ // Handle the case where IE and Opera return items
+ // by name instead of ID
+ if ( elem.id !== match[2] ) {
+ return rootjQuery.find( selector );
+ }
+
+ // Otherwise, we inject the element directly into the jQuery object
+ this.length = 1;
+ this[0] = elem;
+ }
+
+ this.context = document;
+ this.selector = selector;
+ return this;
+ }
+
+ // HANDLE: $(expr, $(...))
+ } else if ( !context || context.jquery ) {
+ return (context || rootjQuery).find( selector );
+
+ // HANDLE: $(expr, context)
+ // (which is just equivalent to: $(context).find(expr)
+ } else {
+ return this.constructor( context ).find( selector );
+ }
+
+ // HANDLE: $(function)
+ // Shortcut for document ready
+ } else if ( jQuery.isFunction( selector ) ) {
+ return rootjQuery.ready( selector );
+ }
+
+ if (selector.selector !== undefined) {
+ this.selector = selector.selector;
+ this.context = selector.context;
+ }
+
+ return jQuery.makeArray( selector, this );
+ },
+
+ // Start with an empty selector
+ selector: "",
+
+ // The current version of jQuery being used
+ jquery: "1.6.1",
+
+ // The default length of a jQuery object is 0
+ length: 0,
+
+ // The number of elements contained in the matched element set
+ size: function() {
+ return this.length;
+ },
+
+ toArray: function() {
+ return slice.call( this, 0 );
+ },
+
+ // Get the Nth element in the matched element set OR
+ // Get the whole matched element set as a clean array
+ get: function( num ) {
+ return num == null ?
+
+ // Return a 'clean' array
+ this.toArray() :
+
+ // Return just the object
+ ( num < 0 ? this[ this.length + num ] : this[ num ] );
+ },
+
+ // Take an array of elements and push it onto the stack
+ // (returning the new matched element set)
+ pushStack: function( elems, name, selector ) {
+ // Build a new jQuery matched element set
+ var ret = this.constructor();
+
+ if ( jQuery.isArray( elems ) ) {
+ push.apply( ret, elems );
+
+ } else {
+ jQuery.merge( ret, elems );
+ }
+
+ // Add the old object onto the stack (as a reference)
+ ret.prevObject = this;
+
+ ret.context = this.context;
+
+ if ( name === "find" ) {
+ ret.selector = this.selector + (this.selector ? " " : "") + selector;
+ } else if ( name ) {
+ ret.selector = this.selector + "." + name + "(" + selector + ")";
+ }
+
+ // Return the newly-formed element set
+ return ret;
+ },
+
+ // Execute a callback for every element in the matched set.
+ // (You can seed the arguments with an array of args, but this is
+ // only used internally.)
+ each: function( callback, args ) {
+ return jQuery.each( this, callback, args );
+ },
+
+ ready: function( fn ) {
+ // Attach the listeners
+ jQuery.bindReady();
+
+ // Add the callback
+ readyList.done( fn );
+
+ return this;
+ },
+
+ eq: function( i ) {
+ return i === -1 ?
+ this.slice( i ) :
+ this.slice( i, +i + 1 );
+ },
+
+ first: function() {
+ return this.eq( 0 );
+ },
+
+ last: function() {
+ return this.eq( -1 );
+ },
+
+ slice: function() {
+ return this.pushStack( slice.apply( this, arguments ),
+ "slice", slice.call(arguments).join(",") );
+ },
+
+ map: function( callback ) {
+ return this.pushStack( jQuery.map(this, function( elem, i ) {
+ return callback.call( elem, i, elem );
+ }));
+ },
+
+ end: function() {
+ return this.prevObject || this.constructor(null);
+ },
+
+ // For internal use only.
+ // Behaves like an Array's method, not like a jQuery method.
+ push: push,
+ sort: [].sort,
+ splice: [].splice
+};
+
+// Give the init function the jQuery prototype for later instantiation
+jQuery.fn.init.prototype = jQuery.fn;
+
+jQuery.extend = jQuery.fn.extend = function() {
+ var options, name, src, copy, copyIsArray, clone,
+ target = arguments[0] || {},
+ i = 1,
+ length = arguments.length,
+ deep = false;
+
+ // Handle a deep copy situation
+ if ( typeof target === "boolean" ) {
+ deep = target;
+ target = arguments[1] || {};
+ // skip the boolean and the target
+ i = 2;
+ }
+
+ // Handle case when target is a string or something (possible in deep copy)
+ if ( typeof target !== "object" && !jQuery.isFunction(target) ) {
+ target = {};
+ }
+
+ // extend jQuery itself if only one argument is passed
+ if ( length === i ) {
+ target = this;
+ --i;
+ }
+
+ for ( ; i < length; i++ ) {
+ // Only deal with non-null/undefined values
+ if ( (options = arguments[ i ]) != null ) {
+ // Extend the base object
+ for ( name in options ) {
+ src = target[ name ];
+ copy = options[ name ];
+
+ // Prevent never-ending loop
+ if ( target === copy ) {
+ continue;
+ }
+
+ // Recurse if we're merging plain objects or arrays
+ if ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) {
+ if ( copyIsArray ) {
+ copyIsArray = false;
+ clone = src && jQuery.isArray(src) ? src : [];
+
+ } else {
+ clone = src && jQuery.isPlainObject(src) ? src : {};
+ }
+
+ // Never move original objects, clone them
+ target[ name ] = jQuery.extend( deep, clone, copy );
+
+ // Don't bring in undefined values
+ } else if ( copy !== undefined ) {
+ target[ name ] = copy;
+ }
+ }
+ }
+ }
+
+ // Return the modified object
+ return target;
+};
+
+jQuery.extend({
+ noConflict: function( deep ) {
+ if ( window.$ === jQuery ) {
+ window.$ = _$;
+ }
+
+ if ( deep && window.jQuery === jQuery ) {
+ window.jQuery = _jQuery;
+ }
+
+ return jQuery;
+ },
+
+ // Is the DOM ready to be used? Set to true once it occurs.
+ isReady: false,
+
+ // A counter to track how many items to wait for before
+ // the ready event fires. See #6781
+ readyWait: 1,
+
+ // Hold (or release) the ready event
+ holdReady: function( hold ) {
+ if ( hold ) {
+ jQuery.readyWait++;
+ } else {
+ jQuery.ready( true );
+ }
+ },
+
+ // Handle when the DOM is ready
+ ready: function( wait ) {
+ // Either a released hold or an DOMready/load event and not yet ready
+ if ( (wait === true && !--jQuery.readyWait) || (wait !== true && !jQuery.isReady) ) {
+ // Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).
+ if ( !document.body ) {
+ return setTimeout( jQuery.ready, 1 );
+ }
+
+ // Remember that the DOM is ready
+ jQuery.isReady = true;
+
+ // If a normal DOM Ready event fired, decrement, and wait if need be
+ if ( wait !== true && --jQuery.readyWait > 0 ) {
+ return;
+ }
+
+ // If there are functions bound, to execute
+ readyList.resolveWith( document, [ jQuery ] );
+
+ // Trigger any bound ready events
+ if ( jQuery.fn.trigger ) {
+ jQuery( document ).trigger( "ready" ).unbind( "ready" );
+ }
+ }
+ },
+
+ bindReady: function() {
+ if ( readyList ) {
+ return;
+ }
+
+ readyList = jQuery._Deferred();
+
+ // Catch cases where $(document).ready() is called after the
+ // browser event has already occurred.
+ if ( document.readyState === "complete" ) {
+ // Handle it asynchronously to allow scripts the opportunity to delay ready
+ return setTimeout( jQuery.ready, 1 );
+ }
+
+ // Mozilla, Opera and webkit nightlies currently support this event
+ if ( document.addEventListener ) {
+ // Use the handy event callback
+ document.addEventListener( "DOMContentLoaded", DOMContentLoaded, false );
+
+ // A fallback to window.onload, that will always work
+ window.addEventListener( "load", jQuery.ready, false );
+
+ // If IE event model is used
+ } else if ( document.attachEvent ) {
+ // ensure firing before onload,
+ // maybe late but safe also for iframes
+ document.attachEvent( "onreadystatechange", DOMContentLoaded );
+
+ // A fallback to window.onload, that will always work
+ window.attachEvent( "onload", jQuery.ready );
+
+ // If IE and not a frame
+ // continually check to see if the document is ready
+ var toplevel = false;
+
+ try {
+ toplevel = window.frameElement == null;
+ } catch(e) {}
+
+ if ( document.documentElement.doScroll && toplevel ) {
+ doScrollCheck();
+ }
+ }
+ },
+
+ // See test/unit/core.js for details concerning isFunction.
+ // Since version 1.3, DOM methods and functions like alert
+ // aren't supported. They return false on IE (#2968).
+ isFunction: function( obj ) {
+ return jQuery.type(obj) === "function";
+ },
+
+ isArray: Array.isArray || function( obj ) {
+ return jQuery.type(obj) === "array";
+ },
+
+ // A crude way of determining if an object is a window
+ isWindow: function( obj ) {
+ return obj && typeof obj === "object" && "setInterval" in obj;
+ },
+
+ isNaN: function( obj ) {
+ return obj == null || !rdigit.test( obj ) || isNaN( obj );
+ },
+
+ type: function( obj ) {
+ return obj == null ?
+ String( obj ) :
+ class2type[ toString.call(obj) ] || "object";
+ },
+
+ isPlainObject: function( obj ) {
+ // Must be an Object.
+ // Because of IE, we also have to check the presence of the constructor property.
+ // Make sure that DOM nodes and window objects don't pass through, as well
+ if ( !obj || jQuery.type(obj) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) {
+ return false;
+ }
+
+ // Not own constructor property must be Object
+ if ( obj.constructor &&
+ !hasOwn.call(obj, "constructor") &&
+ !hasOwn.call(obj.constructor.prototype, "isPrototypeOf") ) {
+ return false;
+ }
+
+ // Own properties are enumerated firstly, so to speed up,
+ // if last one is own, then all properties are own.
+
+ var key;
+ for ( key in obj ) {}
+
+ return key === undefined || hasOwn.call( obj, key );
+ },
+
+ isEmptyObject: function( obj ) {
+ for ( var name in obj ) {
+ return false;
+ }
+ return true;
+ },
+
+ error: function( msg ) {
+ throw msg;
+ },
+
+ parseJSON: function( data ) {
+ if ( typeof data !== "string" || !data ) {
+ return null;
+ }
+
+ // Make sure leading/trailing whitespace is removed (IE can't handle it)
+ data = jQuery.trim( data );
+
+ // Attempt to parse using the native JSON parser first
+ if ( window.JSON && window.JSON.parse ) {
+ return window.JSON.parse( data );
+ }
+
+ // Make sure the incoming data is actual JSON
+ // Logic borrowed from http://json.org/json2.js
+ if ( rvalidchars.test( data.replace( rvalidescape, "@" )
+ .replace( rvalidtokens, "]" )
+ .replace( rvalidbraces, "")) ) {
+
+ return (new Function( "return " + data ))();
+
+ }
+ jQuery.error( "Invalid JSON: " + data );
+ },
+
+ // Cross-browser xml parsing
+ // (xml & tmp used internally)
+ parseXML: function( data , xml , tmp ) {
+
+ if ( window.DOMParser ) { // Standard
+ tmp = new DOMParser();
+ xml = tmp.parseFromString( data , "text/xml" );
+ } else { // IE
+ xml = new ActiveXObject( "Microsoft.XMLDOM" );
+ xml.async = "false";
+ xml.loadXML( data );
+ }
+
+ tmp = xml.documentElement;
+
+ if ( ! tmp || ! tmp.nodeName || tmp.nodeName === "parsererror" ) {
+ jQuery.error( "Invalid XML: " + data );
+ }
+
+ return xml;
+ },
+
+ noop: function() {},
+
+ // Evaluates a script in a global context
+ // Workarounds based on findings by Jim Driscoll
+ // http://weblogs.java.net/blog/driscoll/archive/2009/09/08/eval-javascript-global-context
+ globalEval: function( data ) {
+ if ( data && rnotwhite.test( data ) ) {
+ // We use execScript on Internet Explorer
+ // We use an anonymous function so that context is window
+ // rather than jQuery in Firefox
+ ( window.execScript || function( data ) {
+ window[ "eval" ].call( window, data );
+ } )( data );
+ }
+ },
+
+ nodeName: function( elem, name ) {
+ return elem.nodeName && elem.nodeName.toUpperCase() === name.toUpperCase();
+ },
+
+ // args is for internal usage only
+ each: function( object, callback, args ) {
+ var name, i = 0,
+ length = object.length,
+ isObj = length === undefined || jQuery.isFunction( object );
+
+ if ( args ) {
+ if ( isObj ) {
+ for ( name in object ) {
+ if ( callback.apply( object[ name ], args ) === false ) {
+ break;
+ }
+ }
+ } else {
+ for ( ; i < length; ) {
+ if ( callback.apply( object[ i++ ], args ) === false ) {
+ break;
+ }
+ }
+ }
+
+ // A special, fast, case for the most common use of each
+ } else {
+ if ( isObj ) {
+ for ( name in object ) {
+ if ( callback.call( object[ name ], name, object[ name ] ) === false ) {
+ break;
+ }
+ }
+ } else {
+ for ( ; i < length; ) {
+ if ( callback.call( object[ i ], i, object[ i++ ] ) === false ) {
+ break;
+ }
+ }
+ }
+ }
+
+ return object;
+ },
+
+ // Use native String.trim function wherever possible
+ trim: trim ?
+ function( text ) {
+ return text == null ?
+ "" :
+ trim.call( text );
+ } :
+
+ // Otherwise use our own trimming functionality
+ function( text ) {
+ return text == null ?
+ "" :
+ text.toString().replace( trimLeft, "" ).replace( trimRight, "" );
+ },
+
+ // results is for internal usage only
+ makeArray: function( array, results ) {
+ var ret = results || [];
+
+ if ( array != null ) {
+ // The window, strings (and functions) also have 'length'
+ // The extra typeof function check is to prevent crashes
+ // in Safari 2 (See: #3039)
+ // Tweaked logic slightly to handle Blackberry 4.7 RegExp issues #6930
+ var type = jQuery.type( array );
+
+ if ( array.length == null || type === "string" || type === "function" || type === "regexp" || jQuery.isWindow( array ) ) {
+ push.call( ret, array );
+ } else {
+ jQuery.merge( ret, array );
+ }
+ }
+
+ return ret;
+ },
+
+ inArray: function( elem, array ) {
+
+ if ( indexOf ) {
+ return indexOf.call( array, elem );
+ }
+
+ for ( var i = 0, length = array.length; i < length; i++ ) {
+ if ( array[ i ] === elem ) {
+ return i;
+ }
+ }
+
+ return -1;
+ },
+
+ merge: function( first, second ) {
+ var i = first.length,
+ j = 0;
+
+ if ( typeof second.length === "number" ) {
+ for ( var l = second.length; j < l; j++ ) {
+ first[ i++ ] = second[ j ];
+ }
+
+ } else {
+ while ( second[j] !== undefined ) {
+ first[ i++ ] = second[ j++ ];
+ }
+ }
+
+ first.length = i;
+
+ return first;
+ },
+
+ grep: function( elems, callback, inv ) {
+ var ret = [], retVal;
+ inv = !!inv;
+
+ // Go through the array, only saving the items
+ // that pass the validator function
+ for ( var i = 0, length = elems.length; i < length; i++ ) {
+ retVal = !!callback( elems[ i ], i );
+ if ( inv !== retVal ) {
+ ret.push( elems[ i ] );
+ }
+ }
+
+ return ret;
+ },
+
+ // arg is for internal usage only
+ map: function( elems, callback, arg ) {
+ var value, key, ret = [],
+ i = 0,
+ length = elems.length,
+ // jquery objects are treated as arrays
+ isArray = elems instanceof jQuery || length !== undefined && typeof length === "number" && ( ( length > 0 && elems[ 0 ] && elems[ length -1 ] ) || length === 0 || jQuery.isArray( elems ) ) ;
+
+ // Go through the array, translating each of the items to their
+ if ( isArray ) {
+ for ( ; i < length; i++ ) {
+ value = callback( elems[ i ], i, arg );
+
+ if ( value != null ) {
+ ret[ ret.length ] = value;
+ }
+ }
+
+ // Go through every key on the object,
+ } else {
+ for ( key in elems ) {
+ value = callback( elems[ key ], key, arg );
+
+ if ( value != null ) {
+ ret[ ret.length ] = value;
+ }
+ }
+ }
+
+ // Flatten any nested arrays
+ return ret.concat.apply( [], ret );
+ },
+
+ // A global GUID counter for objects
+ guid: 1,
+
+ // Bind a function to a context, optionally partially applying any
+ // arguments.
+ proxy: function( fn, context ) {
+ if ( typeof context === "string" ) {
+ var tmp = fn[ context ];
+ context = fn;
+ fn = tmp;
+ }
+
+ // Quick check to determine if target is callable, in the spec
+ // this throws a TypeError, but we will just return undefined.
+ if ( !jQuery.isFunction( fn ) ) {
+ return undefined;
+ }
+
+ // Simulated bind
+ var args = slice.call( arguments, 2 ),
+ proxy = function() {
+ return fn.apply( context, args.concat( slice.call( arguments ) ) );
+ };
+
+ // Set the guid of unique handler to the same of original handler, so it can be removed
+ proxy.guid = fn.guid = fn.guid || proxy.guid || jQuery.guid++;
+
+ return proxy;
+ },
+
+ // Mutifunctional method to get and set values to a collection
+ // The value/s can be optionally by executed if its a function
+ access: function( elems, key, value, exec, fn, pass ) {
+ var length = elems.length;
+
+ // Setting many attributes
+ if ( typeof key === "object" ) {
+ for ( var k in key ) {
+ jQuery.access( elems, k, key[k], exec, fn, value );
+ }
+ return elems;
+ }
+
+ // Setting one attribute
+ if ( value !== undefined ) {
+ // Optionally, function values get executed if exec is true
+ exec = !pass && exec && jQuery.isFunction(value);
+
+ for ( var i = 0; i < length; i++ ) {
+ fn( elems[i], key, exec ? value.call( elems[i], i, fn( elems[i], key ) ) : value, pass );
+ }
+
+ return elems;
+ }
+
+ // Getting an attribute
+ return length ? fn( elems[0], key ) : undefined;
+ },
+
+ now: function() {
+ return (new Date()).getTime();
+ },
+
+ // Use of jQuery.browser is frowned upon.
+ // More details: http://docs.jquery.com/Utilities/jQuery.browser
+ uaMatch: function( ua ) {
+ ua = ua.toLowerCase();
+
+ var match = rwebkit.exec( ua ) ||
+ ropera.exec( ua ) ||
+ rmsie.exec( ua ) ||
+ ua.indexOf("compatible") < 0 && rmozilla.exec( ua ) ||
+ [];
+
+ return { browser: match[1] || "", version: match[2] || "0" };
+ },
+
+ sub: function() {
+ function jQuerySub( selector, context ) {
+ return new jQuerySub.fn.init( selector, context );
+ }
+ jQuery.extend( true, jQuerySub, this );
+ jQuerySub.superclass = this;
+ jQuerySub.fn = jQuerySub.prototype = this();
+ jQuerySub.fn.constructor = jQuerySub;
+ jQuerySub.sub = this.sub;
+ jQuerySub.fn.init = function init( selector, context ) {
+ if ( context && context instanceof jQuery && !(context instanceof jQuerySub) ) {
+ context = jQuerySub( context );
+ }
+
+ return jQuery.fn.init.call( this, selector, context, rootjQuerySub );
+ };
+ jQuerySub.fn.init.prototype = jQuerySub.fn;
+ var rootjQuerySub = jQuerySub(document);
+ return jQuerySub;
+ },
+
+ browser: {}
+});
+
+// Populate the class2type map
+jQuery.each("Boolean Number String Function Array Date RegExp Object".split(" "), function(i, name) {
+ class2type[ "[object " + name + "]" ] = name.toLowerCase();
+});
+
+browserMatch = jQuery.uaMatch( userAgent );
+if ( browserMatch.browser ) {
+ jQuery.browser[ browserMatch.browser ] = true;
+ jQuery.browser.version = browserMatch.version;
+}
+
+// Deprecated, use jQuery.browser.webkit instead
+if ( jQuery.browser.webkit ) {
+ jQuery.browser.safari = true;
+}
+
+// IE doesn't match non-breaking spaces with \s
+if ( rnotwhite.test( "\xA0" ) ) {
+ trimLeft = /^[\s\xA0]+/;
+ trimRight = /[\s\xA0]+$/;
+}
+
+// All jQuery objects should point back to these
+rootjQuery = jQuery(document);
+
+// Cleanup functions for the document ready method
+if ( document.addEventListener ) {
+ DOMContentLoaded = function() {
+ document.removeEventListener( "DOMContentLoaded", DOMContentLoaded, false );
+ jQuery.ready();
+ };
+
+} else if ( document.attachEvent ) {
+ DOMContentLoaded = function() {
+ // Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).
+ if ( document.readyState === "complete" ) {
+ document.detachEvent( "onreadystatechange", DOMContentLoaded );
+ jQuery.ready();
+ }
+ };
+}
+
+// The DOM ready check for Internet Explorer
+function doScrollCheck() {
+ if ( jQuery.isReady ) {
+ return;
+ }
+
+ try {
+ // If IE is used, use the trick by Diego Perini
+ // http://javascript.nwbox.com/IEContentLoaded/
+ document.documentElement.doScroll("left");
+ } catch(e) {
+ setTimeout( doScrollCheck, 1 );
+ return;
+ }
+
+ // and execute any waiting functions
+ jQuery.ready();
+}
+
+// Expose jQuery to the global object
+return jQuery;
+
+})();
+
+
+var // Promise methods
+ promiseMethods = "done fail isResolved isRejected promise then always pipe".split( " " ),
+ // Static reference to slice
+ sliceDeferred = [].slice;
+
+jQuery.extend({
+ // Create a simple deferred (one callbacks list)
+ _Deferred: function() {
+ var // callbacks list
+ callbacks = [],
+ // stored [ context , args ]
+ fired,
+ // to avoid firing when already doing so
+ firing,
+ // flag to know if the deferred has been cancelled
+ cancelled,
+ // the deferred itself
+ deferred = {
+
+ // done( f1, f2, ...)
+ done: function() {
+ if ( !cancelled ) {
+ var args = arguments,
+ i,
+ length,
+ elem,
+ type,
+ _fired;
+ if ( fired ) {
+ _fired = fired;
+ fired = 0;
+ }
+ for ( i = 0, length = args.length; i < length; i++ ) {
+ elem = args[ i ];
+ type = jQuery.type( elem );
+ if ( type === "array" ) {
+ deferred.done.apply( deferred, elem );
+ } else if ( type === "function" ) {
+ callbacks.push( elem );
+ }
+ }
+ if ( _fired ) {
+ deferred.resolveWith( _fired[ 0 ], _fired[ 1 ] );
+ }
+ }
+ return this;
+ },
+
+ // resolve with given context and args
+ resolveWith: function( context, args ) {
+ if ( !cancelled && !fired && !firing ) {
+ // make sure args are available (#8421)
+ args = args || [];
+ firing = 1;
+ try {
+ while( callbacks[ 0 ] ) {
+ callbacks.shift().apply( context, args );
+ }
+ }
+ finally {
+ fired = [ context, args ];
+ firing = 0;
+ }
+ }
+ return this;
+ },
+
+ // resolve with this as context and given arguments
+ resolve: function() {
+ deferred.resolveWith( this, arguments );
+ return this;
+ },
+
+ // Has this deferred been resolved?
+ isResolved: function() {
+ return !!( firing || fired );
+ },
+
+ // Cancel
+ cancel: function() {
+ cancelled = 1;
+ callbacks = [];
+ return this;
+ }
+ };
+
+ return deferred;
+ },
+
+ // Full fledged deferred (two callbacks list)
+ Deferred: function( func ) {
+ var deferred = jQuery._Deferred(),
+ failDeferred = jQuery._Deferred(),
+ promise;
+ // Add errorDeferred methods, then and promise
+ jQuery.extend( deferred, {
+ then: function( doneCallbacks, failCallbacks ) {
+ deferred.done( doneCallbacks ).fail( failCallbacks );
+ return this;
+ },
+ always: function() {
+ return deferred.done.apply( deferred, arguments ).fail.apply( this, arguments );
+ },
+ fail: failDeferred.done,
+ rejectWith: failDeferred.resolveWith,
+ reject: failDeferred.resolve,
+ isRejected: failDeferred.isResolved,
+ pipe: function( fnDone, fnFail ) {
+ return jQuery.Deferred(function( newDefer ) {
+ jQuery.each( {
+ done: [ fnDone, "resolve" ],
+ fail: [ fnFail, "reject" ]
+ }, function( handler, data ) {
+ var fn = data[ 0 ],
+ action = data[ 1 ],
+ returned;
+ if ( jQuery.isFunction( fn ) ) {
+ deferred[ handler ](function() {
+ returned = fn.apply( this, arguments );
+ if ( returned && jQuery.isFunction( returned.promise ) ) {
+ returned.promise().then( newDefer.resolve, newDefer.reject );
+ } else {
+ newDefer[ action ]( returned );
+ }
+ });
+ } else {
+ deferred[ handler ]( newDefer[ action ] );
+ }
+ });
+ }).promise();
+ },
+ // Get a promise for this deferred
+ // If obj is provided, the promise aspect is added to the object
+ promise: function( obj ) {
+ if ( obj == null ) {
+ if ( promise ) {
+ return promise;
+ }
+ promise = obj = {};
+ }
+ var i = promiseMethods.length;
+ while( i-- ) {
+ obj[ promiseMethods[i] ] = deferred[ promiseMethods[i] ];
+ }
+ return obj;
+ }
+ });
+ // Make sure only one callback list will be used
+ deferred.done( failDeferred.cancel ).fail( deferred.cancel );
+ // Unexpose cancel
+ delete deferred.cancel;
+ // Call given func if any
+ if ( func ) {
+ func.call( deferred, deferred );
+ }
+ return deferred;
+ },
+
+ // Deferred helper
+ when: function( firstParam ) {
+ var args = arguments,
+ i = 0,
+ length = args.length,
+ count = length,
+ deferred = length <= 1 && firstParam && jQuery.isFunction( firstParam.promise ) ?
+ firstParam :
+ jQuery.Deferred();
+ function resolveFunc( i ) {
+ return function( value ) {
+ args[ i ] = arguments.length > 1 ? sliceDeferred.call( arguments, 0 ) : value;
+ if ( !( --count ) ) {
+ // Strange bug in FF4:
+ // Values changed onto the arguments object sometimes end up as undefined values
+ // outside the $.when method. Cloning the object into a fresh array solves the issue
+ deferred.resolveWith( deferred, sliceDeferred.call( args, 0 ) );
+ }
+ };
+ }
+ if ( length > 1 ) {
+ for( ; i < length; i++ ) {
+ if ( args[ i ] && jQuery.isFunction( args[ i ].promise ) ) {
+ args[ i ].promise().then( resolveFunc(i), deferred.reject );
+ } else {
+ --count;
+ }
+ }
+ if ( !count ) {
+ deferred.resolveWith( deferred, args );
+ }
+ } else if ( deferred !== firstParam ) {
+ deferred.resolveWith( deferred, length ? [ firstParam ] : [] );
+ }
+ return deferred.promise();
+ }
+});
+
+
+
+jQuery.support = (function() {
+
+ var div = document.createElement( "div" ),
+ documentElement = document.documentElement,
+ all,
+ a,
+ select,
+ opt,
+ input,
+ marginDiv,
+ support,
+ fragment,
+ body,
+ bodyStyle,
+ tds,
+ events,
+ eventName,
+ i,
+ isSupported;
+
+ // Preliminary tests
+ div.setAttribute("className", "t");
+ div.innerHTML = " <link/><table></table><a href='/a' style='top:1px;float:left;opacity:.55;'>a</a><input type='checkbox'/>";
+
+ all = div.getElementsByTagName( "*" );
+ a = div.getElementsByTagName( "a" )[ 0 ];
+
+ // Can't get basic test support
+ if ( !all || !all.length || !a ) {
+ return {};
+ }
+
+ // First batch of supports tests
+ select = document.createElement( "select" );
+ opt = select.appendChild( document.createElement("option") );
+ input = div.getElementsByTagName( "input" )[ 0 ];
+
+ support = {
+ // IE strips leading whitespace when .innerHTML is used
+ leadingWhitespace: ( div.firstChild.nodeType === 3 ),
+
+ // Make sure that tbody elements aren't automatically inserted
+ // IE will insert them into empty tables
+ tbody: !div.getElementsByTagName( "tbody" ).length,
+
+ // Make sure that link elements get serialized correctly by innerHTML
+ // This requires a wrapper element in IE
+ htmlSerialize: !!div.getElementsByTagName( "link" ).length,
+
+ // Get the style information from getAttribute
+ // (IE uses .cssText instead)
+ style: /top/.test( a.getAttribute("style") ),
+
+ // Make sure that URLs aren't manipulated
+ // (IE normalizes it by default)
+ hrefNormalized: ( a.getAttribute( "href" ) === "/a" ),
+
+ // Make sure that element opacity exists
+ // (IE uses filter instead)
+ // Use a regex to work around a WebKit issue. See #5145
+ opacity: /^0.55$/.test( a.style.opacity ),
+
+ // Verify style float existence
+ // (IE uses styleFloat instead of cssFloat)
+ cssFloat: !!a.style.cssFloat,
+
+ // Make sure that if no value is specified for a checkbox
+ // that it defaults to "on".
+ // (WebKit defaults to "" instead)
+ checkOn: ( input.value === "on" ),
+
+ // Make sure that a selected-by-default option has a working selected property.
+ // (WebKit defaults to false instead of true, IE too, if it's in an optgroup)
+ optSelected: opt.selected,
+
+ // Test setAttribute on camelCase class. If it works, we need attrFixes when doing get/setAttribute (ie6/7)
+ getSetAttribute: div.className !== "t",
+
+ // Will be defined later
+ submitBubbles: true,
+ changeBubbles: true,
+ focusinBubbles: false,
+ deleteExpando: true,
+ noCloneEvent: true,
+ inlineBlockNeedsLayout: false,
+ shrinkWrapBlocks: false,
+ reliableMarginRight: true
+ };
+
+ // Make sure checked status is properly cloned
+ input.checked = true;
+ support.noCloneChecked = input.cloneNode( true ).checked;
+
+ // Make sure that the options inside disabled selects aren't marked as disabled
+ // (WebKit marks them as disabled)
+ select.disabled = true;
+ support.optDisabled = !opt.disabled;
+
+ // Test to see if it's possible to delete an expando from an element
+ // Fails in Internet Explorer
+ try {
+ delete div.test;
+ } catch( e ) {
+ support.deleteExpando = false;
+ }
+
+ if ( !div.addEventListener && div.attachEvent && div.fireEvent ) {
+ div.attachEvent( "onclick", function click() {
+ // Cloning a node shouldn't copy over any
+ // bound event handlers (IE does this)
+ support.noCloneEvent = false;
+ div.detachEvent( "onclick", click );
+ });
+ div.cloneNode( true ).fireEvent( "onclick" );
+ }
+
+ // Check if a radio maintains it's value
+ // after being appended to the DOM
+ input = document.createElement("input");
+ input.value = "t";
+ input.setAttribute("type", "radio");
+ support.radioValue = input.value === "t";
+
+ input.setAttribute("checked", "checked");
+ div.appendChild( input );
+ fragment = document.createDocumentFragment();
+ fragment.appendChild( div.firstChild );
+
+ // WebKit doesn't clone checked state correctly in fragments
+ support.checkClone = fragment.cloneNode( true ).cloneNode( true ).lastChild.checked;
+
+ div.innerHTML = "";
+
+ // Figure out if the W3C box model works as expected
+ div.style.width = div.style.paddingLeft = "1px";
+
+ // We use our own, invisible, body
+ body = document.createElement( "body" );
+ bodyStyle = {
+ visibility: "hidden",
+ width: 0,
+ height: 0,
+ border: 0,
+ margin: 0,
+ // Set background to avoid IE crashes when removing (#9028)
+ background: "none"
+ };
+ for ( i in bodyStyle ) {
+ body.style[ i ] = bodyStyle[ i ];
+ }
+ body.appendChild( div );
+ documentElement.insertBefore( body, documentElement.firstChild );
+
+ // Check if a disconnected checkbox will retain its checked
+ // value of true after appended to the DOM (IE6/7)
+ support.appendChecked = input.checked;
+
+ support.boxModel = div.offsetWidth === 2;
+
+ if ( "zoom" in div.style ) {
+ // Check if natively block-level elements act like inline-block
+ // elements when setting their display to 'inline' and giving
+ // them layout
+ // (IE < 8 does this)
+ div.style.display = "inline";
+ div.style.zoom = 1;
+ support.inlineBlockNeedsLayout = ( div.offsetWidth === 2 );
+
+ // Check if elements with layout shrink-wrap their children
+ // (IE 6 does this)
+ div.style.display = "";
+ div.innerHTML = "<div style='width:4px;'></div>";
+ support.shrinkWrapBlocks = ( div.offsetWidth !== 2 );
+ }
+
+ div.innerHTML = "<table><tr><td style='padding:0;border:0;display:none'></td><td>t</td></tr></table>";
+ tds = div.getElementsByTagName( "td" );
+
+ // Check if table cells still have offsetWidth/Height when they are set
+ // to display:none and there are still other visible table cells in a
+ // table row; if so, offsetWidth/Height are not reliable for use when
+ // determining if an element has been hidden directly using
+ // display:none (it is still safe to use offsets if a parent element is
+ // hidden; don safety goggles and see bug #4512 for more information).
+ // (only IE 8 fails this test)
+ isSupported = ( tds[ 0 ].offsetHeight === 0 );
+
+ tds[ 0 ].style.display = "";
+ tds[ 1 ].style.display = "none";
+
+ // Check if empty table cells still have offsetWidth/Height
+ // (IE < 8 fail this test)
+ support.reliableHiddenOffsets = isSupported && ( tds[ 0 ].offsetHeight === 0 );
+ div.innerHTML = "";
+
+ // Check if div with explicit width and no margin-right incorrectly
+ // gets computed margin-right based on width of container. For more
+ // info see bug #3333
+ // Fails in WebKit before Feb 2011 nightlies
+ // WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right
+ if ( document.defaultView && document.defaultView.getComputedStyle ) {
+ marginDiv = document.createElement( "div" );
+ marginDiv.style.width = "0";
+ marginDiv.style.marginRight = "0";
+ div.appendChild( marginDiv );
+ support.reliableMarginRight =
+ ( parseInt( ( document.defaultView.getComputedStyle( marginDiv, null ) || { marginRight: 0 } ).marginRight, 10 ) || 0 ) === 0;
+ }
+
+ // Remove the body element we added
+ body.innerHTML = "";
+ documentElement.removeChild( body );
+
+ // Technique from Juriy Zaytsev
+ // http://thinkweb2.com/projects/prototype/detecting-event-support-without-browser-sniffing/
+ // We only care about the case where non-standard event systems
+ // are used, namely in IE. Short-circuiting here helps us to
+ // avoid an eval call (in setAttribute) which can cause CSP
+ // to go haywire. See: https://developer.mozilla.org/en/Security/CSP
+ if ( div.attachEvent ) {
+ for( i in {
+ submit: 1,
+ change: 1,
+ focusin: 1
+ } ) {
+ eventName = "on" + i;
+ isSupported = ( eventName in div );
+ if ( !isSupported ) {
+ div.setAttribute( eventName, "return;" );
+ isSupported = ( typeof div[ eventName ] === "function" );
+ }
+ support[ i + "Bubbles" ] = isSupported;
+ }
+ }
+
+ return support;
+})();
+
+// Keep track of boxModel
+jQuery.boxModel = jQuery.support.boxModel;
+
+
+
+
+var rbrace = /^(?:\{.*\}|\[.*\])$/,
+ rmultiDash = /([a-z])([A-Z])/g;
+
+jQuery.extend({
+ cache: {},
+
+ // Please use with caution
+ uuid: 0,
+
+ // Unique for each copy of jQuery on the page
+ // Non-digits removed to match rinlinejQuery
+ expando: "jQuery" + ( jQuery.fn.jquery + Math.random() ).replace( /\D/g, "" ),
+
+ // The following elements throw uncatchable exceptions if you
+ // attempt to add expando properties to them.
+ noData: {
+ "embed": true,
+ // Ban all objects except for Flash (which handle expandos)
+ "object": "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",
+ "applet": true
+ },
+
+ hasData: function( elem ) {
+ elem = elem.nodeType ? jQuery.cache[ elem[jQuery.expando] ] : elem[ jQuery.expando ];
+
+ return !!elem && !isEmptyDataObject( elem );
+ },
+
+ data: function( elem, name, data, pvt /* Internal Use Only */ ) {
+ if ( !jQuery.acceptData( elem ) ) {
+ return;
+ }
+
+ var internalKey = jQuery.expando, getByName = typeof name === "string", thisCache,
+
+ // We have to handle DOM nodes and JS objects differently because IE6-7
+ // can't GC object references properly across the DOM-JS boundary
+ isNode = elem.nodeType,
+
+ // Only DOM nodes need the global jQuery cache; JS object data is
+ // attached directly to the object so GC can occur automatically
+ cache = isNode ? jQuery.cache : elem,
+
+ // Only defining an ID for JS objects if its cache already exists allows
+ // the code to shortcut on the same path as a DOM node with no cache
+ id = isNode ? elem[ jQuery.expando ] : elem[ jQuery.expando ] && jQuery.expando;
+
+ // Avoid doing any more work than we need to when trying to get data on an
+ // object that has no data at all
+ if ( (!id || (pvt && id && !cache[ id ][ internalKey ])) && getByName && data === undefined ) {
+ return;
+ }
+
+ if ( !id ) {
+ // Only DOM nodes need a new unique ID for each element since their data
+ // ends up in the global cache
+ if ( isNode ) {
+ elem[ jQuery.expando ] = id = ++jQuery.uuid;
+ } else {
+ id = jQuery.expando;
+ }
+ }
+
+ if ( !cache[ id ] ) {
+ cache[ id ] = {};
+
+ // TODO: This is a hack for 1.5 ONLY. Avoids exposing jQuery
+ // metadata on plain JS objects when the object is serialized using
+ // JSON.stringify
+ if ( !isNode ) {
+ cache[ id ].toJSON = jQuery.noop;
+ }
+ }
+
+ // An object can be passed to jQuery.data instead of a key/value pair; this gets
+ // shallow copied over onto the existing cache
+ if ( typeof name === "object" || typeof name === "function" ) {
+ if ( pvt ) {
+ cache[ id ][ internalKey ] = jQuery.extend(cache[ id ][ internalKey ], name);
+ } else {
+ cache[ id ] = jQuery.extend(cache[ id ], name);
+ }
+ }
+
+ thisCache = cache[ id ];
+
+ // Internal jQuery data is stored in a separate object inside the object's data
+ // cache in order to avoid key collisions between internal data and user-defined
+ // data
+ if ( pvt ) {
+ if ( !thisCache[ internalKey ] ) {
+ thisCache[ internalKey ] = {};
+ }
+
+ thisCache = thisCache[ internalKey ];
+ }
+
+ if ( data !== undefined ) {
+ thisCache[ jQuery.camelCase( name ) ] = data;
+ }
+
+ // TODO: This is a hack for 1.5 ONLY. It will be removed in 1.6. Users should
+ // not attempt to inspect the internal events object using jQuery.data, as this
+ // internal data object is undocumented and subject to change.
+ if ( name === "events" && !thisCache[name] ) {
+ return thisCache[ internalKey ] && thisCache[ internalKey ].events;
+ }
+
+ return getByName ? thisCache[ jQuery.camelCase( name ) ] : thisCache;
+ },
+
+ removeData: function( elem, name, pvt /* Internal Use Only */ ) {
+ if ( !jQuery.acceptData( elem ) ) {
+ return;
+ }
+
+ var internalKey = jQuery.expando, isNode = elem.nodeType,
+
+ // See jQuery.data for more information
+ cache = isNode ? jQuery.cache : elem,
+
+ // See jQuery.data for more information
+ id = isNode ? elem[ jQuery.expando ] : jQuery.expando;
+
+ // If there is already no cache entry for this object, there is no
+ // purpose in continuing
+ if ( !cache[ id ] ) {
+ return;
+ }
+
+ if ( name ) {
+ var thisCache = pvt ? cache[ id ][ internalKey ] : cache[ id ];
+
+ if ( thisCache ) {
+ delete thisCache[ name ];
+
+ // If there is no data left in the cache, we want to continue
+ // and let the cache object itself get destroyed
+ if ( !isEmptyDataObject(thisCache) ) {
+ return;
+ }
+ }
+ }
+
+ // See jQuery.data for more information
+ if ( pvt ) {
+ delete cache[ id ][ internalKey ];
+
+ // Don't destroy the parent cache unless the internal data object
+ // had been the only thing left in it
+ if ( !isEmptyDataObject(cache[ id ]) ) {
+ return;
+ }
+ }
+
+ var internalCache = cache[ id ][ internalKey ];
+
+ // Browsers that fail expando deletion also refuse to delete expandos on
+ // the window, but it will allow it on all other JS objects; other browsers
+ // don't care
+ if ( jQuery.support.deleteExpando || cache != window ) {
+ delete cache[ id ];
+ } else {
+ cache[ id ] = null;
+ }
+
+ // We destroyed the entire user cache at once because it's faster than
+ // iterating through each key, but we need to continue to persist internal
+ // data if it existed
+ if ( internalCache ) {
+ cache[ id ] = {};
+ // TODO: This is a hack for 1.5 ONLY. Avoids exposing jQuery
+ // metadata on plain JS objects when the object is serialized using
+ // JSON.stringify
+ if ( !isNode ) {
+ cache[ id ].toJSON = jQuery.noop;
+ }
+
+ cache[ id ][ internalKey ] = internalCache;
+
+ // Otherwise, we need to eliminate the expando on the node to avoid
+ // false lookups in the cache for entries that no longer exist
+ } else if ( isNode ) {
+ // IE does not allow us to delete expando properties from nodes,
+ // nor does it have a removeAttribute function on Document nodes;
+ // we must handle all of these cases
+ if ( jQuery.support.deleteExpando ) {
+ delete elem[ jQuery.expando ];
+ } else if ( elem.removeAttribute ) {
+ elem.removeAttribute( jQuery.expando );
+ } else {
+ elem[ jQuery.expando ] = null;
+ }
+ }
+ },
+
+ // For internal use only.
+ _data: function( elem, name, data ) {
+ return jQuery.data( elem, name, data, true );
+ },
+
+ // A method for determining if a DOM node can handle the data expando
+ acceptData: function( elem ) {
+ if ( elem.nodeName ) {
+ var match = jQuery.noData[ elem.nodeName.toLowerCase() ];
+
+ if ( match ) {
+ return !(match === true || elem.getAttribute("classid") !== match);
+ }
+ }
+
+ return true;
+ }
+});
+
+jQuery.fn.extend({
+ data: function( key, value ) {
+ var data = null;
+
+ if ( typeof key === "undefined" ) {
+ if ( this.length ) {
+ data = jQuery.data( this[0] );
+
+ if ( this[0].nodeType === 1 ) {
+ var attr = this[0].attributes, name;
+ for ( var i = 0, l = attr.length; i < l; i++ ) {
+ name = attr[i].name;
+
+ if ( name.indexOf( "data-" ) === 0 ) {
+ name = jQuery.camelCase( name.substring(5) );
+
+ dataAttr( this[0], name, data[ name ] );
+ }
+ }
+ }
+ }
+
+ return data;
+
+ } else if ( typeof key === "object" ) {
+ return this.each(function() {
+ jQuery.data( this, key );
+ });
+ }
+
+ var parts = key.split(".");
+ parts[1] = parts[1] ? "." + parts[1] : "";
+
+ if ( value === undefined ) {
+ data = this.triggerHandler("getData" + parts[1] + "!", [parts[0]]);
+
+ // Try to fetch any internally stored data first
+ if ( data === undefined && this.length ) {
+ data = jQuery.data( this[0], key );
+ data = dataAttr( this[0], key, data );
+ }
+
+ return data === undefined && parts[1] ?
+ this.data( parts[0] ) :
+ data;
+
+ } else {
+ return this.each(function() {
+ var $this = jQuery( this ),
+ args = [ parts[0], value ];
+
+ $this.triggerHandler( "setData" + parts[1] + "!", args );
+ jQuery.data( this, key, value );
+ $this.triggerHandler( "changeData" + parts[1] + "!", args );
+ });
+ }
+ },
+
+ removeData: function( key ) {
+ return this.each(function() {
+ jQuery.removeData( this, key );
+ });
+ }
+});
+
+function dataAttr( elem, key, data ) {
+ // If nothing was found internally, try to fetch any
+ // data from the HTML5 data-* attribute
+ if ( data === undefined && elem.nodeType === 1 ) {
+ var name = "data-" + key.replace( rmultiDash, "$1-$2" ).toLowerCase();
+
+ data = elem.getAttribute( name );
+
+ if ( typeof data === "string" ) {
+ try {
+ data = data === "true" ? true :
+ data === "false" ? false :
+ data === "null" ? null :
+ !jQuery.isNaN( data ) ? parseFloat( data ) :
+ rbrace.test( data ) ? jQuery.parseJSON( data ) :
+ data;
+ } catch( e ) {}
+
+ // Make sure we set the data so it isn't changed later
+ jQuery.data( elem, key, data );
+
+ } else {
+ data = undefined;
+ }
+ }
+
+ return data;
+}
+
+// TODO: This is a hack for 1.5 ONLY to allow objects with a single toJSON
+// property to be considered empty objects; this property always exists in
+// order to make sure JSON.stringify does not expose internal metadata
+function isEmptyDataObject( obj ) {
+ for ( var name in obj ) {
+ if ( name !== "toJSON" ) {
+ return false;
+ }
+ }
+
+ return true;
+}
+
+
+
+
+function handleQueueMarkDefer( elem, type, src ) {
+ var deferDataKey = type + "defer",
+ queueDataKey = type + "queue",
+ markDataKey = type + "mark",
+ defer = jQuery.data( elem, deferDataKey, undefined, true );
+ if ( defer &&
+ ( src === "queue" || !jQuery.data( elem, queueDataKey, undefined, true ) ) &&
+ ( src === "mark" || !jQuery.data( elem, markDataKey, undefined, true ) ) ) {
+ // Give room for hard-coded callbacks to fire first
+ // and eventually mark/queue something else on the element
+ setTimeout( function() {
+ if ( !jQuery.data( elem, queueDataKey, undefined, true ) &&
+ !jQuery.data( elem, markDataKey, undefined, true ) ) {
+ jQuery.removeData( elem, deferDataKey, true );
+ defer.resolve();
+ }
+ }, 0 );
+ }
+}
+
+jQuery.extend({
+
+ _mark: function( elem, type ) {
+ if ( elem ) {
+ type = (type || "fx") + "mark";
+ jQuery.data( elem, type, (jQuery.data(elem,type,undefined,true) || 0) + 1, true );
+ }
+ },
+
+ _unmark: function( force, elem, type ) {
+ if ( force !== true ) {
+ type = elem;
+ elem = force;
+ force = false;
+ }
+ if ( elem ) {
+ type = type || "fx";
+ var key = type + "mark",
+ count = force ? 0 : ( (jQuery.data( elem, key, undefined, true) || 1 ) - 1 );
+ if ( count ) {
+ jQuery.data( elem, key, count, true );
+ } else {
+ jQuery.removeData( elem, key, true );
+ handleQueueMarkDefer( elem, type, "mark" );
+ }
+ }
+ },
+
+ queue: function( elem, type, data ) {
+ if ( elem ) {
+ type = (type || "fx") + "queue";
+ var q = jQuery.data( elem, type, undefined, true );
+ // Speed up dequeue by getting out quickly if this is just a lookup
+ if ( data ) {
+ if ( !q || jQuery.isArray(data) ) {
+ q = jQuery.data( elem, type, jQuery.makeArray(data), true );
+ } else {
+ q.push( data );
+ }
+ }
+ return q || [];
+ }
+ },
+
+ dequeue: function( elem, type ) {
+ type = type || "fx";
+
+ var queue = jQuery.queue( elem, type ),
+ fn = queue.shift(),
+ defer;
+
+ // If the fx queue is dequeued, always remove the progress sentinel
+ if ( fn === "inprogress" ) {
+ fn = queue.shift();
+ }
+
+ if ( fn ) {
+ // Add a progress sentinel to prevent the fx queue from being
+ // automatically dequeued
+ if ( type === "fx" ) {
+ queue.unshift("inprogress");
+ }
+
+ fn.call(elem, function() {
+ jQuery.dequeue(elem, type);
+ });
+ }
+
+ if ( !queue.length ) {
+ jQuery.removeData( elem, type + "queue", true );
+ handleQueueMarkDefer( elem, type, "queue" );
+ }
+ }
+});
+
+jQuery.fn.extend({
+ queue: function( type, data ) {
+ if ( typeof type !== "string" ) {
+ data = type;
+ type = "fx";
+ }
+
+ if ( data === undefined ) {
+ return jQuery.queue( this[0], type );
+ }
+ return this.each(function() {
+ var queue = jQuery.queue( this, type, data );
+
+ if ( type === "fx" && queue[0] !== "inprogress" ) {
+ jQuery.dequeue( this, type );
+ }
+ });
+ },
+ dequeue: function( type ) {
+ return this.each(function() {
+ jQuery.dequeue( this, type );
+ });
+ },
+ // Based off of the plugin by Clint Helfers, with permission.
+ // http://blindsignals.com/index.php/2009/07/jquery-delay/
+ delay: function( time, type ) {
+ time = jQuery.fx ? jQuery.fx.speeds[time] || time : time;
+ type = type || "fx";
+
+ return this.queue( type, function() {
+ var elem = this;
+ setTimeout(function() {
+ jQuery.dequeue( elem, type );
+ }, time );
+ });
+ },
+ clearQueue: function( type ) {
+ return this.queue( type || "fx", [] );
+ },
+ // Get a promise resolved when queues of a certain type
+ // are emptied (fx is the type by default)
+ promise: function( type, object ) {
+ if ( typeof type !== "string" ) {
+ object = type;
+ type = undefined;
+ }
+ type = type || "fx";
+ var defer = jQuery.Deferred(),
+ elements = this,
+ i = elements.length,
+ count = 1,
+ deferDataKey = type + "defer",
+ queueDataKey = type + "queue",
+ markDataKey = type + "mark",
+ tmp;
+ function resolve() {
+ if ( !( --count ) ) {
+ defer.resolveWith( elements, [ elements ] );
+ }
+ }
+ while( i-- ) {
+ if (( tmp = jQuery.data( elements[ i ], deferDataKey, undefined, true ) ||
+ ( jQuery.data( elements[ i ], queueDataKey, undefined, true ) ||
+ jQuery.data( elements[ i ], markDataKey, undefined, true ) ) &&
+ jQuery.data( elements[ i ], deferDataKey, jQuery._Deferred(), true ) )) {
+ count++;
+ tmp.done( resolve );
+ }
+ }
+ resolve();
+ return defer.promise();
+ }
+});
+
+
+
+
+var rclass = /[\n\t\r]/g,
+ rspace = /\s+/,
+ rreturn = /\r/g,
+ rtype = /^(?:button|input)$/i,
+ rfocusable = /^(?:button|input|object|select|textarea)$/i,
+ rclickable = /^a(?:rea)?$/i,
+ rboolean = /^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,
+ rinvalidChar = /\:/,
+ formHook, boolHook;
+
+jQuery.fn.extend({
+ attr: function( name, value ) {
+ return jQuery.access( this, name, value, true, jQuery.attr );
+ },
+
+ removeAttr: function( name ) {
+ return this.each(function() {
+ jQuery.removeAttr( this, name );
+ });
+ },
+
+ prop: function( name, value ) {
+ return jQuery.access( this, name, value, true, jQuery.prop );
+ },
+
+ removeProp: function( name ) {
+ name = jQuery.propFix[ name ] || name;
+ return this.each(function() {
+ // try/catch handles cases where IE balks (such as removing a property on window)
+ try {
+ this[ name ] = undefined;
+ delete this[ name ];
+ } catch( e ) {}
+ });
+ },
+
+ addClass: function( value ) {
+ if ( jQuery.isFunction( value ) ) {
+ return this.each(function(i) {
+ var self = jQuery(this);
+ self.addClass( value.call(this, i, self.attr("class") || "") );
+ });
+ }
+
+ if ( value && typeof value === "string" ) {
+ var classNames = (value || "").split( rspace );
+
+ for ( var i = 0, l = this.length; i < l; i++ ) {
+ var elem = this[i];
+
+ if ( elem.nodeType === 1 ) {
+ if ( !elem.className ) {
+ elem.className = value;
+
+ } else {
+ var className = " " + elem.className + " ",
+ setClass = elem.className;
+
+ for ( var c = 0, cl = classNames.length; c < cl; c++ ) {
+ if ( className.indexOf( " " + classNames[c] + " " ) < 0 ) {
+ setClass += " " + classNames[c];
+ }
+ }
+ elem.className = jQuery.trim( setClass );
+ }
+ }
+ }
+ }
+
+ return this;
+ },
+
+ removeClass: function( value ) {
+ if ( jQuery.isFunction(value) ) {
+ return this.each(function(i) {
+ var self = jQuery(this);
+ self.removeClass( value.call(this, i, self.attr("class")) );
+ });
+ }
+
+ if ( (value && typeof value === "string") || value === undefined ) {
+ var classNames = (value || "").split( rspace );
+
+ for ( var i = 0, l = this.length; i < l; i++ ) {
+ var elem = this[i];
+
+ if ( elem.nodeType === 1 && elem.className ) {
+ if ( value ) {
+ var className = (" " + elem.className + " ").replace(rclass, " ");
+ for ( var c = 0, cl = classNames.length; c < cl; c++ ) {
+ className = className.replace(" " + classNames[c] + " ", " ");
+ }
+ elem.className = jQuery.trim( className );
+
+ } else {
+ elem.className = "";
+ }
+ }
+ }
+ }
+
+ return this;
+ },
+
+ toggleClass: function( value, stateVal ) {
+ var type = typeof value,
+ isBool = typeof stateVal === "boolean";
+
+ if ( jQuery.isFunction( value ) ) {
+ return this.each(function(i) {
+ var self = jQuery(this);
+ self.toggleClass( value.call(this, i, self.attr("class"), stateVal), stateVal );
+ });
+ }
+
+ return this.each(function() {
+ if ( type === "string" ) {
+ // toggle individual class names
+ var className,
+ i = 0,
+ self = jQuery( this ),
+ state = stateVal,
+ classNames = value.split( rspace );
+
+ while ( (className = classNames[ i++ ]) ) {
+ // check each className given, space seperated list
+ state = isBool ? state : !self.hasClass( className );
+ self[ state ? "addClass" : "removeClass" ]( className );
+ }
+
+ } else if ( type === "undefined" || type === "boolean" ) {
+ if ( this.className ) {
+ // store className if set
+ jQuery._data( this, "__className__", this.className );
+ }
+
+ // toggle whole className
+ this.className = this.className || value === false ? "" : jQuery._data( this, "__className__" ) || "";
+ }
+ });
+ },
+
+ hasClass: function( selector ) {
+ var className = " " + selector + " ";
+ for ( var i = 0, l = this.length; i < l; i++ ) {
+ if ( (" " + this[i].className + " ").replace(rclass, " ").indexOf( className ) > -1 ) {
+ return true;
+ }
+ }
+
+ return false;
+ },
+
+ val: function( value ) {
+ var hooks, ret,
+ elem = this[0];
+
+ if ( !arguments.length ) {
+ if ( elem ) {
+ hooks = jQuery.valHooks[ elem.nodeName.toLowerCase() ] || jQuery.valHooks[ elem.type ];
+
+ if ( hooks && "get" in hooks && (ret = hooks.get( elem, "value" )) !== undefined ) {
+ return ret;
+ }
+
+ return (elem.value || "").replace(rreturn, "");
+ }
+
+ return undefined;
+ }
+
+ var isFunction = jQuery.isFunction( value );
+
+ return this.each(function( i ) {
+ var self = jQuery(this), val;
+
+ if ( this.nodeType !== 1 ) {
+ return;
+ }
+
+ if ( isFunction ) {
+ val = value.call( this, i, self.val() );
+ } else {
+ val = value;
+ }
+
+ // Treat null/undefined as ""; convert numbers to string
+ if ( val == null ) {
+ val = "";
+ } else if ( typeof val === "number" ) {
+ val += "";
+ } else if ( jQuery.isArray( val ) ) {
+ val = jQuery.map(val, function ( value ) {
+ return value == null ? "" : value + "";
+ });
+ }
+
+ hooks = jQuery.valHooks[ this.nodeName.toLowerCase() ] || jQuery.valHooks[ this.type ];
+
+ // If set returns undefined, fall back to normal setting
+ if ( !hooks || !("set" in hooks) || hooks.set( this, val, "value" ) === undefined ) {
+ this.value = val;
+ }
+ });
+ }
+});
+
+jQuery.extend({
+ valHooks: {
+ option: {
+ get: function( elem ) {
+ // attributes.value is undefined in Blackberry 4.7 but
+ // uses .value. See #6932
+ var val = elem.attributes.value;
+ return !val || val.specified ? elem.value : elem.text;
+ }
+ },
+ select: {
+ get: function( elem ) {
+ var value,
+ index = elem.selectedIndex,
+ values = [],
+ options = elem.options,
+ one = elem.type === "select-one";
+
+ // Nothing was selected
+ if ( index < 0 ) {
+ return null;
+ }
+
+ // Loop through all the selected options
+ for ( var i = one ? index : 0, max = one ? index + 1 : options.length; i < max; i++ ) {
+ var option = options[ i ];
+
+ // Don't return options that are disabled or in a disabled optgroup
+ if ( option.selected && (jQuery.support.optDisabled ? !option.disabled : option.getAttribute("disabled") === null) &&
+ (!option.parentNode.disabled || !jQuery.nodeName( option.parentNode, "optgroup" )) ) {
+
+ // Get the specific value for the option
+ value = jQuery( option ).val();
+
+ // We don't need an array for one selects
+ if ( one ) {
+ return value;
+ }
+
+ // Multi-Selects return an array
+ values.push( value );
+ }
+ }
+
+ // Fixes Bug #2551 -- select.val() broken in IE after form.reset()
+ if ( one && !values.length && options.length ) {
+ return jQuery( options[ index ] ).val();
+ }
+
+ return values;
+ },
+
+ set: function( elem, value ) {
+ var values = jQuery.makeArray( value );
+
+ jQuery(elem).find("option").each(function() {
+ this.selected = jQuery.inArray( jQuery(this).val(), values ) >= 0;
+ });
+
+ if ( !values.length ) {
+ elem.selectedIndex = -1;
+ }
+ return values;
+ }
+ }
+ },
+
+ attrFn: {
+ val: true,
+ css: true,
+ html: true,
+ text: true,
+ data: true,
+ width: true,
+ height: true,
+ offset: true
+ },
+
+ attrFix: {
+ // Always normalize to ensure hook usage
+ tabindex: "tabIndex"
+ },
+
+ attr: function( elem, name, value, pass ) {
+ var nType = elem.nodeType;
+
+ // don't get/set attributes on text, comment and attribute nodes
+ if ( !elem || nType === 3 || nType === 8 || nType === 2 ) {
+ return undefined;
+ }
+
+ if ( pass && name in jQuery.attrFn ) {
+ return jQuery( elem )[ name ]( value );
+ }
+
+ // Fallback to prop when attributes are not supported
+ if ( !("getAttribute" in elem) ) {
+ return jQuery.prop( elem, name, value );
+ }
+
+ var ret, hooks,
+ notxml = nType !== 1 || !jQuery.isXMLDoc( elem );
+
+ // Normalize the name if needed
+ name = notxml && jQuery.attrFix[ name ] || name;
+
+ hooks = jQuery.attrHooks[ name ];
+
+ if ( !hooks ) {
+ // Use boolHook for boolean attributes
+ if ( rboolean.test( name ) &&
+ (typeof value === "boolean" || value === undefined || value.toLowerCase() === name.toLowerCase()) ) {
+
+ hooks = boolHook;
+
+ // Use formHook for forms and if the name contains certain characters
+ } else if ( formHook && (jQuery.nodeName( elem, "form" ) || rinvalidChar.test( name )) ) {
+ hooks = formHook;
+ }
+ }
+
+ if ( value !== undefined ) {
+
+ if ( value === null ) {
+ jQuery.removeAttr( elem, name );
+ return undefined;
+
+ } else if ( hooks && "set" in hooks && notxml && (ret = hooks.set( elem, value, name )) !== undefined ) {
+ return ret;
+
+ } else {
+ elem.setAttribute( name, "" + value );
+ return value;
+ }
+
+ } else if ( hooks && "get" in hooks && notxml ) {
+ return hooks.get( elem, name );
+
+ } else {
+
+ ret = elem.getAttribute( name );
+
+ // Non-existent attributes return null, we normalize to undefined
+ return ret === null ?
+ undefined :
+ ret;
+ }
+ },
+
+ removeAttr: function( elem, name ) {
+ var propName;
+ if ( elem.nodeType === 1 ) {
+ name = jQuery.attrFix[ name ] || name;
+
+ if ( jQuery.support.getSetAttribute ) {
+ // Use removeAttribute in browsers that support it
+ elem.removeAttribute( name );
+ } else {
+ jQuery.attr( elem, name, "" );
+ elem.removeAttributeNode( elem.getAttributeNode( name ) );
+ }
+
+ // Set corresponding property to false for boolean attributes
+ if ( rboolean.test( name ) && (propName = jQuery.propFix[ name ] || name) in elem ) {
+ elem[ propName ] = false;
+ }
+ }
+ },
+
+ attrHooks: {
+ type: {
+ set: function( elem, value ) {
+ // We can't allow the type property to be changed (since it causes problems in IE)
+ if ( rtype.test( elem.nodeName ) && elem.parentNode ) {
+ jQuery.error( "type property can't be changed" );
+ } else if ( !jQuery.support.radioValue && value === "radio" && jQuery.nodeName(elem, "input") ) {
+ // Setting the type on a radio button after the value resets the value in IE6-9
+ // Reset value to it's default in case type is set after value
+ // This is for element creation
+ var val = elem.value;
+ elem.setAttribute( "type", value );
+ if ( val ) {
+ elem.value = val;
+ }
+ return value;
+ }
+ }
+ },
+ tabIndex: {
+ get: function( elem ) {
+ // elem.tabIndex doesn't always return the correct value when it hasn't been explicitly set
+ // http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/
+ var attributeNode = elem.getAttributeNode("tabIndex");
+
+ return attributeNode && attributeNode.specified ?
+ parseInt( attributeNode.value, 10 ) :
+ rfocusable.test( elem.nodeName ) || rclickable.test( elem.nodeName ) && elem.href ?
+ 0 :
+ undefined;
+ }
+ }
+ },
+
+ propFix: {
+ tabindex: "tabIndex",
+ readonly: "readOnly",
+ "for": "htmlFor",
+ "class": "className",
+ maxlength: "maxLength",
+ cellspacing: "cellSpacing",
+ cellpadding: "cellPadding",
+ rowspan: "rowSpan",
+ colspan: "colSpan",
+ usemap: "useMap",
+ frameborder: "frameBorder",
+ contenteditable: "contentEditable"
+ },
+
+ prop: function( elem, name, value ) {
+ var nType = elem.nodeType;
+
+ // don't get/set properties on text, comment and attribute nodes
+ if ( !elem || nType === 3 || nType === 8 || nType === 2 ) {
+ return undefined;
+ }
+
+ var ret, hooks,
+ notxml = nType !== 1 || !jQuery.isXMLDoc( elem );
+
+ // Try to normalize/fix the name
+ name = notxml && jQuery.propFix[ name ] || name;
+
+ hooks = jQuery.propHooks[ name ];
+
+ if ( value !== undefined ) {
+ if ( hooks && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ) {
+ return ret;
+
+ } else {
+ return (elem[ name ] = value);
+ }
+
+ } else {
+ if ( hooks && "get" in hooks && (ret = hooks.get( elem, name )) !== undefined ) {
+ return ret;
+
+ } else {
+ return elem[ name ];
+ }
+ }
+ },
+
+ propHooks: {}
+});
+
+// Hook for boolean attributes
+boolHook = {
+ get: function( elem, name ) {
+ // Align boolean attributes with corresponding properties
+ return elem[ jQuery.propFix[ name ] || name ] ?
+ name.toLowerCase() :
+ undefined;
+ },
+ set: function( elem, value, name ) {
+ var propName;
+ if ( value === false ) {
+ // Remove boolean attributes when set to false
+ jQuery.removeAttr( elem, name );
+ } else {
+ // value is true since we know at this point it's type boolean and not false
+ // Set boolean attributes to the same name and set the DOM property
+ propName = jQuery.propFix[ name ] || name;
+ if ( propName in elem ) {
+ // Only set the IDL specifically if it already exists on the element
+ elem[ propName ] = value;
+ }
+
+ elem.setAttribute( name, name.toLowerCase() );
+ }
+ return name;
+ }
+};
+
+// Use the value property for back compat
+// Use the formHook for button elements in IE6/7 (#1954)
+jQuery.attrHooks.value = {
+ get: function( elem, name ) {
+ if ( formHook && jQuery.nodeName( elem, "button" ) ) {
+ return formHook.get( elem, name );
+ }
+ return elem.value;
+ },
+ set: function( elem, value, name ) {
+ if ( formHook && jQuery.nodeName( elem, "button" ) ) {
+ return formHook.set( elem, value, name );
+ }
+ // Does not return so that setAttribute is also used
+ elem.value = value;
+ }
+};
+
+// IE6/7 do not support getting/setting some attributes with get/setAttribute
+if ( !jQuery.support.getSetAttribute ) {
+
+ // propFix is more comprehensive and contains all fixes
+ jQuery.attrFix = jQuery.propFix;
+
+ // Use this for any attribute on a form in IE6/7
+ formHook = jQuery.attrHooks.name = jQuery.valHooks.button = {
+ get: function( elem, name ) {
+ var ret;
+ ret = elem.getAttributeNode( name );
+ // Return undefined if nodeValue is empty string
+ return ret && ret.nodeValue !== "" ?
+ ret.nodeValue :
+ undefined;
+ },
+ set: function( elem, value, name ) {
+ // Check form objects in IE (multiple bugs related)
+ // Only use nodeValue if the attribute node exists on the form
+ var ret = elem.getAttributeNode( name );
+ if ( ret ) {
+ ret.nodeValue = value;
+ return value;
+ }
+ }
+ };
+
+ // Set width and height to auto instead of 0 on empty string( Bug #8150 )
+ // This is for removals
+ jQuery.each([ "width", "height" ], function( i, name ) {
+ jQuery.attrHooks[ name ] = jQuery.extend( jQuery.attrHooks[ name ], {
+ set: function( elem, value ) {
+ if ( value === "" ) {
+ elem.setAttribute( name, "auto" );
+ return value;
+ }
+ }
+ });
+ });
+}
+
+
+// Some attributes require a special call on IE
+if ( !jQuery.support.hrefNormalized ) {
+ jQuery.each([ "href", "src", "width", "height" ], function( i, name ) {
+ jQuery.attrHooks[ name ] = jQuery.extend( jQuery.attrHooks[ name ], {
+ get: function( elem ) {
+ var ret = elem.getAttribute( name, 2 );
+ return ret === null ? undefined : ret;
+ }
+ });
+ });
+}
+
+if ( !jQuery.support.style ) {
+ jQuery.attrHooks.style = {
+ get: function( elem ) {
+ // Return undefined in the case of empty string
+ // Normalize to lowercase since IE uppercases css property names
+ return elem.style.cssText.toLowerCase() || undefined;
+ },
+ set: function( elem, value ) {
+ return (elem.style.cssText = "" + value);
+ }
+ };
+}
+
+// Safari mis-reports the default selected property of an option
+// Accessing the parent's selectedIndex property fixes it
+if ( !jQuery.support.optSelected ) {
+ jQuery.propHooks.selected = jQuery.extend( jQuery.propHooks.selected, {
+ get: function( elem ) {
+ var parent = elem.parentNode;
+
+ if ( parent ) {
+ parent.selectedIndex;
+
+ // Make sure that it also works with optgroups, see #5701
+ if ( parent.parentNode ) {
+ parent.parentNode.selectedIndex;
+ }
+ }
+ }
+ });
+}
+
+// Radios and checkboxes getter/setter
+if ( !jQuery.support.checkOn ) {
+ jQuery.each([ "radio", "checkbox" ], function() {
+ jQuery.valHooks[ this ] = {
+ get: function( elem ) {
+ // Handle the case where in Webkit "" is returned instead of "on" if a value isn't specified
+ return elem.getAttribute("value") === null ? "on" : elem.value;
+ }
+ };
+ });
+}
+jQuery.each([ "radio", "checkbox" ], function() {
+ jQuery.valHooks[ this ] = jQuery.extend( jQuery.valHooks[ this ], {
+ set: function( elem, value ) {
+ if ( jQuery.isArray( value ) ) {
+ return (elem.checked = jQuery.inArray( jQuery(elem).val(), value ) >= 0);
+ }
+ }
+ });
+});
+
+
+
+
+var hasOwn = Object.prototype.hasOwnProperty,
+ rnamespaces = /\.(.*)$/,
+ rformElems = /^(?:textarea|input|select)$/i,
+ rperiod = /\./g,
+ rspaces = / /g,
+ rescape = /[^\w\s.|`]/g,
+ fcleanup = function( nm ) {
+ return nm.replace(rescape, "\\$&");
+ };
+
+/*
+ * A number of helper functions used for managing events.
+ * Many of the ideas behind this code originated from
+ * Dean Edwards' addEvent library.
+ */
+jQuery.event = {
+
+ // Bind an event to an element
+ // Original by Dean Edwards
+ add: function( elem, types, handler, data ) {
+ if ( elem.nodeType === 3 || elem.nodeType === 8 ) {
+ return;
+ }
+
+ if ( handler === false ) {
+ handler = returnFalse;
+ } else if ( !handler ) {
+ // Fixes bug #7229. Fix recommended by jdalton
+ return;
+ }
+
+ var handleObjIn, handleObj;
+
+ if ( handler.handler ) {
+ handleObjIn = handler;
+ handler = handleObjIn.handler;
+ }
+
+ // Make sure that the function being executed has a unique ID
+ if ( !handler.guid ) {
+ handler.guid = jQuery.guid++;
+ }
+
+ // Init the element's event structure
+ var elemData = jQuery._data( elem );
+
+ // If no elemData is found then we must be trying to bind to one of the
+ // banned noData elements
+ if ( !elemData ) {
+ return;
+ }
+
+ var events = elemData.events,
+ eventHandle = elemData.handle;
+
+ if ( !events ) {
+ elemData.events = events = {};
+ }
+
+ if ( !eventHandle ) {
+ elemData.handle = eventHandle = function( e ) {
+ // Discard the second event of a jQuery.event.trigger() and
+ // when an event is called after a page has unloaded
+ return typeof jQuery !== "undefined" && (!e || jQuery.event.triggered !== e.type) ?
+ jQuery.event.handle.apply( eventHandle.elem, arguments ) :
+ undefined;
+ };
+ }
+
+ // Add elem as a property of the handle function
+ // This is to prevent a memory leak with non-native events in IE.
+ eventHandle.elem = elem;
+
+ // Handle multiple events separated by a space
+ // jQuery(...).bind("mouseover mouseout", fn);
+ types = types.split(" ");
+
+ var type, i = 0, namespaces;
+
+ while ( (type = types[ i++ ]) ) {
+ handleObj = handleObjIn ?
+ jQuery.extend({}, handleObjIn) :
+ { handler: handler, data: data };
+
+ // Namespaced event handlers
+ if ( type.indexOf(".") > -1 ) {
+ namespaces = type.split(".");
+ type = namespaces.shift();
+ handleObj.namespace = namespaces.slice(0).sort().join(".");
+
+ } else {
+ namespaces = [];
+ handleObj.namespace = "";
+ }
+
+ handleObj.type = type;
+ if ( !handleObj.guid ) {
+ handleObj.guid = handler.guid;
+ }
+
+ // Get the current list of functions bound to this event
+ var handlers = events[ type ],
+ special = jQuery.event.special[ type ] || {};
+
+ // Init the event handler queue
+ if ( !handlers ) {
+ handlers = events[ type ] = [];
+
+ // Check for a special event handler
+ // Only use addEventListener/attachEvent if the special
+ // events handler returns false
+ if ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) {
+ // Bind the global event handler to the element
+ if ( elem.addEventListener ) {
+ elem.addEventListener( type, eventHandle, false );
+
+ } else if ( elem.attachEvent ) {
+ elem.attachEvent( "on" + type, eventHandle );
+ }
+ }
+ }
+
+ if ( special.add ) {
+ special.add.call( elem, handleObj );
+
+ if ( !handleObj.handler.guid ) {
+ handleObj.handler.guid = handler.guid;
+ }
+ }
+
+ // Add the function to the element's handler list
+ handlers.push( handleObj );
+
+ // Keep track of which events have been used, for event optimization
+ jQuery.event.global[ type ] = true;
+ }
+
+ // Nullify elem to prevent memory leaks in IE
+ elem = null;
+ },
+
+ global: {},
+
+ // Detach an event or set of events from an element
+ remove: function( elem, types, handler, pos ) {
+ // don't do events on text and comment nodes
+ if ( elem.nodeType === 3 || elem.nodeType === 8 ) {
+ return;
+ }
+
+ if ( handler === false ) {
+ handler = returnFalse;
+ }
+
+ var ret, type, fn, j, i = 0, all, namespaces, namespace, special, eventType, handleObj, origType,
+ elemData = jQuery.hasData( elem ) && jQuery._data( elem ),
+ events = elemData && elemData.events;
+
+ if ( !elemData || !events ) {
+ return;
+ }
+
+ // types is actually an event object here
+ if ( types && types.type ) {
+ handler = types.handler;
+ types = types.type;
+ }
+
+ // Unbind all events for the element
+ if ( !types || typeof types === "string" && types.charAt(0) === "." ) {
+ types = types || "";
+
+ for ( type in events ) {
+ jQuery.event.remove( elem, type + types );
+ }
+
+ return;
+ }
+
+ // Handle multiple events separated by a space
+ // jQuery(...).unbind("mouseover mouseout", fn);
+ types = types.split(" ");
+
+ while ( (type = types[ i++ ]) ) {
+ origType = type;
+ handleObj = null;
+ all = type.indexOf(".") < 0;
+ namespaces = [];
+
+ if ( !all ) {
+ // Namespaced event handlers
+ namespaces = type.split(".");
+ type = namespaces.shift();
+
+ namespace = new RegExp("(^|\\.)" +
+ jQuery.map( namespaces.slice(0).sort(), fcleanup ).join("\\.(?:.*\\.)?") + "(\\.|$)");
+ }
+
+ eventType = events[ type ];
+
+ if ( !eventType ) {
+ continue;
+ }
+
+ if ( !handler ) {
+ for ( j = 0; j < eventType.length; j++ ) {
+ handleObj = eventType[ j ];
+
+ if ( all || namespace.test( handleObj.namespace ) ) {
+ jQuery.event.remove( elem, origType, handleObj.handler, j );
+ eventType.splice( j--, 1 );
+ }
+ }
+
+ continue;
+ }
+
+ special = jQuery.event.special[ type ] || {};
+
+ for ( j = pos || 0; j < eventType.length; j++ ) {
+ handleObj = eventType[ j ];
+
+ if ( handler.guid === handleObj.guid ) {
+ // remove the given handler for the given type
+ if ( all || namespace.test( handleObj.namespace ) ) {
+ if ( pos == null ) {
+ eventType.splice( j--, 1 );
+ }
+
+ if ( special.remove ) {
+ special.remove.call( elem, handleObj );
+ }
+ }
+
+ if ( pos != null ) {
+ break;
+ }
+ }
+ }
+
+ // remove generic event handler if no more handlers exist
+ if ( eventType.length === 0 || pos != null && eventType.length === 1 ) {
+ if ( !special.teardown || special.teardown.call( elem, namespaces ) === false ) {
+ jQuery.removeEvent( elem, type, elemData.handle );
+ }
+
+ ret = null;
+ delete events[ type ];
+ }
+ }
+
+ // Remove the expando if it's no longer used
+ if ( jQuery.isEmptyObject( events ) ) {
+ var handle = elemData.handle;
+ if ( handle ) {
+ handle.elem = null;
+ }
+
+ delete elemData.events;
+ delete elemData.handle;
+
+ if ( jQuery.isEmptyObject( elemData ) ) {
+ jQuery.removeData( elem, undefined, true );
+ }
+ }
+ },
+
+ // Events that are safe to short-circuit if no handlers are attached.
+ // Native DOM events should not be added, they may have inline handlers.
+ customEvent: {
+ "getData": true,
+ "setData": true,
+ "changeData": true
+ },
+
+ trigger: function( event, data, elem, onlyHandlers ) {
+ // Event object or event type
+ var type = event.type || event,
+ namespaces = [],
+ exclusive;
+
+ if ( type.indexOf("!") >= 0 ) {
+ // Exclusive events trigger only for the exact event (no namespaces)
+ type = type.slice(0, -1);
+ exclusive = true;
+ }
+
+ if ( type.indexOf(".") >= 0 ) {
+ // Namespaced trigger; create a regexp to match event type in handle()
+ namespaces = type.split(".");
+ type = namespaces.shift();
+ namespaces.sort();
+ }
+
+ if ( (!elem || jQuery.event.customEvent[ type ]) && !jQuery.event.global[ type ] ) {
+ // No jQuery handlers for this event type, and it can't have inline handlers
+ return;
+ }
+
+ // Caller can pass in an Event, Object, or just an event type string
+ event = typeof event === "object" ?
+ // jQuery.Event object
+ event[ jQuery.expando ] ? event :
+ // Object literal
+ new jQuery.Event( type, event ) :
+ // Just the event type (string)
+ new jQuery.Event( type );
+
+ event.type = type;
+ event.exclusive = exclusive;
+ event.namespace = namespaces.join(".");
+ event.namespace_re = new RegExp("(^|\\.)" + namespaces.join("\\.(?:.*\\.)?") + "(\\.|$)");
+
+ // triggerHandler() and global events don't bubble or run the default action
+ if ( onlyHandlers || !elem ) {
+ event.preventDefault();
+ event.stopPropagation();
+ }
+
+ // Handle a global trigger
+ if ( !elem ) {
+ // TODO: Stop taunting the data cache; remove global events and always attach to document
+ jQuery.each( jQuery.cache, function() {
+ // internalKey variable is just used to make it easier to find
+ // and potentially change this stuff later; currently it just
+ // points to jQuery.expando
+ var internalKey = jQuery.expando,
+ internalCache = this[ internalKey ];
+ if ( internalCache && internalCache.events && internalCache.events[ type ] ) {
+ jQuery.event.trigger( event, data, internalCache.handle.elem );
+ }
+ });
+ return;
+ }
+
+ // Don't do events on text and comment nodes
+ if ( elem.nodeType === 3 || elem.nodeType === 8 ) {
+ return;
+ }
+
+ // Clean up the event in case it is being reused
+ event.result = undefined;
+ event.target = elem;
+
+ // Clone any incoming data and prepend the event, creating the handler arg list
+ data = data ? jQuery.makeArray( data ) : [];
+ data.unshift( event );
+
+ var cur = elem,
+ // IE doesn't like method names with a colon (#3533, #8272)
+ ontype = type.indexOf(":") < 0 ? "on" + type : "";
+
+ // Fire event on the current element, then bubble up the DOM tree
+ do {
+ var handle = jQuery._data( cur, "handle" );
+
+ event.currentTarget = cur;
+ if ( handle ) {
+ handle.apply( cur, data );
+ }
+
+ // Trigger an inline bound script
+ if ( ontype && jQuery.acceptData( cur ) && cur[ ontype ] && cur[ ontype ].apply( cur, data ) === false ) {
+ event.result = false;
+ event.preventDefault();
+ }
+
+ // Bubble up to document, then to window
+ cur = cur.parentNode || cur.ownerDocument || cur === event.target.ownerDocument && window;
+ } while ( cur && !event.isPropagationStopped() );
+
+ // If nobody prevented the default action, do it now
+ if ( !event.isDefaultPrevented() ) {
+ var old,
+ special = jQuery.event.special[ type ] || {};
+
+ if ( (!special._default || special._default.call( elem.ownerDocument, event ) === false) &&
+ !(type === "click" && jQuery.nodeName( elem, "a" )) && jQuery.acceptData( elem ) ) {
+
+ // Call a native DOM method on the target with the same name name as the event.
+ // Can't use an .isFunction)() check here because IE6/7 fails that test.
+ // IE<9 dies on focus to hidden element (#1486), may want to revisit a try/catch.
+ try {
+ if ( ontype && elem[ type ] ) {
+ // Don't re-trigger an onFOO event when we call its FOO() method
+ old = elem[ ontype ];
+
+ if ( old ) {
+ elem[ ontype ] = null;
+ }
+
+ jQuery.event.triggered = type;
+ elem[ type ]();
+ }
+ } catch ( ieError ) {}
+
+ if ( old ) {
+ elem[ ontype ] = old;
+ }
+
+ jQuery.event.triggered = undefined;
+ }
+ }
+
+ return event.result;
+ },
+
+ handle: function( event ) {
+ event = jQuery.event.fix( event || window.event );
+ // Snapshot the handlers list since a called handler may add/remove events.
+ var handlers = ((jQuery._data( this, "events" ) || {})[ event.type ] || []).slice(0),
+ run_all = !event.exclusive && !event.namespace,
+ args = Array.prototype.slice.call( arguments, 0 );
+
+ // Use the fix-ed Event rather than the (read-only) native event
+ args[0] = event;
+ event.currentTarget = this;
+
+ for ( var j = 0, l = handlers.length; j < l; j++ ) {
+ var handleObj = handlers[ j ];
+
+ // Triggered event must 1) be non-exclusive and have no namespace, or
+ // 2) have namespace(s) a subset or equal to those in the bound event.
+ if ( run_all || event.namespace_re.test( handleObj.namespace ) ) {
+ // Pass in a reference to the handler function itself
+ // So that we can later remove it
+ event.handler = handleObj.handler;
+ event.data = handleObj.data;
+ event.handleObj = handleObj;
+
+ var ret = handleObj.handler.apply( this, args );
+
+ if ( ret !== undefined ) {
+ event.result = ret;
+ if ( ret === false ) {
+ event.preventDefault();
+ event.stopPropagation();
+ }
+ }
+
+ if ( event.isImmediatePropagationStopped() ) {
+ break;
+ }
+ }
+ }
+ return event.result;
+ },
+
+ props: "altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode layerX layerY metaKey newValue offsetX offsetY pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),
+
+ fix: function( event ) {
+ if ( event[ jQuery.expando ] ) {
+ return event;
+ }
+
+ // store a copy of the original event object
+ // and "clone" to set read-only properties
+ var originalEvent = event;
+ event = jQuery.Event( originalEvent );
+
+ for ( var i = this.props.length, prop; i; ) {
+ prop = this.props[ --i ];
+ event[ prop ] = originalEvent[ prop ];
+ }
+
+ // Fix target property, if necessary
+ if ( !event.target ) {
+ // Fixes #1925 where srcElement might not be defined either
+ event.target = event.srcElement || document;
+ }
+
+ // check if target is a textnode (safari)
+ if ( event.target.nodeType === 3 ) {
+ event.target = event.target.parentNode;
+ }
+
+ // Add relatedTarget, if necessary
+ if ( !event.relatedTarget && event.fromElement ) {
+ event.relatedTarget = event.fromElement === event.target ? event.toElement : event.fromElement;
+ }
+
+ // Calculate pageX/Y if missing and clientX/Y available
+ if ( event.pageX == null && event.clientX != null ) {
+ var eventDocument = event.target.ownerDocument || document,
+ doc = eventDocument.documentElement,
+ body = eventDocument.body;
+
+ event.pageX = event.clientX + (doc && doc.scrollLeft || body && body.scrollLeft || 0) - (doc && doc.clientLeft || body && body.clientLeft || 0);
+ event.pageY = event.clientY + (doc && doc.scrollTop || body && body.scrollTop || 0) - (doc && doc.clientTop || body && body.clientTop || 0);
+ }
+
+ // Add which for key events
+ if ( event.which == null && (event.charCode != null || event.keyCode != null) ) {
+ event.which = event.charCode != null ? event.charCode : event.keyCode;
+ }
+
+ // Add metaKey to non-Mac browsers (use ctrl for PC's and Meta for Macs)
+ if ( !event.metaKey && event.ctrlKey ) {
+ event.metaKey = event.ctrlKey;
+ }
+
+ // Add which for click: 1 === left; 2 === middle; 3 === right
+ // Note: button is not normalized, so don't use it
+ if ( !event.which && event.button !== undefined ) {
+ event.which = (event.button & 1 ? 1 : ( event.button & 2 ? 3 : ( event.button & 4 ? 2 : 0 ) ));
+ }
+
+ return event;
+ },
+
+ // Deprecated, use jQuery.guid instead
+ guid: 1E8,
+
+ // Deprecated, use jQuery.proxy instead
+ proxy: jQuery.proxy,
+
+ special: {
+ ready: {
+ // Make sure the ready event is setup
+ setup: jQuery.bindReady,
+ teardown: jQuery.noop
+ },
+
+ live: {
+ add: function( handleObj ) {
+ jQuery.event.add( this,
+ liveConvert( handleObj.origType, handleObj.selector ),
+ jQuery.extend({}, handleObj, {handler: liveHandler, guid: handleObj.handler.guid}) );
+ },
+
+ remove: function( handleObj ) {
+ jQuery.event.remove( this, liveConvert( handleObj.origType, handleObj.selector ), handleObj );
+ }
+ },
+
+ beforeunload: {
+ setup: function( data, namespaces, eventHandle ) {
+ // We only want to do this special case on windows
+ if ( jQuery.isWindow( this ) ) {
+ this.onbeforeunload = eventHandle;
+ }
+ },
+
+ teardown: function( namespaces, eventHandle ) {
+ if ( this.onbeforeunload === eventHandle ) {
+ this.onbeforeunload = null;
+ }
+ }
+ }
+ }
+};
+
+jQuery.removeEvent = document.removeEventListener ?
+ function( elem, type, handle ) {
+ if ( elem.removeEventListener ) {
+ elem.removeEventListener( type, handle, false );
+ }
+ } :
+ function( elem, type, handle ) {
+ if ( elem.detachEvent ) {
+ elem.detachEvent( "on" + type, handle );
+ }
+ };
+
+jQuery.Event = function( src, props ) {
+ // Allow instantiation without the 'new' keyword
+ if ( !this.preventDefault ) {
+ return new jQuery.Event( src, props );
+ }
+
+ // Event object
+ if ( src && src.type ) {
+ this.originalEvent = src;
+ this.type = src.type;
+
+ // Events bubbling up the document may have been marked as prevented
+ // by a handler lower down the tree; reflect the correct value.
+ this.isDefaultPrevented = (src.defaultPrevented || src.returnValue === false ||
+ src.getPreventDefault && src.getPreventDefault()) ? returnTrue : returnFalse;
+
+ // Event type
+ } else {
+ this.type = src;
+ }
+
+ // Put explicitly provided properties onto the event object
+ if ( props ) {
+ jQuery.extend( this, props );
+ }
+
+ // timeStamp is buggy for some events on Firefox(#3843)
+ // So we won't rely on the native value
+ this.timeStamp = jQuery.now();
+
+ // Mark it as fixed
+ this[ jQuery.expando ] = true;
+};
+
+function returnFalse() {
+ return false;
+}
+function returnTrue() {
+ return true;
+}
+
+// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding
+// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html
+jQuery.Event.prototype = {
+ preventDefault: function() {
+ this.isDefaultPrevented = returnTrue;
+
+ var e = this.originalEvent;
+ if ( !e ) {
+ return;
+ }
+
+ // if preventDefault exists run it on the original event
+ if ( e.preventDefault ) {
+ e.preventDefault();
+
+ // otherwise set the returnValue property of the original event to false (IE)
+ } else {
+ e.returnValue = false;
+ }
+ },
+ stopPropagation: function() {
+ this.isPropagationStopped = returnTrue;
+
+ var e = this.originalEvent;
+ if ( !e ) {
+ return;
+ }
+ // if stopPropagation exists run it on the original event
+ if ( e.stopPropagation ) {
+ e.stopPropagation();
+ }
+ // otherwise set the cancelBubble property of the original event to true (IE)
+ e.cancelBubble = true;
+ },
+ stopImmediatePropagation: function() {
+ this.isImmediatePropagationStopped = returnTrue;
+ this.stopPropagation();
+ },
+ isDefaultPrevented: returnFalse,
+ isPropagationStopped: returnFalse,
+ isImmediatePropagationStopped: returnFalse
+};
+
+// Checks if an event happened on an element within another element
+// Used in jQuery.event.special.mouseenter and mouseleave handlers
+var withinElement = function( event ) {
+ // Check if mouse(over|out) are still within the same parent element
+ var parent = event.relatedTarget;
+
+ // set the correct event type
+ event.type = event.data;
+
+ // Firefox sometimes assigns relatedTarget a XUL element
+ // which we cannot access the parentNode property of
+ try {
+
+ // Chrome does something similar, the parentNode property
+ // can be accessed but is null.
+ if ( parent && parent !== document && !parent.parentNode ) {
+ return;
+ }
+
+ // Traverse up the tree
+ while ( parent && parent !== this ) {
+ parent = parent.parentNode;
+ }
+
+ if ( parent !== this ) {
+ // handle event if we actually just moused on to a non sub-element
+ jQuery.event.handle.apply( this, arguments );
+ }
+
+ // assuming we've left the element since we most likely mousedover a xul element
+ } catch(e) { }
+},
+
+// In case of event delegation, we only need to rename the event.type,
+// liveHandler will take care of the rest.
+delegate = function( event ) {
+ event.type = event.data;
+ jQuery.event.handle.apply( this, arguments );
+};
+
+// Create mouseenter and mouseleave events
+jQuery.each({
+ mouseenter: "mouseover",
+ mouseleave: "mouseout"
+}, function( orig, fix ) {
+ jQuery.event.special[ orig ] = {
+ setup: function( data ) {
+ jQuery.event.add( this, fix, data && data.selector ? delegate : withinElement, orig );
+ },
+ teardown: function( data ) {
+ jQuery.event.remove( this, fix, data && data.selector ? delegate : withinElement );
+ }
+ };
+});
+
+// submit delegation
+if ( !jQuery.support.submitBubbles ) {
+
+ jQuery.event.special.submit = {
+ setup: function( data, namespaces ) {
+ if ( !jQuery.nodeName( this, "form" ) ) {
+ jQuery.event.add(this, "click.specialSubmit", function( e ) {
+ var elem = e.target,
+ type = elem.type;
+
+ if ( (type === "submit" || type === "image") && jQuery( elem ).closest("form").length ) {
+ trigger( "submit", this, arguments );
+ }
+ });
+
+ jQuery.event.add(this, "keypress.specialSubmit", function( e ) {
+ var elem = e.target,
+ type = elem.type;
+
+ if ( (type === "text" || type === "password") && jQuery( elem ).closest("form").length && e.keyCode === 13 ) {
+ trigger( "submit", this, arguments );
+ }
+ });
+
+ } else {
+ return false;
+ }
+ },
+
+ teardown: function( namespaces ) {
+ jQuery.event.remove( this, ".specialSubmit" );
+ }
+ };
+
+}
+
+// change delegation, happens here so we have bind.
+if ( !jQuery.support.changeBubbles ) {
+
+ var changeFilters,
+
+ getVal = function( elem ) {
+ var type = elem.type, val = elem.value;
+
+ if ( type === "radio" || type === "checkbox" ) {
+ val = elem.checked;
+
+ } else if ( type === "select-multiple" ) {
+ val = elem.selectedIndex > -1 ?
+ jQuery.map( elem.options, function( elem ) {
+ return elem.selected;
+ }).join("-") :
+ "";
+
+ } else if ( jQuery.nodeName( elem, "select" ) ) {
+ val = elem.selectedIndex;
+ }
+
+ return val;
+ },
+
+ testChange = function testChange( e ) {
+ var elem = e.target, data, val;
+
+ if ( !rformElems.test( elem.nodeName ) || elem.readOnly ) {
+ return;
+ }
+
+ data = jQuery._data( elem, "_change_data" );
+ val = getVal(elem);
+
+ // the current data will be also retrieved by beforeactivate
+ if ( e.type !== "focusout" || elem.type !== "radio" ) {
+ jQuery._data( elem, "_change_data", val );
+ }
+
+ if ( data === undefined || val === data ) {
+ return;
+ }
+
+ if ( data != null || val ) {
+ e.type = "change";
+ e.liveFired = undefined;
+ jQuery.event.trigger( e, arguments[1], elem );
+ }
+ };
+
+ jQuery.event.special.change = {
+ filters: {
+ focusout: testChange,
+
+ beforedeactivate: testChange,
+
+ click: function( e ) {
+ var elem = e.target, type = jQuery.nodeName( elem, "input" ) ? elem.type : "";
+
+ if ( type === "radio" || type === "checkbox" || jQuery.nodeName( elem, "select" ) ) {
+ testChange.call( this, e );
+ }
+ },
+
+ // Change has to be called before submit
+ // Keydown will be called before keypress, which is used in submit-event delegation
+ keydown: function( e ) {
+ var elem = e.target, type = jQuery.nodeName( elem, "input" ) ? elem.type : "";
+
+ if ( (e.keyCode === 13 && !jQuery.nodeName( elem, "textarea" ) ) ||
+ (e.keyCode === 32 && (type === "checkbox" || type === "radio")) ||
+ type === "select-multiple" ) {
+ testChange.call( this, e );
+ }
+ },
+
+ // Beforeactivate happens also before the previous element is blurred
+ // with this event you can't trigger a change event, but you can store
+ // information
+ beforeactivate: function( e ) {
+ var elem = e.target;
+ jQuery._data( elem, "_change_data", getVal(elem) );
+ }
+ },
+
+ setup: function( data, namespaces ) {
+ if ( this.type === "file" ) {
+ return false;
+ }
+
+ for ( var type in changeFilters ) {
+ jQuery.event.add( this, type + ".specialChange", changeFilters[type] );
+ }
+
+ return rformElems.test( this.nodeName );
+ },
+
+ teardown: function( namespaces ) {
+ jQuery.event.remove( this, ".specialChange" );
+
+ return rformElems.test( this.nodeName );
+ }
+ };
+
+ changeFilters = jQuery.event.special.change.filters;
+
+ // Handle when the input is .focus()'d
+ changeFilters.focus = changeFilters.beforeactivate;
+}
+
+function trigger( type, elem, args ) {
+ // Piggyback on a donor event to simulate a different one.
+ // Fake originalEvent to avoid donor's stopPropagation, but if the
+ // simulated event prevents default then we do the same on the donor.
+ // Don't pass args or remember liveFired; they apply to the donor event.
+ var event = jQuery.extend( {}, args[ 0 ] );
+ event.type = type;
+ event.originalEvent = {};
+ event.liveFired = undefined;
+ jQuery.event.handle.call( elem, event );
+ if ( event.isDefaultPrevented() ) {
+ args[ 0 ].preventDefault();
+ }
+}
+
+// Create "bubbling" focus and blur events
+if ( !jQuery.support.focusinBubbles ) {
+ jQuery.each({ focus: "focusin", blur: "focusout" }, function( orig, fix ) {
+
+ // Attach a single capturing handler while someone wants focusin/focusout
+ var attaches = 0;
+
+ jQuery.event.special[ fix ] = {
+ setup: function() {
+ if ( attaches++ === 0 ) {
+ document.addEventListener( orig, handler, true );
+ }
+ },
+ teardown: function() {
+ if ( --attaches === 0 ) {
+ document.removeEventListener( orig, handler, true );
+ }
+ }
+ };
+
+ function handler( donor ) {
+ // Donor event is always a native one; fix it and switch its type.
+ // Let focusin/out handler cancel the donor focus/blur event.
+ var e = jQuery.event.fix( donor );
+ e.type = fix;
+ e.originalEvent = {};
+ jQuery.event.trigger( e, null, e.target );
+ if ( e.isDefaultPrevented() ) {
+ donor.preventDefault();
+ }
+ }
+ });
+}
+
+jQuery.each(["bind", "one"], function( i, name ) {
+ jQuery.fn[ name ] = function( type, data, fn ) {
+ var handler;
+
+ // Handle object literals
+ if ( typeof type === "object" ) {
+ for ( var key in type ) {
+ this[ name ](key, data, type[key], fn);
+ }
+ return this;
+ }
+
+ if ( arguments.length === 2 || data === false ) {
+ fn = data;
+ data = undefined;
+ }
+
+ if ( name === "one" ) {
+ handler = function( event ) {
+ jQuery( this ).unbind( event, handler );
+ return fn.apply( this, arguments );
+ };
+ handler.guid = fn.guid || jQuery.guid++;
+ } else {
+ handler = fn;
+ }
+
+ if ( type === "unload" && name !== "one" ) {
+ this.one( type, data, fn );
+
+ } else {
+ for ( var i = 0, l = this.length; i < l; i++ ) {
+ jQuery.event.add( this[i], type, handler, data );
+ }
+ }
+
+ return this;
+ };
+});
+
+jQuery.fn.extend({
+ unbind: function( type, fn ) {
+ // Handle object literals
+ if ( typeof type === "object" && !type.preventDefault ) {
+ for ( var key in type ) {
+ this.unbind(key, type[key]);
+ }
+
+ } else {
+ for ( var i = 0, l = this.length; i < l; i++ ) {
+ jQuery.event.remove( this[i], type, fn );
+ }
+ }
+
+ return this;
+ },
+
+ delegate: function( selector, types, data, fn ) {
+ return this.live( types, data, fn, selector );
+ },
+
+ undelegate: function( selector, types, fn ) {
+ if ( arguments.length === 0 ) {
+ return this.unbind( "live" );
+
+ } else {
+ return this.die( types, null, fn, selector );
+ }
+ },
+
+ trigger: function( type, data ) {
+ return this.each(function() {
+ jQuery.event.trigger( type, data, this );
+ });
+ },
+
+ triggerHandler: function( type, data ) {
+ if ( this[0] ) {
+ return jQuery.event.trigger( type, data, this[0], true );
+ }
+ },
+
+ toggle: function( fn ) {
+ // Save reference to arguments for access in closure
+ var args = arguments,
+ guid = fn.guid || jQuery.guid++,
+ i = 0,
+ toggler = function( event ) {
+ // Figure out which function to execute
+ var lastToggle = ( jQuery.data( this, "lastToggle" + fn.guid ) || 0 ) % i;
+ jQuery.data( this, "lastToggle" + fn.guid, lastToggle + 1 );
+
+ // Make sure that clicks stop
+ event.preventDefault();
+
+ // and execute the function
+ return args[ lastToggle ].apply( this, arguments ) || false;
+ };
+
+ // link all the functions, so any of them can unbind this click handler
+ toggler.guid = guid;
+ while ( i < args.length ) {
+ args[ i++ ].guid = guid;
+ }
+
+ return this.click( toggler );
+ },
+
+ hover: function( fnOver, fnOut ) {
+ return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );
+ }
+});
+
+var liveMap = {
+ focus: "focusin",
+ blur: "focusout",
+ mouseenter: "mouseover",
+ mouseleave: "mouseout"
+};
+
+jQuery.each(["live", "die"], function( i, name ) {
+ jQuery.fn[ name ] = function( types, data, fn, origSelector /* Internal Use Only */ ) {
+ var type, i = 0, match, namespaces, preType,
+ selector = origSelector || this.selector,
+ context = origSelector ? this : jQuery( this.context );
+
+ if ( typeof types === "object" && !types.preventDefault ) {
+ for ( var key in types ) {
+ context[ name ]( key, data, types[key], selector );
+ }
+
+ return this;
+ }
+
+ if ( name === "die" && !types &&
+ origSelector && origSelector.charAt(0) === "." ) {
+
+ context.unbind( origSelector );
+
+ return this;
+ }
+
+ if ( data === false || jQuery.isFunction( data ) ) {
+ fn = data || returnFalse;
+ data = undefined;
+ }
+
+ types = (types || "").split(" ");
+
+ while ( (type = types[ i++ ]) != null ) {
+ match = rnamespaces.exec( type );
+ namespaces = "";
+
+ if ( match ) {
+ namespaces = match[0];
+ type = type.replace( rnamespaces, "" );
+ }
+
+ if ( type === "hover" ) {
+ types.push( "mouseenter" + namespaces, "mouseleave" + namespaces );
+ continue;
+ }
+
+ preType = type;
+
+ if ( liveMap[ type ] ) {
+ types.push( liveMap[ type ] + namespaces );
+ type = type + namespaces;
+
+ } else {
+ type = (liveMap[ type ] || type) + namespaces;
+ }
+
+ if ( name === "live" ) {
+ // bind live handler
+ for ( var j = 0, l = context.length; j < l; j++ ) {
+ jQuery.event.add( context[j], "live." + liveConvert( type, selector ),
+ { data: data, selector: selector, handler: fn, origType: type, origHandler: fn, preType: preType } );
+ }
+
+ } else {
+ // unbind live handler
+ context.unbind( "live." + liveConvert( type, selector ), fn );
+ }
+ }
+
+ return this;
+ };
+});
+
+function liveHandler( event ) {
+ var stop, maxLevel, related, match, handleObj, elem, j, i, l, data, close, namespace, ret,
+ elems = [],
+ selectors = [],
+ events = jQuery._data( this, "events" );
+
+ // Make sure we avoid non-left-click bubbling in Firefox (#3861) and disabled elements in IE (#6911)
+ if ( event.liveFired === this || !events || !events.live || event.target.disabled || event.button && event.type === "click" ) {
+ return;
+ }
+
+ if ( event.namespace ) {
+ namespace = new RegExp("(^|\\.)" + event.namespace.split(".").join("\\.(?:.*\\.)?") + "(\\.|$)");
+ }
+
+ event.liveFired = this;
+
+ var live = events.live.slice(0);
+
+ for ( j = 0; j < live.length; j++ ) {
+ handleObj = live[j];
+
+ if ( handleObj.origType.replace( rnamespaces, "" ) === event.type ) {
+ selectors.push( handleObj.selector );
+
+ } else {
+ live.splice( j--, 1 );
+ }
+ }
+
+ match = jQuery( event.target ).closest( selectors, event.currentTarget );
+
+ for ( i = 0, l = match.length; i < l; i++ ) {
+ close = match[i];
+
+ for ( j = 0; j < live.length; j++ ) {
+ handleObj = live[j];
+
+ if ( close.selector === handleObj.selector && (!namespace || namespace.test( handleObj.namespace )) && !close.elem.disabled ) {
+ elem = close.elem;
+ related = null;
+
+ // Those two events require additional checking
+ if ( handleObj.preType === "mouseenter" || handleObj.preType === "mouseleave" ) {
+ event.type = handleObj.preType;
+ related = jQuery( event.relatedTarget ).closest( handleObj.selector )[0];
+
+ // Make sure not to accidentally match a child element with the same selector
+ if ( related && jQuery.contains( elem, related ) ) {
+ related = elem;
+ }
+ }
+
+ if ( !related || related !== elem ) {
+ elems.push({ elem: elem, handleObj: handleObj, level: close.level });
+ }
+ }
+ }
+ }
+
+ for ( i = 0, l = elems.length; i < l; i++ ) {
+ match = elems[i];
+
+ if ( maxLevel && match.level > maxLevel ) {
+ break;
+ }
+
+ event.currentTarget = match.elem;
+ event.data = match.handleObj.data;
+ event.handleObj = match.handleObj;
+
+ ret = match.handleObj.origHandler.apply( match.elem, arguments );
+
+ if ( ret === false || event.isPropagationStopped() ) {
+ maxLevel = match.level;
+
+ if ( ret === false ) {
+ stop = false;
+ }
+ if ( event.isImmediatePropagationStopped() ) {
+ break;
+ }
+ }
+ }
+
+ return stop;
+}
+
+function liveConvert( type, selector ) {
+ return (type && type !== "*" ? type + "." : "") + selector.replace(rperiod, "`").replace(rspaces, "&");
+}
+
+jQuery.each( ("blur focus focusin focusout load resize scroll unload click dblclick " +
+ "mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " +
+ "change select submit keydown keypress keyup error").split(" "), function( i, name ) {
+
+ // Handle event binding
+ jQuery.fn[ name ] = function( data, fn ) {
+ if ( fn == null ) {
+ fn = data;
+ data = null;
+ }
+
+ return arguments.length > 0 ?
+ this.bind( name, data, fn ) :
+ this.trigger( name );
+ };
+
+ if ( jQuery.attrFn ) {
+ jQuery.attrFn[ name ] = true;
+ }
+});
+
+
+
+/*!
+ * Sizzle CSS Selector Engine
+ * Copyright 2011, The Dojo Foundation
+ * Released under the MIT, BSD, and GPL Licenses.
+ * More information: http://sizzlejs.com/
+ */
+(function(){
+
+var chunker = /((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,
+ done = 0,
+ toString = Object.prototype.toString,
+ hasDuplicate = false,
+ baseHasDuplicate = true,
+ rBackslash = /\\/g,
+ rNonWord = /\W/;
+
+// Here we check if the JavaScript engine is using some sort of
+// optimization where it does not always call our comparision
+// function. If that is the case, discard the hasDuplicate value.
+// Thus far that includes Google Chrome.
+[0, 0].sort(function() {
+ baseHasDuplicate = false;
+ return 0;
+});
+
+var Sizzle = function( selector, context, results, seed ) {
+ results = results || [];
+ context = context || document;
+
+ var origContext = context;
+
+ if ( context.nodeType !== 1 && context.nodeType !== 9 ) {
+ return [];
+ }
+
+ if ( !selector || typeof selector !== "string" ) {
+ return results;
+ }
+
+ var m, set, checkSet, extra, ret, cur, pop, i,
+ prune = true,
+ contextXML = Sizzle.isXML( context ),
+ parts = [],
+ soFar = selector;
+
+ // Reset the position of the chunker regexp (start from head)
+ do {
+ chunker.exec( "" );
+ m = chunker.exec( soFar );
+
+ if ( m ) {
+ soFar = m[3];
+
+ parts.push( m[1] );
+
+ if ( m[2] ) {
+ extra = m[3];
+ break;
+ }
+ }
+ } while ( m );
+
+ if ( parts.length > 1 && origPOS.exec( selector ) ) {
+
+ if ( parts.length === 2 && Expr.relative[ parts[0] ] ) {
+ set = posProcess( parts[0] + parts[1], context );
+
+ } else {
+ set = Expr.relative[ parts[0] ] ?
+ [ context ] :
+ Sizzle( parts.shift(), context );
+
+ while ( parts.length ) {
+ selector = parts.shift();
+
+ if ( Expr.relative[ selector ] ) {
+ selector += parts.shift();
+ }
+
+ set = posProcess( selector, set );
+ }
+ }
+
+ } else {
+ // Take a shortcut and set the context if the root selector is an ID
+ // (but not if it'll be faster if the inner selector is an ID)
+ if ( !seed && parts.length > 1 && context.nodeType === 9 && !contextXML &&
+ Expr.match.ID.test(parts[0]) && !Expr.match.ID.test(parts[parts.length - 1]) ) {
+
+ ret = Sizzle.find( parts.shift(), context, contextXML );
+ context = ret.expr ?
+ Sizzle.filter( ret.expr, ret.set )[0] :
+ ret.set[0];
+ }
+
+ if ( context ) {
+ ret = seed ?
+ { expr: parts.pop(), set: makeArray(seed) } :
+ Sizzle.find( parts.pop(), parts.length === 1 && (parts[0] === "~" || parts[0] === "+") && context.parentNode ? context.parentNode : context, contextXML );
+
+ set = ret.expr ?
+ Sizzle.filter( ret.expr, ret.set ) :
+ ret.set;
+
+ if ( parts.length > 0 ) {
+ checkSet = makeArray( set );
+
+ } else {
+ prune = false;
+ }
+
+ while ( parts.length ) {
+ cur = parts.pop();
+ pop = cur;
+
+ if ( !Expr.relative[ cur ] ) {
+ cur = "";
+ } else {
+ pop = parts.pop();
+ }
+
+ if ( pop == null ) {
+ pop = context;
+ }
+
+ Expr.relative[ cur ]( checkSet, pop, contextXML );
+ }
+
+ } else {
+ checkSet = parts = [];
+ }
+ }
+
+ if ( !checkSet ) {
+ checkSet = set;
+ }
+
+ if ( !checkSet ) {
+ Sizzle.error( cur || selector );
+ }
+
+ if ( toString.call(checkSet) === "[object Array]" ) {
+ if ( !prune ) {
+ results.push.apply( results, checkSet );
+
+ } else if ( context && context.nodeType === 1 ) {
+ for ( i = 0; checkSet[i] != null; i++ ) {
+ if ( checkSet[i] && (checkSet[i] === true || checkSet[i].nodeType === 1 && Sizzle.contains(context, checkSet[i])) ) {
+ results.push( set[i] );
+ }
+ }
+
+ } else {
+ for ( i = 0; checkSet[i] != null; i++ ) {
+ if ( checkSet[i] && checkSet[i].nodeType === 1 ) {
+ results.push( set[i] );
+ }
+ }
+ }
+
+ } else {
+ makeArray( checkSet, results );
+ }
+
+ if ( extra ) {
+ Sizzle( extra, origContext, results, seed );
+ Sizzle.uniqueSort( results );
+ }
+
+ return results;
+};
+
+Sizzle.uniqueSort = function( results ) {
+ if ( sortOrder ) {
+ hasDuplicate = baseHasDuplicate;
+ results.sort( sortOrder );
+
+ if ( hasDuplicate ) {
+ for ( var i = 1; i < results.length; i++ ) {
+ if ( results[i] === results[ i - 1 ] ) {
+ results.splice( i--, 1 );
+ }
+ }
+ }
+ }
+
+ return results;
+};
+
+Sizzle.matches = function( expr, set ) {
+ return Sizzle( expr, null, null, set );
+};
+
+Sizzle.matchesSelector = function( node, expr ) {
+ return Sizzle( expr, null, null, [node] ).length > 0;
+};
+
+Sizzle.find = function( expr, context, isXML ) {
+ var set;
+
+ if ( !expr ) {
+ return [];
+ }
+
+ for ( var i = 0, l = Expr.order.length; i < l; i++ ) {
+ var match,
+ type = Expr.order[i];
+
+ if ( (match = Expr.leftMatch[ type ].exec( expr )) ) {
+ var left = match[1];
+ match.splice( 1, 1 );
+
+ if ( left.substr( left.length - 1 ) !== "\\" ) {
+ match[1] = (match[1] || "").replace( rBackslash, "" );
+ set = Expr.find[ type ]( match, context, isXML );
+
+ if ( set != null ) {
+ expr = expr.replace( Expr.match[ type ], "" );
+ break;
+ }
+ }
+ }
+ }
+
+ if ( !set ) {
+ set = typeof context.getElementsByTagName !== "undefined" ?
+ context.getElementsByTagName( "*" ) :
+ [];
+ }
+
+ return { set: set, expr: expr };
+};
+
+Sizzle.filter = function( expr, set, inplace, not ) {
+ var match, anyFound,
+ old = expr,
+ result = [],
+ curLoop = set,
+ isXMLFilter = set && set[0] && Sizzle.isXML( set[0] );
+
+ while ( expr && set.length ) {
+ for ( var type in Expr.filter ) {
+ if ( (match = Expr.leftMatch[ type ].exec( expr )) != null && match[2] ) {
+ var found, item,
+ filter = Expr.filter[ type ],
+ left = match[1];
+
+ anyFound = false;
+
+ match.splice(1,1);
+
+ if ( left.substr( left.length - 1 ) === "\\" ) {
+ continue;
+ }
+
+ if ( curLoop === result ) {
+ result = [];
+ }
+
+ if ( Expr.preFilter[ type ] ) {
+ match = Expr.preFilter[ type ]( match, curLoop, inplace, result, not, isXMLFilter );
+
+ if ( !match ) {
+ anyFound = found = true;
+
+ } else if ( match === true ) {
+ continue;
+ }
+ }
+
+ if ( match ) {
+ for ( var i = 0; (item = curLoop[i]) != null; i++ ) {
+ if ( item ) {
+ found = filter( item, match, i, curLoop );
+ var pass = not ^ !!found;
+
+ if ( inplace && found != null ) {
+ if ( pass ) {
+ anyFound = true;
+
+ } else {
+ curLoop[i] = false;
+ }
+
+ } else if ( pass ) {
+ result.push( item );
+ anyFound = true;
+ }
+ }
+ }
+ }
+
+ if ( found !== undefined ) {
+ if ( !inplace ) {
+ curLoop = result;
+ }
+
+ expr = expr.replace( Expr.match[ type ], "" );
+
+ if ( !anyFound ) {
+ return [];
+ }
+
+ break;
+ }
+ }
+ }
+
+ // Improper expression
+ if ( expr === old ) {
+ if ( anyFound == null ) {
+ Sizzle.error( expr );
+
+ } else {
+ break;
+ }
+ }
+
+ old = expr;
+ }
+
+ return curLoop;
+};
+
+Sizzle.error = function( msg ) {
+ throw "Syntax error, unrecognized expression: " + msg;
+};
+
+var Expr = Sizzle.selectors = {
+ order: [ "ID", "NAME", "TAG" ],
+
+ match: {
+ ID: /#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,
+ CLASS: /\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,
+ NAME: /\[name=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*\]/,
+ ATTR: /\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(?:(['"])(.*?)\3|(#?(?:[\w\u00c0-\uFFFF\-]|\\.)*)|)|)\s*\]/,
+ TAG: /^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/,
+ CHILD: /:(only|nth|last|first)-child(?:\(\s*(even|odd|(?:[+\-]?\d+|(?:[+\-]?\d*)?n\s*(?:[+\-]\s*\d+)?))\s*\))?/,
+ POS: /:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/,
+ PSEUDO: /:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/
+ },
+
+ leftMatch: {},
+
+ attrMap: {
+ "class": "className",
+ "for": "htmlFor"
+ },
+
+ attrHandle: {
+ href: function( elem ) {
+ return elem.getAttribute( "href" );
+ },
+ type: function( elem ) {
+ return elem.getAttribute( "type" );
+ }
+ },
+
+ relative: {
+ "+": function(checkSet, part){
+ var isPartStr = typeof part === "string",
+ isTag = isPartStr && !rNonWord.test( part ),
+ isPartStrNotTag = isPartStr && !isTag;
+
+ if ( isTag ) {
+ part = part.toLowerCase();
+ }
+
+ for ( var i = 0, l = checkSet.length, elem; i < l; i++ ) {
+ if ( (elem = checkSet[i]) ) {
+ while ( (elem = elem.previousSibling) && elem.nodeType !== 1 ) {}
+
+ checkSet[i] = isPartStrNotTag || elem && elem.nodeName.toLowerCase() === part ?
+ elem || false :
+ elem === part;
+ }
+ }
+
+ if ( isPartStrNotTag ) {
+ Sizzle.filter( part, checkSet, true );
+ }
+ },
+
+ ">": function( checkSet, part ) {
+ var elem,
+ isPartStr = typeof part === "string",
+ i = 0,
+ l = checkSet.length;
+
+ if ( isPartStr && !rNonWord.test( part ) ) {
+ part = part.toLowerCase();
+
+ for ( ; i < l; i++ ) {
+ elem = checkSet[i];
+
+ if ( elem ) {
+ var parent = elem.parentNode;
+ checkSet[i] = parent.nodeName.toLowerCase() === part ? parent : false;
+ }
+ }
+
+ } else {
+ for ( ; i < l; i++ ) {
+ elem = checkSet[i];
+
+ if ( elem ) {
+ checkSet[i] = isPartStr ?
+ elem.parentNode :
+ elem.parentNode === part;
+ }
+ }
+
+ if ( isPartStr ) {
+ Sizzle.filter( part, checkSet, true );
+ }
+ }
+ },
+
+ "": function(checkSet, part, isXML){
+ var nodeCheck,
+ doneName = done++,
+ checkFn = dirCheck;
+
+ if ( typeof part === "string" && !rNonWord.test( part ) ) {
+ part = part.toLowerCase();
+ nodeCheck = part;
+ checkFn = dirNodeCheck;
+ }
+
+ checkFn( "parentNode", part, doneName, checkSet, nodeCheck, isXML );
+ },
+
+ "~": function( checkSet, part, isXML ) {
+ var nodeCheck,
+ doneName = done++,
+ checkFn = dirCheck;
+
+ if ( typeof part === "string" && !rNonWord.test( part ) ) {
+ part = part.toLowerCase();
+ nodeCheck = part;
+ checkFn = dirNodeCheck;
+ }
+
+ checkFn( "previousSibling", part, doneName, checkSet, nodeCheck, isXML );
+ }
+ },
+
+ find: {
+ ID: function( match, context, isXML ) {
+ if ( typeof context.getElementById !== "undefined" && !isXML ) {
+ var m = context.getElementById(match[1]);
+ // Check parentNode to catch when Blackberry 4.6 returns
+ // nodes that are no longer in the document #6963
+ return m && m.parentNode ? [m] : [];
+ }
+ },
+
+ NAME: function( match, context ) {
+ if ( typeof context.getElementsByName !== "undefined" ) {
+ var ret = [],
+ results = context.getElementsByName( match[1] );
+
+ for ( var i = 0, l = results.length; i < l; i++ ) {
+ if ( results[i].getAttribute("name") === match[1] ) {
+ ret.push( results[i] );
+ }
+ }
+
+ return ret.length === 0 ? null : ret;
+ }
+ },
+
+ TAG: function( match, context ) {
+ if ( typeof context.getElementsByTagName !== "undefined" ) {
+ return context.getElementsByTagName( match[1] );
+ }
+ }
+ },
+ preFilter: {
+ CLASS: function( match, curLoop, inplace, result, not, isXML ) {
+ match = " " + match[1].replace( rBackslash, "" ) + " ";
+
+ if ( isXML ) {
+ return match;
+ }
+
+ for ( var i = 0, elem; (elem = curLoop[i]) != null; i++ ) {
+ if ( elem ) {
+ if ( not ^ (elem.className && (" " + elem.className + " ").replace(/[\t\n\r]/g, " ").indexOf(match) >= 0) ) {
+ if ( !inplace ) {
+ result.push( elem );
+ }
+
+ } else if ( inplace ) {
+ curLoop[i] = false;
+ }
+ }
+ }
+
+ return false;
+ },
+
+ ID: function( match ) {
+ return match[1].replace( rBackslash, "" );
+ },
+
+ TAG: function( match, curLoop ) {
+ return match[1].replace( rBackslash, "" ).toLowerCase();
+ },
+
+ CHILD: function( match ) {
+ if ( match[1] === "nth" ) {
+ if ( !match[2] ) {
+ Sizzle.error( match[0] );
+ }
+
+ match[2] = match[2].replace(/^\+|\s*/g, '');
+
+ // parse equations like 'even', 'odd', '5', '2n', '3n+2', '4n-1', '-n+6'
+ var test = /(-?)(\d*)(?:n([+\-]?\d*))?/.exec(
+ match[2] === "even" && "2n" || match[2] === "odd" && "2n+1" ||
+ !/\D/.test( match[2] ) && "0n+" + match[2] || match[2]);
+
+ // calculate the numbers (first)n+(last) including if they are negative
+ match[2] = (test[1] + (test[2] || 1)) - 0;
+ match[3] = test[3] - 0;
+ }
+ else if ( match[2] ) {
+ Sizzle.error( match[0] );
+ }
+
+ // TODO: Move to normal caching system
+ match[0] = done++;
+
+ return match;
+ },
+
+ ATTR: function( match, curLoop, inplace, result, not, isXML ) {
+ var name = match[1] = match[1].replace( rBackslash, "" );
+
+ if ( !isXML && Expr.attrMap[name] ) {
+ match[1] = Expr.attrMap[name];
+ }
+
+ // Handle if an un-quoted value was used
+ match[4] = ( match[4] || match[5] || "" ).replace( rBackslash, "" );
+
+ if ( match[2] === "~=" ) {
+ match[4] = " " + match[4] + " ";
+ }
+
+ return match;
+ },
+
+ PSEUDO: function( match, curLoop, inplace, result, not ) {
+ if ( match[1] === "not" ) {
+ // If we're dealing with a complex expression, or a simple one
+ if ( ( chunker.exec(match[3]) || "" ).length > 1 || /^\w/.test(match[3]) ) {
+ match[3] = Sizzle(match[3], null, null, curLoop);
+
+ } else {
+ var ret = Sizzle.filter(match[3], curLoop, inplace, true ^ not);
+
+ if ( !inplace ) {
+ result.push.apply( result, ret );
+ }
+
+ return false;
+ }
+
+ } else if ( Expr.match.POS.test( match[0] ) || Expr.match.CHILD.test( match[0] ) ) {
+ return true;
+ }
+
+ return match;
+ },
+
+ POS: function( match ) {
+ match.unshift( true );
+
+ return match;
+ }
+ },
+
+ filters: {
+ enabled: function( elem ) {
+ return elem.disabled === false && elem.type !== "hidden";
+ },
+
+ disabled: function( elem ) {
+ return elem.disabled === true;
+ },
+
+ checked: function( elem ) {
+ return elem.checked === true;
+ },
+
+ selected: function( elem ) {
+ // Accessing this property makes selected-by-default
+ // options in Safari work properly
+ if ( elem.parentNode ) {
+ elem.parentNode.selectedIndex;
+ }
+
+ return elem.selected === true;
+ },
+
+ parent: function( elem ) {
+ return !!elem.firstChild;
+ },
+
+ empty: function( elem ) {
+ return !elem.firstChild;
+ },
+
+ has: function( elem, i, match ) {
+ return !!Sizzle( match[3], elem ).length;
+ },
+
+ header: function( elem ) {
+ return (/h\d/i).test( elem.nodeName );
+ },
+
+ text: function( elem ) {
+ var attr = elem.getAttribute( "type" ), type = elem.type;
+ // IE6 and 7 will map elem.type to 'text' for new HTML5 types (search, etc)
+ // use getAttribute instead to test this case
+ return elem.nodeName.toLowerCase() === "input" && "text" === type && ( attr === type || attr === null );
+ },
+
+ radio: function( elem ) {
+ return elem.nodeName.toLowerCase() === "input" && "radio" === elem.type;
+ },
+
+ checkbox: function( elem ) {
+ return elem.nodeName.toLowerCase() === "input" && "checkbox" === elem.type;
+ },
+
+ file: function( elem ) {
+ return elem.nodeName.toLowerCase() === "input" && "file" === elem.type;
+ },
+
+ password: function( elem ) {
+ return elem.nodeName.toLowerCase() === "input" && "password" === elem.type;
+ },
+
+ submit: function( elem ) {
+ var name = elem.nodeName.toLowerCase();
+ return (name === "input" || name === "button") && "submit" === elem.type;
+ },
+
+ image: function( elem ) {
+ return elem.nodeName.toLowerCase() === "input" && "image" === elem.type;
+ },
+
+ reset: function( elem ) {
+ var name = elem.nodeName.toLowerCase();
+ return (name === "input" || name === "button") && "reset" === elem.type;
+ },
+
+ button: function( elem ) {
+ var name = elem.nodeName.toLowerCase();
+ return name === "input" && "button" === elem.type || name === "button";
+ },
+
+ input: function( elem ) {
+ return (/input|select|textarea|button/i).test( elem.nodeName );
+ },
+
+ focus: function( elem ) {
+ return elem === elem.ownerDocument.activeElement;
+ }
+ },
+ setFilters: {
+ first: function( elem, i ) {
+ return i === 0;
+ },
+
+ last: function( elem, i, match, array ) {
+ return i === array.length - 1;
+ },
+
+ even: function( elem, i ) {
+ return i % 2 === 0;
+ },
+
+ odd: function( elem, i ) {
+ return i % 2 === 1;
+ },
+
+ lt: function( elem, i, match ) {
+ return i < match[3] - 0;
+ },
+
+ gt: function( elem, i, match ) {
+ return i > match[3] - 0;
+ },
+
+ nth: function( elem, i, match ) {
+ return match[3] - 0 === i;
+ },
+
+ eq: function( elem, i, match ) {
+ return match[3] - 0 === i;
+ }
+ },
+ filter: {
+ PSEUDO: function( elem, match, i, array ) {
+ var name = match[1],
+ filter = Expr.filters[ name ];
+
+ if ( filter ) {
+ return filter( elem, i, match, array );
+
+ } else if ( name === "contains" ) {
+ return (elem.textContent || elem.innerText || Sizzle.getText([ elem ]) || "").indexOf(match[3]) >= 0;
+
+ } else if ( name === "not" ) {
+ var not = match[3];
+
+ for ( var j = 0, l = not.length; j < l; j++ ) {
+ if ( not[j] === elem ) {
+ return false;
+ }
+ }
+
+ return true;
+
+ } else {
+ Sizzle.error( name );
+ }
+ },
+
+ CHILD: function( elem, match ) {
+ var type = match[1],
+ node = elem;
+
+ switch ( type ) {
+ case "only":
+ case "first":
+ while ( (node = node.previousSibling) ) {
+ if ( node.nodeType === 1 ) {
+ return false;
+ }
+ }
+
+ if ( type === "first" ) {
+ return true;
+ }
+
+ node = elem;
+
+ case "last":
+ while ( (node = node.nextSibling) ) {
+ if ( node.nodeType === 1 ) {
+ return false;
+ }
+ }
+
+ return true;
+
+ case "nth":
+ var first = match[2],
+ last = match[3];
+
+ if ( first === 1 && last === 0 ) {
+ return true;
+ }
+
+ var doneName = match[0],
+ parent = elem.parentNode;
+
+ if ( parent && (parent.sizcache !== doneName || !elem.nodeIndex) ) {
+ var count = 0;
+
+ for ( node = parent.firstChild; node; node = node.nextSibling ) {
+ if ( node.nodeType === 1 ) {
+ node.nodeIndex = ++count;
+ }
+ }
+
+ parent.sizcache = doneName;
+ }
+
+ var diff = elem.nodeIndex - last;
+
+ if ( first === 0 ) {
+ return diff === 0;
+
+ } else {
+ return ( diff % first === 0 && diff / first >= 0 );
+ }
+ }
+ },
+
+ ID: function( elem, match ) {
+ return elem.nodeType === 1 && elem.getAttribute("id") === match;
+ },
+
+ TAG: function( elem, match ) {
+ return (match === "*" && elem.nodeType === 1) || elem.nodeName.toLowerCase() === match;
+ },
+
+ CLASS: function( elem, match ) {
+ return (" " + (elem.className || elem.getAttribute("class")) + " ")
+ .indexOf( match ) > -1;
+ },
+
+ ATTR: function( elem, match ) {
+ var name = match[1],
+ result = Expr.attrHandle[ name ] ?
+ Expr.attrHandle[ name ]( elem ) :
+ elem[ name ] != null ?
+ elem[ name ] :
+ elem.getAttribute( name ),
+ value = result + "",
+ type = match[2],
+ check = match[4];
+
+ return result == null ?
+ type === "!=" :
+ type === "=" ?
+ value === check :
+ type === "*=" ?
+ value.indexOf(check) >= 0 :
+ type === "~=" ?
+ (" " + value + " ").indexOf(check) >= 0 :
+ !check ?
+ value && result !== false :
+ type === "!=" ?
+ value !== check :
+ type === "^=" ?
+ value.indexOf(check) === 0 :
+ type === "$=" ?
+ value.substr(value.length - check.length) === check :
+ type === "|=" ?
+ value === check || value.substr(0, check.length + 1) === check + "-" :
+ false;
+ },
+
+ POS: function( elem, match, i, array ) {
+ var name = match[2],
+ filter = Expr.setFilters[ name ];
+
+ if ( filter ) {
+ return filter( elem, i, match, array );
+ }
+ }
+ }
+};
+
+var origPOS = Expr.match.POS,
+ fescape = function(all, num){
+ return "\\" + (num - 0 + 1);
+ };
+
+for ( var type in Expr.match ) {
+ Expr.match[ type ] = new RegExp( Expr.match[ type ].source + (/(?![^\[]*\])(?![^\(]*\))/.source) );
+ Expr.leftMatch[ type ] = new RegExp( /(^(?:.|\r|\n)*?)/.source + Expr.match[ type ].source.replace(/\\(\d+)/g, fescape) );
+}
+
+var makeArray = function( array, results ) {
+ array = Array.prototype.slice.call( array, 0 );
+
+ if ( results ) {
+ results.push.apply( results, array );
+ return results;
+ }
+
+ return array;
+};
+
+// Perform a simple check to determine if the browser is capable of
+// converting a NodeList to an array using builtin methods.
+// Also verifies that the returned array holds DOM nodes
+// (which is not the case in the Blackberry browser)
+try {
+ Array.prototype.slice.call( document.documentElement.childNodes, 0 )[0].nodeType;
+
+// Provide a fallback method if it does not work
+} catch( e ) {
+ makeArray = function( array, results ) {
+ var i = 0,
+ ret = results || [];
+
+ if ( toString.call(array) === "[object Array]" ) {
+ Array.prototype.push.apply( ret, array );
+
+ } else {
+ if ( typeof array.length === "number" ) {
+ for ( var l = array.length; i < l; i++ ) {
+ ret.push( array[i] );
+ }
+
+ } else {
+ for ( ; array[i]; i++ ) {
+ ret.push( array[i] );
+ }
+ }
+ }
+
+ return ret;
+ };
+}
+
+var sortOrder, siblingCheck;
+
+if ( document.documentElement.compareDocumentPosition ) {
+ sortOrder = function( a, b ) {
+ if ( a === b ) {
+ hasDuplicate = true;
+ return 0;
+ }
+
+ if ( !a.compareDocumentPosition || !b.compareDocumentPosition ) {
+ return a.compareDocumentPosition ? -1 : 1;
+ }
+
+ return a.compareDocumentPosition(b) & 4 ? -1 : 1;
+ };
+
+} else {
+ sortOrder = function( a, b ) {
+ // The nodes are identical, we can exit early
+ if ( a === b ) {
+ hasDuplicate = true;
+ return 0;
+
+ // Fallback to using sourceIndex (in IE) if it's available on both nodes
+ } else if ( a.sourceIndex && b.sourceIndex ) {
+ return a.sourceIndex - b.sourceIndex;
+ }
+
+ var al, bl,
+ ap = [],
+ bp = [],
+ aup = a.parentNode,
+ bup = b.parentNode,
+ cur = aup;
+
+ // If the nodes are siblings (or identical) we can do a quick check
+ if ( aup === bup ) {
+ return siblingCheck( a, b );
+
+ // If no parents were found then the nodes are disconnected
+ } else if ( !aup ) {
+ return -1;
+
+ } else if ( !bup ) {
+ return 1;
+ }
+
+ // Otherwise they're somewhere else in the tree so we need
+ // to build up a full list of the parentNodes for comparison
+ while ( cur ) {
+ ap.unshift( cur );
+ cur = cur.parentNode;
+ }
+
+ cur = bup;
+
+ while ( cur ) {
+ bp.unshift( cur );
+ cur = cur.parentNode;
+ }
+
+ al = ap.length;
+ bl = bp.length;
+
+ // Start walking down the tree looking for a discrepancy
+ for ( var i = 0; i < al && i < bl; i++ ) {
+ if ( ap[i] !== bp[i] ) {
+ return siblingCheck( ap[i], bp[i] );
+ }
+ }
+
+ // We ended someplace up the tree so do a sibling check
+ return i === al ?
+ siblingCheck( a, bp[i], -1 ) :
+ siblingCheck( ap[i], b, 1 );
+ };
+
+ siblingCheck = function( a, b, ret ) {
+ if ( a === b ) {
+ return ret;
+ }
+
+ var cur = a.nextSibling;
+
+ while ( cur ) {
+ if ( cur === b ) {
+ return -1;
+ }
+
+ cur = cur.nextSibling;
+ }
+
+ return 1;
+ };
+}
+
+// Utility function for retreiving the text value of an array of DOM nodes
+Sizzle.getText = function( elems ) {
+ var ret = "", elem;
+
+ for ( var i = 0; elems[i]; i++ ) {
+ elem = elems[i];
+
+ // Get the text from text nodes and CDATA nodes
+ if ( elem.nodeType === 3 || elem.nodeType === 4 ) {
+ ret += elem.nodeValue;
+
+ // Traverse everything else, except comment nodes
+ } else if ( elem.nodeType !== 8 ) {
+ ret += Sizzle.getText( elem.childNodes );
+ }
+ }
+
+ return ret;
+};
+
+// Check to see if the browser returns elements by name when
+// querying by getElementById (and provide a workaround)
+(function(){
+ // We're going to inject a fake input element with a specified name
+ var form = document.createElement("div"),
+ id = "script" + (new Date()).getTime(),
+ root = document.documentElement;
+
+ form.innerHTML = "<a name='" + id + "'/>";
+
+ // Inject it into the root element, check its status, and remove it quickly
+ root.insertBefore( form, root.firstChild );
+
+ // The workaround has to do additional checks after a getElementById
+ // Which slows things down for other browsers (hence the branching)
+ if ( document.getElementById( id ) ) {
+ Expr.find.ID = function( match, context, isXML ) {
+ if ( typeof context.getElementById !== "undefined" && !isXML ) {
+ var m = context.getElementById(match[1]);
+
+ return m ?
+ m.id === match[1] || typeof m.getAttributeNode !== "undefined" && m.getAttributeNode("id").nodeValue === match[1] ?
+ [m] :
+ undefined :
+ [];
+ }
+ };
+
+ Expr.filter.ID = function( elem, match ) {
+ var node = typeof elem.getAttributeNode !== "undefined" && elem.getAttributeNode("id");
+
+ return elem.nodeType === 1 && node && node.nodeValue === match;
+ };
+ }
+
+ root.removeChild( form );
+
+ // release memory in IE
+ root = form = null;
+})();
+
+(function(){
+ // Check to see if the browser returns only elements
+ // when doing getElementsByTagName("*")
+
+ // Create a fake element
+ var div = document.createElement("div");
+ div.appendChild( document.createComment("") );
+
+ // Make sure no comments are found
+ if ( div.getElementsByTagName("*").length > 0 ) {
+ Expr.find.TAG = function( match, context ) {
+ var results = context.getElementsByTagName( match[1] );
+
+ // Filter out possible comments
+ if ( match[1] === "*" ) {
+ var tmp = [];
+
+ for ( var i = 0; results[i]; i++ ) {
+ if ( results[i].nodeType === 1 ) {
+ tmp.push( results[i] );
+ }
+ }
+
+ results = tmp;
+ }
+
+ return results;
+ };
+ }
+
+ // Check to see if an attribute returns normalized href attributes
+ div.innerHTML = "<a href='#'></a>";
+
+ if ( div.firstChild && typeof div.firstChild.getAttribute !== "undefined" &&
+ div.firstChild.getAttribute("href") !== "#" ) {
+
+ Expr.attrHandle.href = function( elem ) {
+ return elem.getAttribute( "href", 2 );
+ };
+ }
+
+ // release memory in IE
+ div = null;
+})();
+
+if ( document.querySelectorAll ) {
+ (function(){
+ var oldSizzle = Sizzle,
+ div = document.createElement("div"),
+ id = "__sizzle__";
+
+ div.innerHTML = "<p class='TEST'></p>";
+
+ // Safari can't handle uppercase or unicode characters when
+ // in quirks mode.
+ if ( div.querySelectorAll && div.querySelectorAll(".TEST").length === 0 ) {
+ return;
+ }
+
+ Sizzle = function( query, context, extra, seed ) {
+ context = context || document;
+
+ // Only use querySelectorAll on non-XML documents
+ // (ID selectors don't work in non-HTML documents)
+ if ( !seed && !Sizzle.isXML(context) ) {
+ // See if we find a selector to speed up
+ var match = /^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec( query );
+
+ if ( match && (context.nodeType === 1 || context.nodeType === 9) ) {
+ // Speed-up: Sizzle("TAG")
+ if ( match[1] ) {
+ return makeArray( context.getElementsByTagName( query ), extra );
+
+ // Speed-up: Sizzle(".CLASS")
+ } else if ( match[2] && Expr.find.CLASS && context.getElementsByClassName ) {
+ return makeArray( context.getElementsByClassName( match[2] ), extra );
+ }
+ }
+
+ if ( context.nodeType === 9 ) {
+ // Speed-up: Sizzle("body")
+ // The body element only exists once, optimize finding it
+ if ( query === "body" && context.body ) {
+ return makeArray( [ context.body ], extra );
+
+ // Speed-up: Sizzle("#ID")
+ } else if ( match && match[3] ) {
+ var elem = context.getElementById( match[3] );
+
+ // Check parentNode to catch when Blackberry 4.6 returns
+ // nodes that are no longer in the document #6963
+ if ( elem && elem.parentNode ) {
+ // Handle the case where IE and Opera return items
+ // by name instead of ID
+ if ( elem.id === match[3] ) {
+ return makeArray( [ elem ], extra );
+ }
+
+ } else {
+ return makeArray( [], extra );
+ }
+ }
+
+ try {
+ return makeArray( context.querySelectorAll(query), extra );
+ } catch(qsaError) {}
+
+ // qSA works strangely on Element-rooted queries
+ // We can work around this by specifying an extra ID on the root
+ // and working up from there (Thanks to Andrew Dupont for the technique)
+ // IE 8 doesn't work on object elements
+ } else if ( context.nodeType === 1 && context.nodeName.toLowerCase() !== "object" ) {
+ var oldContext = context,
+ old = context.getAttribute( "id" ),
+ nid = old || id,
+ hasParent = context.parentNode,
+ relativeHierarchySelector = /^\s*[+~]/.test( query );
+
+ if ( !old ) {
+ context.setAttribute( "id", nid );
+ } else {
+ nid = nid.replace( /'/g, "\\$&" );
+ }
+ if ( relativeHierarchySelector && hasParent ) {
+ context = context.parentNode;
+ }
+
+ try {
+ if ( !relativeHierarchySelector || hasParent ) {
+ return makeArray( context.querySelectorAll( "[id='" + nid + "'] " + query ), extra );
+ }
+
+ } catch(pseudoError) {
+ } finally {
+ if ( !old ) {
+ oldContext.removeAttribute( "id" );
+ }
+ }
+ }
+ }
+
+ return oldSizzle(query, context, extra, seed);
+ };
+
+ for ( var prop in oldSizzle ) {
+ Sizzle[ prop ] = oldSizzle[ prop ];
+ }
+
+ // release memory in IE
+ div = null;
+ })();
+}
+
+(function(){
+ var html = document.documentElement,
+ matches = html.matchesSelector || html.mozMatchesSelector || html.webkitMatchesSelector || html.msMatchesSelector;
+
+ if ( matches ) {
+ // Check to see if it's possible to do matchesSelector
+ // on a disconnected node (IE 9 fails this)
+ var disconnectedMatch = !matches.call( document.createElement( "div" ), "div" ),
+ pseudoWorks = false;
+
+ try {
+ // This should fail with an exception
+ // Gecko does not error, returns false instead
+ matches.call( document.documentElement, "[test!='']:sizzle" );
+
+ } catch( pseudoError ) {
+ pseudoWorks = true;
+ }
+
+ Sizzle.matchesSelector = function( node, expr ) {
+ // Make sure that attribute selectors are quoted
+ expr = expr.replace(/\=\s*([^'"\]]*)\s*\]/g, "='$1']");
+
+ if ( !Sizzle.isXML( node ) ) {
+ try {
+ if ( pseudoWorks || !Expr.match.PSEUDO.test( expr ) && !/!=/.test( expr ) ) {
+ var ret = matches.call( node, expr );
+
+ // IE 9's matchesSelector returns false on disconnected nodes
+ if ( ret || !disconnectedMatch ||
+ // As well, disconnected nodes are said to be in a document
+ // fragment in IE 9, so check for that
+ node.document && node.document.nodeType !== 11 ) {
+ return ret;
+ }
+ }
+ } catch(e) {}
+ }
+
+ return Sizzle(expr, null, null, [node]).length > 0;
+ };
+ }
+})();
+
+(function(){
+ var div = document.createElement("div");
+
+ div.innerHTML = "<div class='test e'></div><div class='test'></div>";
+
+ // Opera can't find a second classname (in 9.6)
+ // Also, make sure that getElementsByClassName actually exists
+ if ( !div.getElementsByClassName || div.getElementsByClassName("e").length === 0 ) {
+ return;
+ }
+
+ // Safari caches class attributes, doesn't catch changes (in 3.2)
+ div.lastChild.className = "e";
+
+ if ( div.getElementsByClassName("e").length === 1 ) {
+ return;
+ }
+
+ Expr.order.splice(1, 0, "CLASS");
+ Expr.find.CLASS = function( match, context, isXML ) {
+ if ( typeof context.getElementsByClassName !== "undefined" && !isXML ) {
+ return context.getElementsByClassName(match[1]);
+ }
+ };
+
+ // release memory in IE
+ div = null;
+})();
+
+function dirNodeCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {
+ for ( var i = 0, l = checkSet.length; i < l; i++ ) {
+ var elem = checkSet[i];
+
+ if ( elem ) {
+ var match = false;
+
+ elem = elem[dir];
+
+ while ( elem ) {
+ if ( elem.sizcache === doneName ) {
+ match = checkSet[elem.sizset];
+ break;
+ }
+
+ if ( elem.nodeType === 1 && !isXML ){
+ elem.sizcache = doneName;
+ elem.sizset = i;
+ }
+
+ if ( elem.nodeName.toLowerCase() === cur ) {
+ match = elem;
+ break;
+ }
+
+ elem = elem[dir];
+ }
+
+ checkSet[i] = match;
+ }
+ }
+}
+
+function dirCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {
+ for ( var i = 0, l = checkSet.length; i < l; i++ ) {
+ var elem = checkSet[i];
+
+ if ( elem ) {
+ var match = false;
+
+ elem = elem[dir];
+
+ while ( elem ) {
+ if ( elem.sizcache === doneName ) {
+ match = checkSet[elem.sizset];
+ break;
+ }
+
+ if ( elem.nodeType === 1 ) {
+ if ( !isXML ) {
+ elem.sizcache = doneName;
+ elem.sizset = i;
+ }
+
+ if ( typeof cur !== "string" ) {
+ if ( elem === cur ) {
+ match = true;
+ break;
+ }
+
+ } else if ( Sizzle.filter( cur, [elem] ).length > 0 ) {
+ match = elem;
+ break;
+ }
+ }
+
+ elem = elem[dir];
+ }
+
+ checkSet[i] = match;
+ }
+ }
+}
+
+if ( document.documentElement.contains ) {
+ Sizzle.contains = function( a, b ) {
+ return a !== b && (a.contains ? a.contains(b) : true);
+ };
+
+} else if ( document.documentElement.compareDocumentPosition ) {
+ Sizzle.contains = function( a, b ) {
+ return !!(a.compareDocumentPosition(b) & 16);
+ };
+
+} else {
+ Sizzle.contains = function() {
+ return false;
+ };
+}
+
+Sizzle.isXML = function( elem ) {
+ // documentElement is verified for cases where it doesn't yet exist
+ // (such as loading iframes in IE - #4833)
+ var documentElement = (elem ? elem.ownerDocument || elem : 0).documentElement;
+
+ return documentElement ? documentElement.nodeName !== "HTML" : false;
+};
+
+var posProcess = function( selector, context ) {
+ var match,
+ tmpSet = [],
+ later = "",
+ root = context.nodeType ? [context] : context;
+
+ // Position selectors must be done after the filter
+ // And so must :not(positional) so we move all PSEUDOs to the end
+ while ( (match = Expr.match.PSEUDO.exec( selector )) ) {
+ later += match[0];
+ selector = selector.replace( Expr.match.PSEUDO, "" );
+ }
+
+ selector = Expr.relative[selector] ? selector + "*" : selector;
+
+ for ( var i = 0, l = root.length; i < l; i++ ) {
+ Sizzle( selector, root[i], tmpSet );
+ }
+
+ return Sizzle.filter( later, tmpSet );
+};
+
+// EXPOSE
+jQuery.find = Sizzle;
+jQuery.expr = Sizzle.selectors;
+jQuery.expr[":"] = jQuery.expr.filters;
+jQuery.unique = Sizzle.uniqueSort;
+jQuery.text = Sizzle.getText;
+jQuery.isXMLDoc = Sizzle.isXML;
+jQuery.contains = Sizzle.contains;
+
+
+})();
+
+
+var runtil = /Until$/,
+ rparentsprev = /^(?:parents|prevUntil|prevAll)/,
+ // Note: This RegExp should be improved, or likely pulled from Sizzle
+ rmultiselector = /,/,
+ isSimple = /^.[^:#\[\.,]*$/,
+ slice = Array.prototype.slice,
+ POS = jQuery.expr.match.POS,
+ // methods guaranteed to produce a unique set when starting from a unique set
+ guaranteedUnique = {
+ children: true,
+ contents: true,
+ next: true,
+ prev: true
+ };
+
+jQuery.fn.extend({
+ find: function( selector ) {
+ var self = this,
+ i, l;
+
+ if ( typeof selector !== "string" ) {
+ return jQuery( selector ).filter(function() {
+ for ( i = 0, l = self.length; i < l; i++ ) {
+ if ( jQuery.contains( self[ i ], this ) ) {
+ return true;
+ }
+ }
+ });
+ }
+
+ var ret = this.pushStack( "", "find", selector ),
+ length, n, r;
+
+ for ( i = 0, l = this.length; i < l; i++ ) {
+ length = ret.length;
+ jQuery.find( selector, this[i], ret );
+
+ if ( i > 0 ) {
+ // Make sure that the results are unique
+ for ( n = length; n < ret.length; n++ ) {
+ for ( r = 0; r < length; r++ ) {
+ if ( ret[r] === ret[n] ) {
+ ret.splice(n--, 1);
+ break;
+ }
+ }
+ }
+ }
+ }
+
+ return ret;
+ },
+
+ has: function( target ) {
+ var targets = jQuery( target );
+ return this.filter(function() {
+ for ( var i = 0, l = targets.length; i < l; i++ ) {
+ if ( jQuery.contains( this, targets[i] ) ) {
+ return true;
+ }
+ }
+ });
+ },
+
+ not: function( selector ) {
+ return this.pushStack( winnow(this, selector, false), "not", selector);
+ },
+
+ filter: function( selector ) {
+ return this.pushStack( winnow(this, selector, true), "filter", selector );
+ },
+
+ is: function( selector ) {
+ return !!selector && ( typeof selector === "string" ?
+ jQuery.filter( selector, this ).length > 0 :
+ this.filter( selector ).length > 0 );
+ },
+
+ closest: function( selectors, context ) {
+ var ret = [], i, l, cur = this[0];
+
+ // Array
+ if ( jQuery.isArray( selectors ) ) {
+ var match, selector,
+ matches = {},
+ level = 1;
+
+ if ( cur && selectors.length ) {
+ for ( i = 0, l = selectors.length; i < l; i++ ) {
+ selector = selectors[i];
+
+ if ( !matches[ selector ] ) {
+ matches[ selector ] = POS.test( selector ) ?
+ jQuery( selector, context || this.context ) :
+ selector;
+ }
+ }
+
+ while ( cur && cur.ownerDocument && cur !== context ) {
+ for ( selector in matches ) {
+ match = matches[ selector ];
+
+ if ( match.jquery ? match.index( cur ) > -1 : jQuery( cur ).is( match ) ) {
+ ret.push({ selector: selector, elem: cur, level: level });
+ }
+ }
+
+ cur = cur.parentNode;
+ level++;
+ }
+ }
+
+ return ret;
+ }
+
+ // String
+ var pos = POS.test( selectors ) || typeof selectors !== "string" ?
+ jQuery( selectors, context || this.context ) :
+ 0;
+
+ for ( i = 0, l = this.length; i < l; i++ ) {
+ cur = this[i];
+
+ while ( cur ) {
+ if ( pos ? pos.index(cur) > -1 : jQuery.find.matchesSelector(cur, selectors) ) {
+ ret.push( cur );
+ break;
+
+ } else {
+ cur = cur.parentNode;
+ if ( !cur || !cur.ownerDocument || cur === context || cur.nodeType === 11 ) {
+ break;
+ }
+ }
+ }
+ }
+
+ ret = ret.length > 1 ? jQuery.unique( ret ) : ret;
+
+ return this.pushStack( ret, "closest", selectors );
+ },
+
+ // Determine the position of an element within
+ // the matched set of elements
+ index: function( elem ) {
+ if ( !elem || typeof elem === "string" ) {
+ return jQuery.inArray( this[0],
+ // If it receives a string, the selector is used
+ // If it receives nothing, the siblings are used
+ elem ? jQuery( elem ) : this.parent().children() );
+ }
+ // Locate the position of the desired element
+ return jQuery.inArray(
+ // If it receives a jQuery object, the first element is used
+ elem.jquery ? elem[0] : elem, this );
+ },
+
+ add: function( selector, context ) {
+ var set = typeof selector === "string" ?
+ jQuery( selector, context ) :
+ jQuery.makeArray( selector && selector.nodeType ? [ selector ] : selector ),
+ all = jQuery.merge( this.get(), set );
+
+ return this.pushStack( isDisconnected( set[0] ) || isDisconnected( all[0] ) ?
+ all :
+ jQuery.unique( all ) );
+ },
+
+ andSelf: function() {
+ return this.add( this.prevObject );
+ }
+});
+
+// A painfully simple check to see if an element is disconnected
+// from a document (should be improved, where feasible).
+function isDisconnected( node ) {
+ return !node || !node.parentNode || node.parentNode.nodeType === 11;
+}
+
+jQuery.each({
+ parent: function( elem ) {
+ var parent = elem.parentNode;
+ return parent && parent.nodeType !== 11 ? parent : null;
+ },
+ parents: function( elem ) {
+ return jQuery.dir( elem, "parentNode" );
+ },
+ parentsUntil: function( elem, i, until ) {
+ return jQuery.dir( elem, "parentNode", until );
+ },
+ next: function( elem ) {
+ return jQuery.nth( elem, 2, "nextSibling" );
+ },
+ prev: function( elem ) {
+ return jQuery.nth( elem, 2, "previousSibling" );
+ },
+ nextAll: function( elem ) {
+ return jQuery.dir( elem, "nextSibling" );
+ },
+ prevAll: function( elem ) {
+ return jQuery.dir( elem, "previousSibling" );
+ },
+ nextUntil: function( elem, i, until ) {
+ return jQuery.dir( elem, "nextSibling", until );
+ },
+ prevUntil: function( elem, i, until ) {
+ return jQuery.dir( elem, "previousSibling", until );
+ },
+ siblings: function( elem ) {
+ return jQuery.sibling( elem.parentNode.firstChild, elem );
+ },
+ children: function( elem ) {
+ return jQuery.sibling( elem.firstChild );
+ },
+ contents: function( elem ) {
+ return jQuery.nodeName( elem, "iframe" ) ?
+ elem.contentDocument || elem.contentWindow.document :
+ jQuery.makeArray( elem.childNodes );
+ }
+}, function( name, fn ) {
+ jQuery.fn[ name ] = function( until, selector ) {
+ var ret = jQuery.map( this, fn, until ),
+ // The variable 'args' was introduced in
+ // https://github.com/jquery/jquery/commit/52a0238
+ // to work around a bug in Chrome 10 (Dev) and should be removed when the bug is fixed.
+ // http://code.google.com/p/v8/issues/detail?id=1050
+ args = slice.call(arguments);
+
+ if ( !runtil.test( name ) ) {
+ selector = until;
+ }
+
+ if ( selector && typeof selector === "string" ) {
+ ret = jQuery.filter( selector, ret );
+ }
+
+ ret = this.length > 1 && !guaranteedUnique[ name ] ? jQuery.unique( ret ) : ret;
+
+ if ( (this.length > 1 || rmultiselector.test( selector )) && rparentsprev.test( name ) ) {
+ ret = ret.reverse();
+ }
+
+ return this.pushStack( ret, name, args.join(",") );
+ };
+});
+
+jQuery.extend({
+ filter: function( expr, elems, not ) {
+ if ( not ) {
+ expr = ":not(" + expr + ")";
+ }
+
+ return elems.length === 1 ?
+ jQuery.find.matchesSelector(elems[0], expr) ? [ elems[0] ] : [] :
+ jQuery.find.matches(expr, elems);
+ },
+
+ dir: function( elem, dir, until ) {
+ var matched = [],
+ cur = elem[ dir ];
+
+ while ( cur && cur.nodeType !== 9 && (until === undefined || cur.nodeType !== 1 || !jQuery( cur ).is( until )) ) {
+ if ( cur.nodeType === 1 ) {
+ matched.push( cur );
+ }
+ cur = cur[dir];
+ }
+ return matched;
+ },
+
+ nth: function( cur, result, dir, elem ) {
+ result = result || 1;
+ var num = 0;
+
+ for ( ; cur; cur = cur[dir] ) {
+ if ( cur.nodeType === 1 && ++num === result ) {
+ break;
+ }
+ }
+
+ return cur;
+ },
+
+ sibling: function( n, elem ) {
+ var r = [];
+
+ for ( ; n; n = n.nextSibling ) {
+ if ( n.nodeType === 1 && n !== elem ) {
+ r.push( n );
+ }
+ }
+
+ return r;
+ }
+});
+
+// Implement the identical functionality for filter and not
+function winnow( elements, qualifier, keep ) {
+
+ // Can't pass null or undefined to indexOf in Firefox 4
+ // Set to 0 to skip string check
+ qualifier = qualifier || 0;
+
+ if ( jQuery.isFunction( qualifier ) ) {
+ return jQuery.grep(elements, function( elem, i ) {
+ var retVal = !!qualifier.call( elem, i, elem );
+ return retVal === keep;
+ });
+
+ } else if ( qualifier.nodeType ) {
+ return jQuery.grep(elements, function( elem, i ) {
+ return (elem === qualifier) === keep;
+ });
+
+ } else if ( typeof qualifier === "string" ) {
+ var filtered = jQuery.grep(elements, function( elem ) {
+ return elem.nodeType === 1;
+ });
+
+ if ( isSimple.test( qualifier ) ) {
+ return jQuery.filter(qualifier, filtered, !keep);
+ } else {
+ qualifier = jQuery.filter( qualifier, filtered );
+ }
+ }
+
+ return jQuery.grep(elements, function( elem, i ) {
+ return (jQuery.inArray( elem, qualifier ) >= 0) === keep;
+ });
+}
+
+
+
+
+var rinlinejQuery = / jQuery\d+="(?:\d+|null)"/g,
+ rleadingWhitespace = /^\s+/,
+ rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,
+ rtagName = /<([\w:]+)/,
+ rtbody = /<tbody/i,
+ rhtml = /<|&#?\w+;/,
+ rnocache = /<(?:script|object|embed|option|style)/i,
+ // checked="checked" or checked
+ rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i,
+ rscriptType = /\/(java|ecma)script/i,
+ rcleanScript = /^\s*<!(?:\[CDATA\[|\-\-)/,
+ wrapMap = {
+ option: [ 1, "<select multiple='multiple'>", "</select>" ],
+ legend: [ 1, "<fieldset>", "</fieldset>" ],
+ thead: [ 1, "<table>", "</table>" ],
+ tr: [ 2, "<table><tbody>", "</tbody></table>" ],
+ td: [ 3, "<table><tbody><tr>", "</tr></tbody></table>" ],
+ col: [ 2, "<table><tbody></tbody><colgroup>", "</colgroup></table>" ],
+ area: [ 1, "<map>", "</map>" ],
+ _default: [ 0, "", "" ]
+ };
+
+wrapMap.optgroup = wrapMap.option;
+wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;
+wrapMap.th = wrapMap.td;
+
+// IE can't serialize <link> and <script> tags normally
+if ( !jQuery.support.htmlSerialize ) {
+ wrapMap._default = [ 1, "div<div>", "</div>" ];
+}
+
+jQuery.fn.extend({
+ text: function( text ) {
+ if ( jQuery.isFunction(text) ) {
+ return this.each(function(i) {
+ var self = jQuery( this );
+
+ self.text( text.call(this, i, self.text()) );
+ });
+ }
+
+ if ( typeof text !== "object" && text !== undefined ) {
+ return this.empty().append( (this[0] && this[0].ownerDocument || document).createTextNode( text ) );
+ }
+
+ return jQuery.text( this );
+ },
+
+ wrapAll: function( html ) {
+ if ( jQuery.isFunction( html ) ) {
+ return this.each(function(i) {
+ jQuery(this).wrapAll( html.call(this, i) );
+ });
+ }
+
+ if ( this[0] ) {
+ // The elements to wrap the target around
+ var wrap = jQuery( html, this[0].ownerDocument ).eq(0).clone(true);
+
+ if ( this[0].parentNode ) {
+ wrap.insertBefore( this[0] );
+ }
+
+ wrap.map(function() {
+ var elem = this;
+
+ while ( elem.firstChild && elem.firstChild.nodeType === 1 ) {
+ elem = elem.firstChild;
+ }
+
+ return elem;
+ }).append( this );
+ }
+
+ return this;
+ },
+
+ wrapInner: function( html ) {
+ if ( jQuery.isFunction( html ) ) {
+ return this.each(function(i) {
+ jQuery(this).wrapInner( html.call(this, i) );
+ });
+ }
+
+ return this.each(function() {
+ var self = jQuery( this ),
+ contents = self.contents();
+
+ if ( contents.length ) {
+ contents.wrapAll( html );
+
+ } else {
+ self.append( html );
+ }
+ });
+ },
+
+ wrap: function( html ) {
+ return this.each(function() {
+ jQuery( this ).wrapAll( html );
+ });
+ },
+
+ unwrap: function() {
+ return this.parent().each(function() {
+ if ( !jQuery.nodeName( this, "body" ) ) {
+ jQuery( this ).replaceWith( this.childNodes );
+ }
+ }).end();
+ },
+
+ append: function() {
+ return this.domManip(arguments, true, function( elem ) {
+ if ( this.nodeType === 1 ) {
+ this.appendChild( elem );
+ }
+ });
+ },
+
+ prepend: function() {
+ return this.domManip(arguments, true, function( elem ) {
+ if ( this.nodeType === 1 ) {
+ this.insertBefore( elem, this.firstChild );
+ }
+ });
+ },
+
+ before: function() {
+ if ( this[0] && this[0].parentNode ) {
+ return this.domManip(arguments, false, function( elem ) {
+ this.parentNode.insertBefore( elem, this );
+ });
+ } else if ( arguments.length ) {
+ var set = jQuery(arguments[0]);
+ set.push.apply( set, this.toArray() );
+ return this.pushStack( set, "before", arguments );
+ }
+ },
+
+ after: function() {
+ if ( this[0] && this[0].parentNode ) {
+ return this.domManip(arguments, false, function( elem ) {
+ this.parentNode.insertBefore( elem, this.nextSibling );
+ });
+ } else if ( arguments.length ) {
+ var set = this.pushStack( this, "after", arguments );
+ set.push.apply( set, jQuery(arguments[0]).toArray() );
+ return set;
+ }
+ },
+
+ // keepData is for internal use only--do not document
+ remove: function( selector, keepData ) {
+ for ( var i = 0, elem; (elem = this[i]) != null; i++ ) {
+ if ( !selector || jQuery.filter( selector, [ elem ] ).length ) {
+ if ( !keepData && elem.nodeType === 1 ) {
+ jQuery.cleanData( elem.getElementsByTagName("*") );
+ jQuery.cleanData( [ elem ] );
+ }
+
+ if ( elem.parentNode ) {
+ elem.parentNode.removeChild( elem );
+ }
+ }
+ }
+
+ return this;
+ },
+
+ empty: function() {
+ for ( var i = 0, elem; (elem = this[i]) != null; i++ ) {
+ // Remove element nodes and prevent memory leaks
+ if ( elem.nodeType === 1 ) {
+ jQuery.cleanData( elem.getElementsByTagName("*") );
+ }
+
+ // Remove any remaining nodes
+ while ( elem.firstChild ) {
+ elem.removeChild( elem.firstChild );
+ }
+ }
+
+ return this;
+ },
+
+ clone: function( dataAndEvents, deepDataAndEvents ) {
+ dataAndEvents = dataAndEvents == null ? false : dataAndEvents;
+ deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;
+
+ return this.map( function () {
+ return jQuery.clone( this, dataAndEvents, deepDataAndEvents );
+ });
+ },
+
+ html: function( value ) {
+ if ( value === undefined ) {
+ return this[0] && this[0].nodeType === 1 ?
+ this[0].innerHTML.replace(rinlinejQuery, "") :
+ null;
+
+ // See if we can take a shortcut and just use innerHTML
+ } else if ( typeof value === "string" && !rnocache.test( value ) &&
+ (jQuery.support.leadingWhitespace || !rleadingWhitespace.test( value )) &&
+ !wrapMap[ (rtagName.exec( value ) || ["", ""])[1].toLowerCase() ] ) {
+
+ value = value.replace(rxhtmlTag, "<$1></$2>");
+
+ try {
+ for ( var i = 0, l = this.length; i < l; i++ ) {
+ // Remove element nodes and prevent memory leaks
+ if ( this[i].nodeType === 1 ) {
+ jQuery.cleanData( this[i].getElementsByTagName("*") );
+ this[i].innerHTML = value;
+ }
+ }
+
+ // If using innerHTML throws an exception, use the fallback method
+ } catch(e) {
+ this.empty().append( value );
+ }
+
+ } else if ( jQuery.isFunction( value ) ) {
+ this.each(function(i){
+ var self = jQuery( this );
+
+ self.html( value.call(this, i, self.html()) );
+ });
+
+ } else {
+ this.empty().append( value );
+ }
+
+ return this;
+ },
+
+ replaceWith: function( value ) {
+ if ( this[0] && this[0].parentNode ) {
+ // Make sure that the elements are removed from the DOM before they are inserted
+ // this can help fix replacing a parent with child elements
+ if ( jQuery.isFunction( value ) ) {
+ return this.each(function(i) {
+ var self = jQuery(this), old = self.html();
+ self.replaceWith( value.call( this, i, old ) );
+ });
+ }
+
+ if ( typeof value !== "string" ) {
+ value = jQuery( value ).detach();
+ }
+
+ return this.each(function() {
+ var next = this.nextSibling,
+ parent = this.parentNode;
+
+ jQuery( this ).remove();
+
+ if ( next ) {
+ jQuery(next).before( value );
+ } else {
+ jQuery(parent).append( value );
+ }
+ });
+ } else {
+ return this.length ?
+ this.pushStack( jQuery(jQuery.isFunction(value) ? value() : value), "replaceWith", value ) :
+ this;
+ }
+ },
+
+ detach: function( selector ) {
+ return this.remove( selector, true );
+ },
+
+ domManip: function( args, table, callback ) {
+ var results, first, fragment, parent,
+ value = args[0],
+ scripts = [];
+
+ // We can't cloneNode fragments that contain checked, in WebKit
+ if ( !jQuery.support.checkClone && arguments.length === 3 && typeof value === "string" && rchecked.test( value ) ) {
+ return this.each(function() {
+ jQuery(this).domManip( args, table, callback, true );
+ });
+ }
+
+ if ( jQuery.isFunction(value) ) {
+ return this.each(function(i) {
+ var self = jQuery(this);
+ args[0] = value.call(this, i, table ? self.html() : undefined);
+ self.domManip( args, table, callback );
+ });
+ }
+
+ if ( this[0] ) {
+ parent = value && value.parentNode;
+
+ // If we're in a fragment, just use that instead of building a new one
+ if ( jQuery.support.parentNode && parent && parent.nodeType === 11 && parent.childNodes.length === this.length ) {
+ results = { fragment: parent };
+
+ } else {
+ results = jQuery.buildFragment( args, this, scripts );
+ }
+
+ fragment = results.fragment;
+
+ if ( fragment.childNodes.length === 1 ) {
+ first = fragment = fragment.firstChild;
+ } else {
+ first = fragment.firstChild;
+ }
+
+ if ( first ) {
+ table = table && jQuery.nodeName( first, "tr" );
+
+ for ( var i = 0, l = this.length, lastIndex = l - 1; i < l; i++ ) {
+ callback.call(
+ table ?
+ root(this[i], first) :
+ this[i],
+ // Make sure that we do not leak memory by inadvertently discarding
+ // the original fragment (which might have attached data) instead of
+ // using it; in addition, use the original fragment object for the last
+ // item instead of first because it can end up being emptied incorrectly
+ // in certain situations (Bug #8070).
+ // Fragments from the fragment cache must always be cloned and never used
+ // in place.
+ results.cacheable || (l > 1 && i < lastIndex) ?
+ jQuery.clone( fragment, true, true ) :
+ fragment
+ );
+ }
+ }
+
+ if ( scripts.length ) {
+ jQuery.each( scripts, evalScript );
+ }
+ }
+
+ return this;
+ }
+});
+
+function root( elem, cur ) {
+ return jQuery.nodeName(elem, "table") ?
+ (elem.getElementsByTagName("tbody")[0] ||
+ elem.appendChild(elem.ownerDocument.createElement("tbody"))) :
+ elem;
+}
+
+function cloneCopyEvent( src, dest ) {
+
+ if ( dest.nodeType !== 1 || !jQuery.hasData( src ) ) {
+ return;
+ }
+
+ var internalKey = jQuery.expando,
+ oldData = jQuery.data( src ),
+ curData = jQuery.data( dest, oldData );
+
+ // Switch to use the internal data object, if it exists, for the next
+ // stage of data copying
+ if ( (oldData = oldData[ internalKey ]) ) {
+ var events = oldData.events;
+ curData = curData[ internalKey ] = jQuery.extend({}, oldData);
+
+ if ( events ) {
+ delete curData.handle;
+ curData.events = {};
+
+ for ( var type in events ) {
+ for ( var i = 0, l = events[ type ].length; i < l; i++ ) {
+ jQuery.event.add( dest, type + ( events[ type ][ i ].namespace ? "." : "" ) + events[ type ][ i ].namespace, events[ type ][ i ], events[ type ][ i ].data );
+ }
+ }
+ }
+ }
+}
+
+function cloneFixAttributes( src, dest ) {
+ var nodeName;
+
+ // We do not need to do anything for non-Elements
+ if ( dest.nodeType !== 1 ) {
+ return;
+ }
+
+ // clearAttributes removes the attributes, which we don't want,
+ // but also removes the attachEvent events, which we *do* want
+ if ( dest.clearAttributes ) {
+ dest.clearAttributes();
+ }
+
+ // mergeAttributes, in contrast, only merges back on the
+ // original attributes, not the events
+ if ( dest.mergeAttributes ) {
+ dest.mergeAttributes( src );
+ }
+
+ nodeName = dest.nodeName.toLowerCase();
+
+ // IE6-8 fail to clone children inside object elements that use
+ // the proprietary classid attribute value (rather than the type
+ // attribute) to identify the type of content to display
+ if ( nodeName === "object" ) {
+ dest.outerHTML = src.outerHTML;
+
+ } else if ( nodeName === "input" && (src.type === "checkbox" || src.type === "radio") ) {
+ // IE6-8 fails to persist the checked state of a cloned checkbox
+ // or radio button. Worse, IE6-7 fail to give the cloned element
+ // a checked appearance if the defaultChecked value isn't also set
+ if ( src.checked ) {
+ dest.defaultChecked = dest.checked = src.checked;
+ }
+
+ // IE6-7 get confused and end up setting the value of a cloned
+ // checkbox/radio button to an empty string instead of "on"
+ if ( dest.value !== src.value ) {
+ dest.value = src.value;
+ }
+
+ // IE6-8 fails to return the selected option to the default selected
+ // state when cloning options
+ } else if ( nodeName === "option" ) {
+ dest.selected = src.defaultSelected;
+
+ // IE6-8 fails to set the defaultValue to the correct value when
+ // cloning other types of input fields
+ } else if ( nodeName === "input" || nodeName === "textarea" ) {
+ dest.defaultValue = src.defaultValue;
+ }
+
+ // Event data gets referenced instead of copied if the expando
+ // gets copied too
+ dest.removeAttribute( jQuery.expando );
+}
+
+jQuery.buildFragment = function( args, nodes, scripts ) {
+ var fragment, cacheable, cacheresults,
+ doc = (nodes && nodes[0] ? nodes[0].ownerDocument || nodes[0] : document);
+
+ // Only cache "small" (1/2 KB) HTML strings that are associated with the main document
+ // Cloning options loses the selected state, so don't cache them
+ // IE 6 doesn't like it when you put <object> or <embed> elements in a fragment
+ // Also, WebKit does not clone 'checked' attributes on cloneNode, so don't cache
+ if ( args.length === 1 && typeof args[0] === "string" && args[0].length < 512 && doc === document &&
+ args[0].charAt(0) === "<" && !rnocache.test( args[0] ) && (jQuery.support.checkClone || !rchecked.test( args[0] )) ) {
+
+ cacheable = true;
+
+ cacheresults = jQuery.fragments[ args[0] ];
+ if ( cacheresults && cacheresults !== 1 ) {
+ fragment = cacheresults;
+ }
+ }
+
+ if ( !fragment ) {
+ fragment = doc.createDocumentFragment();
+ jQuery.clean( args, doc, fragment, scripts );
+ }
+
+ if ( cacheable ) {
+ jQuery.fragments[ args[0] ] = cacheresults ? fragment : 1;
+ }
+
+ return { fragment: fragment, cacheable: cacheable };
+};
+
+jQuery.fragments = {};
+
+jQuery.each({
+ appendTo: "append",
+ prependTo: "prepend",
+ insertBefore: "before",
+ insertAfter: "after",
+ replaceAll: "replaceWith"
+}, function( name, original ) {
+ jQuery.fn[ name ] = function( selector ) {
+ var ret = [],
+ insert = jQuery( selector ),
+ parent = this.length === 1 && this[0].parentNode;
+
+ if ( parent && parent.nodeType === 11 && parent.childNodes.length === 1 && insert.length === 1 ) {
+ insert[ original ]( this[0] );
+ return this;
+
+ } else {
+ for ( var i = 0, l = insert.length; i < l; i++ ) {
+ var elems = (i > 0 ? this.clone(true) : this).get();
+ jQuery( insert[i] )[ original ]( elems );
+ ret = ret.concat( elems );
+ }
+
+ return this.pushStack( ret, name, insert.selector );
+ }
+ };
+});
+
+function getAll( elem ) {
+ if ( "getElementsByTagName" in elem ) {
+ return elem.getElementsByTagName( "*" );
+
+ } else if ( "querySelectorAll" in elem ) {
+ return elem.querySelectorAll( "*" );
+
+ } else {
+ return [];
+ }
+}
+
+// Used in clean, fixes the defaultChecked property
+function fixDefaultChecked( elem ) {
+ if ( elem.type === "checkbox" || elem.type === "radio" ) {
+ elem.defaultChecked = elem.checked;
+ }
+}
+// Finds all inputs and passes them to fixDefaultChecked
+function findInputs( elem ) {
+ if ( jQuery.nodeName( elem, "input" ) ) {
+ fixDefaultChecked( elem );
+ } else if ( elem.getElementsByTagName ) {
+ jQuery.grep( elem.getElementsByTagName("input"), fixDefaultChecked );
+ }
+}
+
+jQuery.extend({
+ clone: function( elem, dataAndEvents, deepDataAndEvents ) {
+ var clone = elem.cloneNode(true),
+ srcElements,
+ destElements,
+ i;
+
+ if ( (!jQuery.support.noCloneEvent || !jQuery.support.noCloneChecked) &&
+ (elem.nodeType === 1 || elem.nodeType === 11) && !jQuery.isXMLDoc(elem) ) {
+ // IE copies events bound via attachEvent when using cloneNode.
+ // Calling detachEvent on the clone will also remove the events
+ // from the original. In order to get around this, we use some
+ // proprietary methods to clear the events. Thanks to MooTools
+ // guys for this hotness.
+
+ cloneFixAttributes( elem, clone );
+
+ // Using Sizzle here is crazy slow, so we use getElementsByTagName
+ // instead
+ srcElements = getAll( elem );
+ destElements = getAll( clone );
+
+ // Weird iteration because IE will replace the length property
+ // with an element if you are cloning the body and one of the
+ // elements on the page has a name or id of "length"
+ for ( i = 0; srcElements[i]; ++i ) {
+ cloneFixAttributes( srcElements[i], destElements[i] );
+ }
+ }
+
+ // Copy the events from the original to the clone
+ if ( dataAndEvents ) {
+ cloneCopyEvent( elem, clone );
+
+ if ( deepDataAndEvents ) {
+ srcElements = getAll( elem );
+ destElements = getAll( clone );
+
+ for ( i = 0; srcElements[i]; ++i ) {
+ cloneCopyEvent( srcElements[i], destElements[i] );
+ }
+ }
+ }
+
+ // Return the cloned set
+ return clone;
+ },
+
+ clean: function( elems, context, fragment, scripts ) {
+ var checkScriptType;
+
+ context = context || document;
+
+ // !context.createElement fails in IE with an error but returns typeof 'object'
+ if ( typeof context.createElement === "undefined" ) {
+ context = context.ownerDocument || context[0] && context[0].ownerDocument || document;
+ }
+
+ var ret = [], j;
+
+ for ( var i = 0, elem; (elem = elems[i]) != null; i++ ) {
+ if ( typeof elem === "number" ) {
+ elem += "";
+ }
+
+ if ( !elem ) {
+ continue;
+ }
+
+ // Convert html string into DOM nodes
+ if ( typeof elem === "string" ) {
+ if ( !rhtml.test( elem ) ) {
+ elem = context.createTextNode( elem );
+ } else {
+ // Fix "XHTML"-style tags in all browsers
+ elem = elem.replace(rxhtmlTag, "<$1></$2>");
+
+ // Trim whitespace, otherwise indexOf won't work as expected
+ var tag = (rtagName.exec( elem ) || ["", ""])[1].toLowerCase(),
+ wrap = wrapMap[ tag ] || wrapMap._default,
+ depth = wrap[0],
+ div = context.createElement("div");
+
+ // Go to html and back, then peel off extra wrappers
+ div.innerHTML = wrap[1] + elem + wrap[2];
+
+ // Move to the right depth
+ while ( depth-- ) {
+ div = div.lastChild;
+ }
+
+ // Remove IE's autoinserted <tbody> from table fragments
+ if ( !jQuery.support.tbody ) {
+
+ // String was a <table>, *may* have spurious <tbody>
+ var hasBody = rtbody.test(elem),
+ tbody = tag === "table" && !hasBody ?
+ div.firstChild && div.firstChild.childNodes :
+
+ // String was a bare <thead> or <tfoot>
+ wrap[1] === "<table>" && !hasBody ?
+ div.childNodes :
+ [];
+
+ for ( j = tbody.length - 1; j >= 0 ; --j ) {
+ if ( jQuery.nodeName( tbody[ j ], "tbody" ) && !tbody[ j ].childNodes.length ) {
+ tbody[ j ].parentNode.removeChild( tbody[ j ] );
+ }
+ }
+ }
+
+ // IE completely kills leading whitespace when innerHTML is used
+ if ( !jQuery.support.leadingWhitespace && rleadingWhitespace.test( elem ) ) {
+ div.insertBefore( context.createTextNode( rleadingWhitespace.exec(elem)[0] ), div.firstChild );
+ }
+
+ elem = div.childNodes;
+ }
+ }
+
+ // Resets defaultChecked for any radios and checkboxes
+ // about to be appended to the DOM in IE 6/7 (#8060)
+ var len;
+ if ( !jQuery.support.appendChecked ) {
+ if ( elem[0] && typeof (len = elem.length) === "number" ) {
+ for ( j = 0; j < len; j++ ) {
+ findInputs( elem[j] );
+ }
+ } else {
+ findInputs( elem );
+ }
+ }
+
+ if ( elem.nodeType ) {
+ ret.push( elem );
+ } else {
+ ret = jQuery.merge( ret, elem );
+ }
+ }
+
+ if ( fragment ) {
+ checkScriptType = function( elem ) {
+ return !elem.type || rscriptType.test( elem.type );
+ };
+ for ( i = 0; ret[i]; i++ ) {
+ if ( scripts && jQuery.nodeName( ret[i], "script" ) && (!ret[i].type || ret[i].type.toLowerCase() === "text/javascript") ) {
+ scripts.push( ret[i].parentNode ? ret[i].parentNode.removeChild( ret[i] ) : ret[i] );
+
+ } else {
+ if ( ret[i].nodeType === 1 ) {
+ var jsTags = jQuery.grep( ret[i].getElementsByTagName( "script" ), checkScriptType );
+
+ ret.splice.apply( ret, [i + 1, 0].concat( jsTags ) );
+ }
+ fragment.appendChild( ret[i] );
+ }
+ }
+ }
+
+ return ret;
+ },
+
+ cleanData: function( elems ) {
+ var data, id, cache = jQuery.cache, internalKey = jQuery.expando, special = jQuery.event.special,
+ deleteExpando = jQuery.support.deleteExpando;
+
+ for ( var i = 0, elem; (elem = elems[i]) != null; i++ ) {
+ if ( elem.nodeName && jQuery.noData[elem.nodeName.toLowerCase()] ) {
+ continue;
+ }
+
+ id = elem[ jQuery.expando ];
+
+ if ( id ) {
+ data = cache[ id ] && cache[ id ][ internalKey ];
+
+ if ( data && data.events ) {
+ for ( var type in data.events ) {
+ if ( special[ type ] ) {
+ jQuery.event.remove( elem, type );
+
+ // This is a shortcut to avoid jQuery.event.remove's overhead
+ } else {
+ jQuery.removeEvent( elem, type, data.handle );
+ }
+ }
+
+ // Null the DOM reference to avoid IE6/7/8 leak (#7054)
+ if ( data.handle ) {
+ data.handle.elem = null;
+ }
+ }
+
+ if ( deleteExpando ) {
+ delete elem[ jQuery.expando ];
+
+ } else if ( elem.removeAttribute ) {
+ elem.removeAttribute( jQuery.expando );
+ }
+
+ delete cache[ id ];
+ }
+ }
+ }
+});
+
+function evalScript( i, elem ) {
+ if ( elem.src ) {
+ jQuery.ajax({
+ url: elem.src,
+ async: false,
+ dataType: "script"
+ });
+ } else {
+ jQuery.globalEval( ( elem.text || elem.textContent || elem.innerHTML || "" ).replace( rcleanScript, "/*$0*/" ) );
+ }
+
+ if ( elem.parentNode ) {
+ elem.parentNode.removeChild( elem );
+ }
+}
+
+
+
+
+var ralpha = /alpha\([^)]*\)/i,
+ ropacity = /opacity=([^)]*)/,
+ rdashAlpha = /-([a-z])/ig,
+ // fixed for IE9, see #8346
+ rupper = /([A-Z]|^ms)/g,
+ rnumpx = /^-?\d+(?:px)?$/i,
+ rnum = /^-?\d/,
+ rrelNum = /^[+\-]=/,
+ rrelNumFilter = /[^+\-\.\de]+/g,
+
+ cssShow = { position: "absolute", visibility: "hidden", display: "block" },
+ cssWidth = [ "Left", "Right" ],
+ cssHeight = [ "Top", "Bottom" ],
+ curCSS,
+
+ getComputedStyle,
+ currentStyle,
+
+ fcamelCase = function( all, letter ) {
+ return letter.toUpperCase();
+ };
+
+jQuery.fn.css = function( name, value ) {
+ // Setting 'undefined' is a no-op
+ if ( arguments.length === 2 && value === undefined ) {
+ return this;
+ }
+
+ return jQuery.access( this, name, value, true, function( elem, name, value ) {
+ return value !== undefined ?
+ jQuery.style( elem, name, value ) :
+ jQuery.css( elem, name );
+ });
+};
+
+jQuery.extend({
+ // Add in style property hooks for overriding the default
+ // behavior of getting and setting a style property
+ cssHooks: {
+ opacity: {
+ get: function( elem, computed ) {
+ if ( computed ) {
+ // We should always get a number back from opacity
+ var ret = curCSS( elem, "opacity", "opacity" );
+ return ret === "" ? "1" : ret;
+
+ } else {
+ return elem.style.opacity;
+ }
+ }
+ }
+ },
+
+ // Exclude the following css properties to add px
+ cssNumber: {
+ "zIndex": true,
+ "fontWeight": true,
+ "opacity": true,
+ "zoom": true,
+ "lineHeight": true,
+ "widows": true,
+ "orphans": true
+ },
+
+ // Add in properties whose names you wish to fix before
+ // setting or getting the value
+ cssProps: {
+ // normalize float css property
+ "float": jQuery.support.cssFloat ? "cssFloat" : "styleFloat"
+ },
+
+ // Get and set the style property on a DOM Node
+ style: function( elem, name, value, extra ) {
+ // Don't set styles on text and comment nodes
+ if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {
+ return;
+ }
+
+ // Make sure that we're working with the right name
+ var ret, type, origName = jQuery.camelCase( name ),
+ style = elem.style, hooks = jQuery.cssHooks[ origName ];
+
+ name = jQuery.cssProps[ origName ] || origName;
+
+ // Check if we're setting a value
+ if ( value !== undefined ) {
+ type = typeof value;
+
+ // Make sure that NaN and null values aren't set. See: #7116
+ if ( type === "number" && isNaN( value ) || value == null ) {
+ return;
+ }
+
+ // convert relative number strings (+= or -=) to relative numbers. #7345
+ if ( type === "string" && rrelNum.test( value ) ) {
+ value = +value.replace( rrelNumFilter, "" ) + parseFloat( jQuery.css( elem, name ) );
+ }
+
+ // If a number was passed in, add 'px' to the (except for certain CSS properties)
+ if ( type === "number" && !jQuery.cssNumber[ origName ] ) {
+ value += "px";
+ }
+
+ // If a hook was provided, use that value, otherwise just set the specified value
+ if ( !hooks || !("set" in hooks) || (value = hooks.set( elem, value )) !== undefined ) {
+ // Wrapped to prevent IE from throwing errors when 'invalid' values are provided
+ // Fixes bug #5509
+ try {
+ style[ name ] = value;
+ } catch(e) {}
+ }
+
+ } else {
+ // If a hook was provided get the non-computed value from there
+ if ( hooks && "get" in hooks && (ret = hooks.get( elem, false, extra )) !== undefined ) {
+ return ret;
+ }
+
+ // Otherwise just get the value from the style object
+ return style[ name ];
+ }
+ },
+
+ css: function( elem, name, extra ) {
+ var ret, hooks;
+
+ // Make sure that we're working with the right name
+ name = jQuery.camelCase( name );
+ hooks = jQuery.cssHooks[ name ];
+ name = jQuery.cssProps[ name ] || name;
+
+ // cssFloat needs a special treatment
+ if ( name === "cssFloat" ) {
+ name = "float";
+ }
+
+ // If a hook was provided get the computed value from there
+ if ( hooks && "get" in hooks && (ret = hooks.get( elem, true, extra )) !== undefined ) {
+ return ret;
+
+ // Otherwise, if a way to get the computed value exists, use that
+ } else if ( curCSS ) {
+ return curCSS( elem, name );
+ }
+ },
+
+ // A method for quickly swapping in/out CSS properties to get correct calculations
+ swap: function( elem, options, callback ) {
+ var old = {};
+
+ // Remember the old values, and insert the new ones
+ for ( var name in options ) {
+ old[ name ] = elem.style[ name ];
+ elem.style[ name ] = options[ name ];
+ }
+
+ callback.call( elem );
+
+ // Revert the old values
+ for ( name in options ) {
+ elem.style[ name ] = old[ name ];
+ }
+ },
+
+ camelCase: function( string ) {
+ return string.replace( rdashAlpha, fcamelCase );
+ }
+});
+
+// DEPRECATED, Use jQuery.css() instead
+jQuery.curCSS = jQuery.css;
+
+jQuery.each(["height", "width"], function( i, name ) {
+ jQuery.cssHooks[ name ] = {
+ get: function( elem, computed, extra ) {
+ var val;
+
+ if ( computed ) {
+ if ( elem.offsetWidth !== 0 ) {
+ val = getWH( elem, name, extra );
+
+ } else {
+ jQuery.swap( elem, cssShow, function() {
+ val = getWH( elem, name, extra );
+ });
+ }
+
+ if ( val <= 0 ) {
+ val = curCSS( elem, name, name );
+
+ if ( val === "0px" && currentStyle ) {
+ val = currentStyle( elem, name, name );
+ }
+
+ if ( val != null ) {
+ // Should return "auto" instead of 0, use 0 for
+ // temporary backwards-compat
+ return val === "" || val === "auto" ? "0px" : val;
+ }
+ }
+
+ if ( val < 0 || val == null ) {
+ val = elem.style[ name ];
+
+ // Should return "auto" instead of 0, use 0 for
+ // temporary backwards-compat
+ return val === "" || val === "auto" ? "0px" : val;
+ }
+
+ return typeof val === "string" ? val : val + "px";
+ }
+ },
+
+ set: function( elem, value ) {
+ if ( rnumpx.test( value ) ) {
+ // ignore negative width and height values #1599
+ value = parseFloat(value);
+
+ if ( value >= 0 ) {
+ return value + "px";
+ }
+
+ } else {
+ return value;
+ }
+ }
+ };
+});
+
+if ( !jQuery.support.opacity ) {
+ jQuery.cssHooks.opacity = {
+ get: function( elem, computed ) {
+ // IE uses filters for opacity
+ return ropacity.test( (computed && elem.currentStyle ? elem.currentStyle.filter : elem.style.filter) || "" ) ?
+ ( parseFloat( RegExp.$1 ) / 100 ) + "" :
+ computed ? "1" : "";
+ },
+
+ set: function( elem, value ) {
+ var style = elem.style,
+ currentStyle = elem.currentStyle;
+
+ // IE has trouble with opacity if it does not have layout
+ // Force it by setting the zoom level
+ style.zoom = 1;
+
+ // Set the alpha filter to set the opacity
+ var opacity = jQuery.isNaN( value ) ?
+ "" :
+ "alpha(opacity=" + value * 100 + ")",
+ filter = currentStyle && currentStyle.filter || style.filter || "";
+
+ style.filter = ralpha.test( filter ) ?
+ filter.replace( ralpha, opacity ) :
+ filter + " " + opacity;
+ }
+ };
+}
+
+jQuery(function() {
+ // This hook cannot be added until DOM ready because the support test
+ // for it is not run until after DOM ready
+ if ( !jQuery.support.reliableMarginRight ) {
+ jQuery.cssHooks.marginRight = {
+ get: function( elem, computed ) {
+ // WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right
+ // Work around by temporarily setting element display to inline-block
+ var ret;
+ jQuery.swap( elem, { "display": "inline-block" }, function() {
+ if ( computed ) {
+ ret = curCSS( elem, "margin-right", "marginRight" );
+ } else {
+ ret = elem.style.marginRight;
+ }
+ });
+ return ret;
+ }
+ };
+ }
+});
+
+if ( document.defaultView && document.defaultView.getComputedStyle ) {
+ getComputedStyle = function( elem, name ) {
+ var ret, defaultView, computedStyle;
+
+ name = name.replace( rupper, "-$1" ).toLowerCase();
+
+ if ( !(defaultView = elem.ownerDocument.defaultView) ) {
+ return undefined;
+ }
+
+ if ( (computedStyle = defaultView.getComputedStyle( elem, null )) ) {
+ ret = computedStyle.getPropertyValue( name );
+ if ( ret === "" && !jQuery.contains( elem.ownerDocument.documentElement, elem ) ) {
+ ret = jQuery.style( elem, name );
+ }
+ }
+
+ return ret;
+ };
+}
+
+if ( document.documentElement.currentStyle ) {
+ currentStyle = function( elem, name ) {
+ var left,
+ ret = elem.currentStyle && elem.currentStyle[ name ],
+ rsLeft = elem.runtimeStyle && elem.runtimeStyle[ name ],
+ style = elem.style;
+
+ // From the awesome hack by Dean Edwards
+ // http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291
+
+ // If we're not dealing with a regular pixel number
+ // but a number that has a weird ending, we need to convert it to pixels
+ if ( !rnumpx.test( ret ) && rnum.test( ret ) ) {
+ // Remember the original values
+ left = style.left;
+
+ // Put in the new values to get a computed value out
+ if ( rsLeft ) {
+ elem.runtimeStyle.left = elem.currentStyle.left;
+ }
+ style.left = name === "fontSize" ? "1em" : (ret || 0);
+ ret = style.pixelLeft + "px";
+
+ // Revert the changed values
+ style.left = left;
+ if ( rsLeft ) {
+ elem.runtimeStyle.left = rsLeft;
+ }
+ }
+
+ return ret === "" ? "auto" : ret;
+ };
+}
+
+curCSS = getComputedStyle || currentStyle;
+
+function getWH( elem, name, extra ) {
+ var which = name === "width" ? cssWidth : cssHeight,
+ val = name === "width" ? elem.offsetWidth : elem.offsetHeight;
+
+ if ( extra === "border" ) {
+ return val;
+ }
+
+ jQuery.each( which, function() {
+ if ( !extra ) {
+ val -= parseFloat(jQuery.css( elem, "padding" + this )) || 0;
+ }
+
+ if ( extra === "margin" ) {
+ val += parseFloat(jQuery.css( elem, "margin" + this )) || 0;
+
+ } else {
+ val -= parseFloat(jQuery.css( elem, "border" + this + "Width" )) || 0;
+ }
+ });
+
+ return val;
+}
+
+if ( jQuery.expr && jQuery.expr.filters ) {
+ jQuery.expr.filters.hidden = function( elem ) {
+ var width = elem.offsetWidth,
+ height = elem.offsetHeight;
+
+ return (width === 0 && height === 0) || (!jQuery.support.reliableHiddenOffsets && (elem.style.display || jQuery.css( elem, "display" )) === "none");
+ };
+
+ jQuery.expr.filters.visible = function( elem ) {
+ return !jQuery.expr.filters.hidden( elem );
+ };
+}
+
+
+
+
+var r20 = /%20/g,
+ rbracket = /\[\]$/,
+ rCRLF = /\r?\n/g,
+ rhash = /#.*$/,
+ rheaders = /^(.*?):[ \t]*([^\r\n]*)\r?$/mg, // IE leaves an \r character at EOL
+ rinput = /^(?:color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,
+ // #7653, #8125, #8152: local protocol detection
+ rlocalProtocol = /^(?:about|app|app\-storage|.+\-extension|file|widget):$/,
+ rnoContent = /^(?:GET|HEAD)$/,
+ rprotocol = /^\/\//,
+ rquery = /\?/,
+ rscript = /<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,
+ rselectTextarea = /^(?:select|textarea)/i,
+ rspacesAjax = /\s+/,
+ rts = /([?&])_=[^&]*/,
+ rurl = /^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,
+
+ // Keep a copy of the old load method
+ _load = jQuery.fn.load,
+
+ /* Prefilters
+ * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)
+ * 2) These are called:
+ * - BEFORE asking for a transport
+ * - AFTER param serialization (s.data is a string if s.processData is true)
+ * 3) key is the dataType
+ * 4) the catchall symbol "*" can be used
+ * 5) execution will start with transport dataType and THEN continue down to "*" if needed
+ */
+ prefilters = {},
+
+ /* Transports bindings
+ * 1) key is the dataType
+ * 2) the catchall symbol "*" can be used
+ * 3) selection will start with transport dataType and THEN go to "*" if needed
+ */
+ transports = {},
+
+ // Document location
+ ajaxLocation,
+
+ // Document location segments
+ ajaxLocParts;
+
+// #8138, IE may throw an exception when accessing
+// a field from window.location if document.domain has been set
+try {
+ ajaxLocation = location.href;
+} catch( e ) {
+ // Use the href attribute of an A element
+ // since IE will modify it given document.location
+ ajaxLocation = document.createElement( "a" );
+ ajaxLocation.href = "";
+ ajaxLocation = ajaxLocation.href;
+}
+
+// Segment location into parts
+ajaxLocParts = rurl.exec( ajaxLocation.toLowerCase() ) || [];
+
+// Base "constructor" for jQuery.ajaxPrefilter and jQuery.ajaxTransport
+function addToPrefiltersOrTransports( structure ) {
+
+ // dataTypeExpression is optional and defaults to "*"
+ return function( dataTypeExpression, func ) {
+
+ if ( typeof dataTypeExpression !== "string" ) {
+ func = dataTypeExpression;
+ dataTypeExpression = "*";
+ }
+
+ if ( jQuery.isFunction( func ) ) {
+ var dataTypes = dataTypeExpression.toLowerCase().split( rspacesAjax ),
+ i = 0,
+ length = dataTypes.length,
+ dataType,
+ list,
+ placeBefore;
+
+ // For each dataType in the dataTypeExpression
+ for(; i < length; i++ ) {
+ dataType = dataTypes[ i ];
+ // We control if we're asked to add before
+ // any existing element
+ placeBefore = /^\+/.test( dataType );
+ if ( placeBefore ) {
+ dataType = dataType.substr( 1 ) || "*";
+ }
+ list = structure[ dataType ] = structure[ dataType ] || [];
+ // then we add to the structure accordingly
+ list[ placeBefore ? "unshift" : "push" ]( func );
+ }
+ }
+ };
+}
+
+// Base inspection function for prefilters and transports
+function inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR,
+ dataType /* internal */, inspected /* internal */ ) {
+
+ dataType = dataType || options.dataTypes[ 0 ];
+ inspected = inspected || {};
+
+ inspected[ dataType ] = true;
+
+ var list = structure[ dataType ],
+ i = 0,
+ length = list ? list.length : 0,
+ executeOnly = ( structure === prefilters ),
+ selection;
+
+ for(; i < length && ( executeOnly || !selection ); i++ ) {
+ selection = list[ i ]( options, originalOptions, jqXHR );
+ // If we got redirected to another dataType
+ // we try there if executing only and not done already
+ if ( typeof selection === "string" ) {
+ if ( !executeOnly || inspected[ selection ] ) {
+ selection = undefined;
+ } else {
+ options.dataTypes.unshift( selection );
+ selection = inspectPrefiltersOrTransports(
+ structure, options, originalOptions, jqXHR, selection, inspected );
+ }
+ }
+ }
+ // If we're only executing or nothing was selected
+ // we try the catchall dataType if not done already
+ if ( ( executeOnly || !selection ) && !inspected[ "*" ] ) {
+ selection = inspectPrefiltersOrTransports(
+ structure, options, originalOptions, jqXHR, "*", inspected );
+ }
+ // unnecessary when only executing (prefilters)
+ // but it'll be ignored by the caller in that case
+ return selection;
+}
+
+jQuery.fn.extend({
+ load: function( url, params, callback ) {
+ if ( typeof url !== "string" && _load ) {
+ return _load.apply( this, arguments );
+
+ // Don't do a request if no elements are being requested
+ } else if ( !this.length ) {
+ return this;
+ }
+
+ var off = url.indexOf( " " );
+ if ( off >= 0 ) {
+ var selector = url.slice( off, url.length );
+ url = url.slice( 0, off );
+ }
+
+ // Default to a GET request
+ var type = "GET";
+
+ // If the second parameter was provided
+ if ( params ) {
+ // If it's a function
+ if ( jQuery.isFunction( params ) ) {
+ // We assume that it's the callback
+ callback = params;
+ params = undefined;
+
+ // Otherwise, build a param string
+ } else if ( typeof params === "object" ) {
+ params = jQuery.param( params, jQuery.ajaxSettings.traditional );
+ type = "POST";
+ }
+ }
+
+ var self = this;
+
+ // Request the remote document
+ jQuery.ajax({
+ url: url,
+ type: type,
+ dataType: "html",
+ data: params,
+ // Complete callback (responseText is used internally)
+ complete: function( jqXHR, status, responseText ) {
+ // Store the response as specified by the jqXHR object
+ responseText = jqXHR.responseText;
+ // If successful, inject the HTML into all the matched elements
+ if ( jqXHR.isResolved() ) {
+ // #4825: Get the actual response in case
+ // a dataFilter is present in ajaxSettings
+ jqXHR.done(function( r ) {
+ responseText = r;
+ });
+ // See if a selector was specified
+ self.html( selector ?
+ // Create a dummy div to hold the results
+ jQuery("<div>")
+ // inject the contents of the document in, removing the scripts
+ // to avoid any 'Permission Denied' errors in IE
+ .append(responseText.replace(rscript, ""))
+
+ // Locate the specified elements
+ .find(selector) :
+
+ // If not, just inject the full result
+ responseText );
+ }
+
+ if ( callback ) {
+ self.each( callback, [ responseText, status, jqXHR ] );
+ }
+ }
+ });
+
+ return this;
+ },
+
+ serialize: function() {
+ return jQuery.param( this.serializeArray() );
+ },
+
+ serializeArray: function() {
+ return this.map(function(){
+ return this.elements ? jQuery.makeArray( this.elements ) : this;
+ })
+ .filter(function(){
+ return this.name && !this.disabled &&
+ ( this.checked || rselectTextarea.test( this.nodeName ) ||
+ rinput.test( this.type ) );
+ })
+ .map(function( i, elem ){
+ var val = jQuery( this ).val();
+
+ return val == null ?
+ null :
+ jQuery.isArray( val ) ?
+ jQuery.map( val, function( val, i ){
+ return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
+ }) :
+ { name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
+ }).get();
+ }
+});
+
+// Attach a bunch of functions for handling common AJAX events
+jQuery.each( "ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split( " " ), function( i, o ){
+ jQuery.fn[ o ] = function( f ){
+ return this.bind( o, f );
+ };
+});
+
+jQuery.each( [ "get", "post" ], function( i, method ) {
+ jQuery[ method ] = function( url, data, callback, type ) {
+ // shift arguments if data argument was omitted
+ if ( jQuery.isFunction( data ) ) {
+ type = type || callback;
+ callback = data;
+ data = undefined;
+ }
+
+ return jQuery.ajax({
+ type: method,
+ url: url,
+ data: data,
+ success: callback,
+ dataType: type
+ });
+ };
+});
+
+jQuery.extend({
+
+ getScript: function( url, callback ) {
+ return jQuery.get( url, undefined, callback, "script" );
+ },
+
+ getJSON: function( url, data, callback ) {
+ return jQuery.get( url, data, callback, "json" );
+ },
+
+ // Creates a full fledged settings object into target
+ // with both ajaxSettings and settings fields.
+ // If target is omitted, writes into ajaxSettings.
+ ajaxSetup: function ( target, settings ) {
+ if ( !settings ) {
+ // Only one parameter, we extend ajaxSettings
+ settings = target;
+ target = jQuery.extend( true, jQuery.ajaxSettings, settings );
+ } else {
+ // target was provided, we extend into it
+ jQuery.extend( true, target, jQuery.ajaxSettings, settings );
+ }
+ // Flatten fields we don't want deep extended
+ for( var field in { context: 1, url: 1 } ) {
+ if ( field in settings ) {
+ target[ field ] = settings[ field ];
+ } else if( field in jQuery.ajaxSettings ) {
+ target[ field ] = jQuery.ajaxSettings[ field ];
+ }
+ }
+ return target;
+ },
+
+ ajaxSettings: {
+ url: ajaxLocation,
+ isLocal: rlocalProtocol.test( ajaxLocParts[ 1 ] ),
+ global: true,
+ type: "GET",
+ contentType: "application/x-www-form-urlencoded",
+ processData: true,
+ async: true,
+ /*
+ timeout: 0,
+ data: null,
+ dataType: null,
+ username: null,
+ password: null,
+ cache: null,
+ traditional: false,
+ headers: {},
+ */
+
+ accepts: {
+ xml: "application/xml, text/xml",
+ html: "text/html",
+ text: "text/plain",
+ json: "application/json, text/javascript",
+ "*": "*/*"
+ },
+
+ contents: {
+ xml: /xml/,
+ html: /html/,
+ json: /json/
+ },
+
+ responseFields: {
+ xml: "responseXML",
+ text: "responseText"
+ },
+
+ // List of data converters
+ // 1) key format is "source_type destination_type" (a single space in-between)
+ // 2) the catchall symbol "*" can be used for source_type
+ converters: {
+
+ // Convert anything to text
+ "* text": window.String,
+
+ // Text to html (true = no transformation)
+ "text html": true,
+
+ // Evaluate text as a json expression
+ "text json": jQuery.parseJSON,
+
+ // Parse text as xml
+ "text xml": jQuery.parseXML
+ }
+ },
+
+ ajaxPrefilter: addToPrefiltersOrTransports( prefilters ),
+ ajaxTransport: addToPrefiltersOrTransports( transports ),
+
+ // Main method
+ ajax: function( url, options ) {
+
+ // If url is an object, simulate pre-1.5 signature
+ if ( typeof url === "object" ) {
+ options = url;
+ url = undefined;
+ }
+
+ // Force options to be an object
+ options = options || {};
+
+ var // Create the final options object
+ s = jQuery.ajaxSetup( {}, options ),
+ // Callbacks context
+ callbackContext = s.context || s,
+ // Context for global events
+ // It's the callbackContext if one was provided in the options
+ // and if it's a DOM node or a jQuery collection
+ globalEventContext = callbackContext !== s &&
+ ( callbackContext.nodeType || callbackContext instanceof jQuery ) ?
+ jQuery( callbackContext ) : jQuery.event,
+ // Deferreds
+ deferred = jQuery.Deferred(),
+ completeDeferred = jQuery._Deferred(),
+ // Status-dependent callbacks
+ statusCode = s.statusCode || {},
+ // ifModified key
+ ifModifiedKey,
+ // Headers (they are sent all at once)
+ requestHeaders = {},
+ requestHeadersNames = {},
+ // Response headers
+ responseHeadersString,
+ responseHeaders,
+ // transport
+ transport,
+ // timeout handle
+ timeoutTimer,
+ // Cross-domain detection vars
+ parts,
+ // The jqXHR state
+ state = 0,
+ // To know if global events are to be dispatched
+ fireGlobals,
+ // Loop variable
+ i,
+ // Fake xhr
+ jqXHR = {
+
+ readyState: 0,
+
+ // Caches the header
+ setRequestHeader: function( name, value ) {
+ if ( !state ) {
+ var lname = name.toLowerCase();
+ name = requestHeadersNames[ lname ] = requestHeadersNames[ lname ] || name;
+ requestHeaders[ name ] = value;
+ }
+ return this;
+ },
+
+ // Raw string
+ getAllResponseHeaders: function() {
+ return state === 2 ? responseHeadersString : null;
+ },
+
+ // Builds headers hashtable if needed
+ getResponseHeader: function( key ) {
+ var match;
+ if ( state === 2 ) {
+ if ( !responseHeaders ) {
+ responseHeaders = {};
+ while( ( match = rheaders.exec( responseHeadersString ) ) ) {
+ responseHeaders[ match[1].toLowerCase() ] = match[ 2 ];
+ }
+ }
+ match = responseHeaders[ key.toLowerCase() ];
+ }
+ return match === undefined ? null : match;
+ },
+
+ // Overrides response content-type header
+ overrideMimeType: function( type ) {
+ if ( !state ) {
+ s.mimeType = type;
+ }
+ return this;
+ },
+
+ // Cancel the request
+ abort: function( statusText ) {
+ statusText = statusText || "abort";
+ if ( transport ) {
+ transport.abort( statusText );
+ }
+ done( 0, statusText );
+ return this;
+ }
+ };
+
+ // Callback for when everything is done
+ // It is defined here because jslint complains if it is declared
+ // at the end of the function (which would be more logical and readable)
+ function done( status, statusText, responses, headers ) {
+
+ // Called once
+ if ( state === 2 ) {
+ return;
+ }
+
+ // State is "done" now
+ state = 2;
+
+ // Clear timeout if it exists
+ if ( timeoutTimer ) {
+ clearTimeout( timeoutTimer );
+ }
+
+ // Dereference transport for early garbage collection
+ // (no matter how long the jqXHR object will be used)
+ transport = undefined;
+
+ // Cache response headers
+ responseHeadersString = headers || "";
+
+ // Set readyState
+ jqXHR.readyState = status ? 4 : 0;
+
+ var isSuccess,
+ success,
+ error,
+ response = responses ? ajaxHandleResponses( s, jqXHR, responses ) : undefined,
+ lastModified,
+ etag;
+
+ // If successful, handle type chaining
+ if ( status >= 200 && status < 300 || status === 304 ) {
+
+ // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
+ if ( s.ifModified ) {
+
+ if ( ( lastModified = jqXHR.getResponseHeader( "Last-Modified" ) ) ) {
+ jQuery.lastModified[ ifModifiedKey ] = lastModified;
+ }
+ if ( ( etag = jqXHR.getResponseHeader( "Etag" ) ) ) {
+ jQuery.etag[ ifModifiedKey ] = etag;
+ }
+ }
+
+ // If not modified
+ if ( status === 304 ) {
+
+ statusText = "notmodified";
+ isSuccess = true;
+
+ // If we have data
+ } else {
+
+ try {
+ success = ajaxConvert( s, response );
+ statusText = "success";
+ isSuccess = true;
+ } catch(e) {
+ // We have a parsererror
+ statusText = "parsererror";
+ error = e;
+ }
+ }
+ } else {
+ // We extract error from statusText
+ // then normalize statusText and status for non-aborts
+ error = statusText;
+ if( !statusText || status ) {
+ statusText = "error";
+ if ( status < 0 ) {
+ status = 0;
+ }
+ }
+ }
+
+ // Set data for the fake xhr object
+ jqXHR.status = status;
+ jqXHR.statusText = statusText;
+
+ // Success/Error
+ if ( isSuccess ) {
+ deferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );
+ } else {
+ deferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );
+ }
+
+ // Status-dependent callbacks
+ jqXHR.statusCode( statusCode );
+ statusCode = undefined;
+
+ if ( fireGlobals ) {
+ globalEventContext.trigger( "ajax" + ( isSuccess ? "Success" : "Error" ),
+ [ jqXHR, s, isSuccess ? success : error ] );
+ }
+
+ // Complete
+ completeDeferred.resolveWith( callbackContext, [ jqXHR, statusText ] );
+
+ if ( fireGlobals ) {
+ globalEventContext.trigger( "ajaxComplete", [ jqXHR, s] );
+ // Handle the global AJAX counter
+ if ( !( --jQuery.active ) ) {
+ jQuery.event.trigger( "ajaxStop" );
+ }
+ }
+ }
+
+ // Attach deferreds
+ deferred.promise( jqXHR );
+ jqXHR.success = jqXHR.done;
+ jqXHR.error = jqXHR.fail;
+ jqXHR.complete = completeDeferred.done;
+
+ // Status-dependent callbacks
+ jqXHR.statusCode = function( map ) {
+ if ( map ) {
+ var tmp;
+ if ( state < 2 ) {
+ for( tmp in map ) {
+ statusCode[ tmp ] = [ statusCode[tmp], map[tmp] ];
+ }
+ } else {
+ tmp = map[ jqXHR.status ];
+ jqXHR.then( tmp, tmp );
+ }
+ }
+ return this;
+ };
+
+ // Remove hash character (#7531: and string promotion)
+ // Add protocol if not provided (#5866: IE7 issue with protocol-less urls)
+ // We also use the url parameter if available
+ s.url = ( ( url || s.url ) + "" ).replace( rhash, "" ).replace( rprotocol, ajaxLocParts[ 1 ] + "//" );
+
+ // Extract dataTypes list
+ s.dataTypes = jQuery.trim( s.dataType || "*" ).toLowerCase().split( rspacesAjax );
+
+ // Determine if a cross-domain request is in order
+ if ( s.crossDomain == null ) {
+ parts = rurl.exec( s.url.toLowerCase() );
+ s.crossDomain = !!( parts &&
+ ( parts[ 1 ] != ajaxLocParts[ 1 ] || parts[ 2 ] != ajaxLocParts[ 2 ] ||
+ ( parts[ 3 ] || ( parts[ 1 ] === "http:" ? 80 : 443 ) ) !=
+ ( ajaxLocParts[ 3 ] || ( ajaxLocParts[ 1 ] === "http:" ? 80 : 443 ) ) )
+ );
+ }
+
+ // Convert data if not already a string
+ if ( s.data && s.processData && typeof s.data !== "string" ) {
+ s.data = jQuery.param( s.data, s.traditional );
+ }
+
+ // Apply prefilters
+ inspectPrefiltersOrTransports( prefilters, s, options, jqXHR );
+
+ // If request was aborted inside a prefiler, stop there
+ if ( state === 2 ) {
+ return false;
+ }
+
+ // We can fire global events as of now if asked to
+ fireGlobals = s.global;
+
+ // Uppercase the type
+ s.type = s.type.toUpperCase();
+
+ // Determine if request has content
+ s.hasContent = !rnoContent.test( s.type );
+
+ // Watch for a new set of requests
+ if ( fireGlobals && jQuery.active++ === 0 ) {
+ jQuery.event.trigger( "ajaxStart" );
+ }
+
+ // More options handling for requests with no content
+ if ( !s.hasContent ) {
+
+ // If data is available, append data to url
+ if ( s.data ) {
+ s.url += ( rquery.test( s.url ) ? "&" : "?" ) + s.data;
+ }
+
+ // Get ifModifiedKey before adding the anti-cache parameter
+ ifModifiedKey = s.url;
+
+ // Add anti-cache in url if needed
+ if ( s.cache === false ) {
+
+ var ts = jQuery.now(),
+ // try replacing _= if it is there
+ ret = s.url.replace( rts, "$1_=" + ts );
+
+ // if nothing was replaced, add timestamp to the end
+ s.url = ret + ( (ret === s.url ) ? ( rquery.test( s.url ) ? "&" : "?" ) + "_=" + ts : "" );
+ }
+ }
+
+ // Set the correct header, if data is being sent
+ if ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {
+ jqXHR.setRequestHeader( "Content-Type", s.contentType );
+ }
+
+ // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
+ if ( s.ifModified ) {
+ ifModifiedKey = ifModifiedKey || s.url;
+ if ( jQuery.lastModified[ ifModifiedKey ] ) {
+ jqXHR.setRequestHeader( "If-Modified-Since", jQuery.lastModified[ ifModifiedKey ] );
+ }
+ if ( jQuery.etag[ ifModifiedKey ] ) {
+ jqXHR.setRequestHeader( "If-None-Match", jQuery.etag[ ifModifiedKey ] );
+ }
+ }
+
+ // Set the Accepts header for the server, depending on the dataType
+ jqXHR.setRequestHeader(
+ "Accept",
+ s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[0] ] ?
+ s.accepts[ s.dataTypes[0] ] + ( s.dataTypes[ 0 ] !== "*" ? ", */*; q=0.01" : "" ) :
+ s.accepts[ "*" ]
+ );
+
+ // Check for headers option
+ for ( i in s.headers ) {
+ jqXHR.setRequestHeader( i, s.headers[ i ] );
+ }
+
+ // Allow custom headers/mimetypes and early abort
+ if ( s.beforeSend && ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || state === 2 ) ) {
+ // Abort if not done already
+ jqXHR.abort();
+ return false;
+
+ }
+
+ // Install callbacks on deferreds
+ for ( i in { success: 1, error: 1, complete: 1 } ) {
+ jqXHR[ i ]( s[ i ] );
+ }
+
+ // Get transport
+ transport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );
+
+ // If no transport, we auto-abort
+ if ( !transport ) {
+ done( -1, "No Transport" );
+ } else {
+ jqXHR.readyState = 1;
+ // Send global event
+ if ( fireGlobals ) {
+ globalEventContext.trigger( "ajaxSend", [ jqXHR, s ] );
+ }
+ // Timeout
+ if ( s.async && s.timeout > 0 ) {
+ timeoutTimer = setTimeout( function(){
+ jqXHR.abort( "timeout" );
+ }, s.timeout );
+ }
+
+ try {
+ state = 1;
+ transport.send( requestHeaders, done );
+ } catch (e) {
+ // Propagate exception as error if not done
+ if ( status < 2 ) {
+ done( -1, e );
+ // Simply rethrow otherwise
+ } else {
+ jQuery.error( e );
+ }
+ }
+ }
+
+ return jqXHR;
+ },
+
+ // Serialize an array of form elements or a set of
+ // key/values into a query string
+ param: function( a, traditional ) {
+ var s = [],
+ add = function( key, value ) {
+ // If value is a function, invoke it and return its value
+ value = jQuery.isFunction( value ) ? value() : value;
+ s[ s.length ] = encodeURIComponent( key ) + "=" + encodeURIComponent( value );
+ };
+
+ // Set traditional to true for jQuery <= 1.3.2 behavior.
+ if ( traditional === undefined ) {
+ traditional = jQuery.ajaxSettings.traditional;
+ }
+
+ // If an array was passed in, assume that it is an array of form elements.
+ if ( jQuery.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {
+ // Serialize the form elements
+ jQuery.each( a, function() {
+ add( this.name, this.value );
+ });
+
+ } else {
+ // If traditional, encode the "old" way (the way 1.3.2 or older
+ // did it), otherwise encode params recursively.
+ for ( var prefix in a ) {
+ buildParams( prefix, a[ prefix ], traditional, add );
+ }
+ }
+
+ // Return the resulting serialization
+ return s.join( "&" ).replace( r20, "+" );
+ }
+});
+
+function buildParams( prefix, obj, traditional, add ) {
+ if ( jQuery.isArray( obj ) ) {
+ // Serialize array item.
+ jQuery.each( obj, function( i, v ) {
+ if ( traditional || rbracket.test( prefix ) ) {
+ // Treat each array item as a scalar.
+ add( prefix, v );
+
+ } else {
+ // If array item is non-scalar (array or object), encode its
+ // numeric index to resolve deserialization ambiguity issues.
+ // Note that rack (as of 1.0.0) can't currently deserialize
+ // nested arrays properly, and attempting to do so may cause
+ // a server error. Possible fixes are to modify rack's
+ // deserialization algorithm or to provide an option or flag
+ // to force array serialization to be shallow.
+ buildParams( prefix + "[" + ( typeof v === "object" || jQuery.isArray(v) ? i : "" ) + "]", v, traditional, add );
+ }
+ });
+
+ } else if ( !traditional && obj != null && typeof obj === "object" ) {
+ // Serialize object item.
+ for ( var name in obj ) {
+ buildParams( prefix + "[" + name + "]", obj[ name ], traditional, add );
+ }
+
+ } else {
+ // Serialize scalar item.
+ add( prefix, obj );
+ }
+}
+
+// This is still on the jQuery object... for now
+// Want to move this to jQuery.ajax some day
+jQuery.extend({
+
+ // Counter for holding the number of active queries
+ active: 0,
+
+ // Last-Modified header cache for next request
+ lastModified: {},
+ etag: {}
+
+});
+
+/* Handles responses to an ajax request:
+ * - sets all responseXXX fields accordingly
+ * - finds the right dataType (mediates between content-type and expected dataType)
+ * - returns the corresponding response
+ */
+function ajaxHandleResponses( s, jqXHR, responses ) {
+
+ var contents = s.contents,
+ dataTypes = s.dataTypes,
+ responseFields = s.responseFields,
+ ct,
+ type,
+ finalDataType,
+ firstDataType;
+
+ // Fill responseXXX fields
+ for( type in responseFields ) {
+ if ( type in responses ) {
+ jqXHR[ responseFields[type] ] = responses[ type ];
+ }
+ }
+
+ // Remove auto dataType and get content-type in the process
+ while( dataTypes[ 0 ] === "*" ) {
+ dataTypes.shift();
+ if ( ct === undefined ) {
+ ct = s.mimeType || jqXHR.getResponseHeader( "content-type" );
+ }
+ }
+
+ // Check if we're dealing with a known content-type
+ if ( ct ) {
+ for ( type in contents ) {
+ if ( contents[ type ] && contents[ type ].test( ct ) ) {
+ dataTypes.unshift( type );
+ break;
+ }
+ }
+ }
+
+ // Check to see if we have a response for the expected dataType
+ if ( dataTypes[ 0 ] in responses ) {
+ finalDataType = dataTypes[ 0 ];
+ } else {
+ // Try convertible dataTypes
+ for ( type in responses ) {
+ if ( !dataTypes[ 0 ] || s.converters[ type + " " + dataTypes[0] ] ) {
+ finalDataType = type;
+ break;
+ }
+ if ( !firstDataType ) {
+ firstDataType = type;
+ }
+ }
+ // Or just use first one
+ finalDataType = finalDataType || firstDataType;
+ }
+
+ // If we found a dataType
+ // We add the dataType to the list if needed
+ // and return the corresponding response
+ if ( finalDataType ) {
+ if ( finalDataType !== dataTypes[ 0 ] ) {
+ dataTypes.unshift( finalDataType );
+ }
+ return responses[ finalDataType ];
+ }
+}
+
+// Chain conversions given the request and the original response
+function ajaxConvert( s, response ) {
+
+ // Apply the dataFilter if provided
+ if ( s.dataFilter ) {
+ response = s.dataFilter( response, s.dataType );
+ }
+
+ var dataTypes = s.dataTypes,
+ converters = {},
+ i,
+ key,
+ length = dataTypes.length,
+ tmp,
+ // Current and previous dataTypes
+ current = dataTypes[ 0 ],
+ prev,
+ // Conversion expression
+ conversion,
+ // Conversion function
+ conv,
+ // Conversion functions (transitive conversion)
+ conv1,
+ conv2;
+
+ // For each dataType in the chain
+ for( i = 1; i < length; i++ ) {
+
+ // Create converters map
+ // with lowercased keys
+ if ( i === 1 ) {
+ for( key in s.converters ) {
+ if( typeof key === "string" ) {
+ converters[ key.toLowerCase() ] = s.converters[ key ];
+ }
+ }
+ }
+
+ // Get the dataTypes
+ prev = current;
+ current = dataTypes[ i ];
+
+ // If current is auto dataType, update it to prev
+ if( current === "*" ) {
+ current = prev;
+ // If no auto and dataTypes are actually different
+ } else if ( prev !== "*" && prev !== current ) {
+
+ // Get the converter
+ conversion = prev + " " + current;
+ conv = converters[ conversion ] || converters[ "* " + current ];
+
+ // If there is no direct converter, search transitively
+ if ( !conv ) {
+ conv2 = undefined;
+ for( conv1 in converters ) {
+ tmp = conv1.split( " " );
+ if ( tmp[ 0 ] === prev || tmp[ 0 ] === "*" ) {
+ conv2 = converters[ tmp[1] + " " + current ];
+ if ( conv2 ) {
+ conv1 = converters[ conv1 ];
+ if ( conv1 === true ) {
+ conv = conv2;
+ } else if ( conv2 === true ) {
+ conv = conv1;
+ }
+ break;
+ }
+ }
+ }
+ }
+ // If we found no converter, dispatch an error
+ if ( !( conv || conv2 ) ) {
+ jQuery.error( "No conversion from " + conversion.replace(" "," to ") );
+ }
+ // If found converter is not an equivalence
+ if ( conv !== true ) {
+ // Convert with 1 or 2 converters accordingly
+ response = conv ? conv( response ) : conv2( conv1(response) );
+ }
+ }
+ }
+ return response;
+}
+
+
+
+
+var jsc = jQuery.now(),
+ jsre = /(\=)\?(&|$)|\?\?/i;
+
+// Default jsonp settings
+jQuery.ajaxSetup({
+ jsonp: "callback",
+ jsonpCallback: function() {
+ return jQuery.expando + "_" + ( jsc++ );
+ }
+});
+
+// Detect, normalize options and install callbacks for jsonp requests
+jQuery.ajaxPrefilter( "json jsonp", function( s, originalSettings, jqXHR ) {
+
+ var inspectData = s.contentType === "application/x-www-form-urlencoded" &&
+ ( typeof s.data === "string" );
+
+ if ( s.dataTypes[ 0 ] === "jsonp" ||
+ s.jsonp !== false && ( jsre.test( s.url ) ||
+ inspectData && jsre.test( s.data ) ) ) {
+
+ var responseContainer,
+ jsonpCallback = s.jsonpCallback =
+ jQuery.isFunction( s.jsonpCallback ) ? s.jsonpCallback() : s.jsonpCallback,
+ previous = window[ jsonpCallback ],
+ url = s.url,
+ data = s.data,
+ replace = "$1" + jsonpCallback + "$2";
+
+ if ( s.jsonp !== false ) {
+ url = url.replace( jsre, replace );
+ if ( s.url === url ) {
+ if ( inspectData ) {
+ data = data.replace( jsre, replace );
+ }
+ if ( s.data === data ) {
+ // Add callback manually
+ url += (/\?/.test( url ) ? "&" : "?") + s.jsonp + "=" + jsonpCallback;
+ }
+ }
+ }
+
+ s.url = url;
+ s.data = data;
+
+ // Install callback
+ window[ jsonpCallback ] = function( response ) {
+ responseContainer = [ response ];
+ };
+
+ // Clean-up function
+ jqXHR.always(function() {
+ // Set callback back to previous value
+ window[ jsonpCallback ] = previous;
+ // Call if it was a function and we have a response
+ if ( responseContainer && jQuery.isFunction( previous ) ) {
+ window[ jsonpCallback ]( responseContainer[ 0 ] );
+ }
+ });
+
+ // Use data converter to retrieve json after script execution
+ s.converters["script json"] = function() {
+ if ( !responseContainer ) {
+ jQuery.error( jsonpCallback + " was not called" );
+ }
+ return responseContainer[ 0 ];
+ };
+
+ // force json dataType
+ s.dataTypes[ 0 ] = "json";
+
+ // Delegate to script
+ return "script";
+ }
+});
+
+
+
+
+// Install script dataType
+jQuery.ajaxSetup({
+ accepts: {
+ script: "text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"
+ },
+ contents: {
+ script: /javascript|ecmascript/
+ },
+ converters: {
+ "text script": function( text ) {
+ jQuery.globalEval( text );
+ return text;
+ }
+ }
+});
+
+// Handle cache's special case and global
+jQuery.ajaxPrefilter( "script", function( s ) {
+ if ( s.cache === undefined ) {
+ s.cache = false;
+ }
+ if ( s.crossDomain ) {
+ s.type = "GET";
+ s.global = false;
+ }
+});
+
+// Bind script tag hack transport
+jQuery.ajaxTransport( "script", function(s) {
+
+ // This transport only deals with cross domain requests
+ if ( s.crossDomain ) {
+
+ var script,
+ head = document.head || document.getElementsByTagName( "head" )[0] || document.documentElement;
+
+ return {
+
+ send: function( _, callback ) {
+
+ script = document.createElement( "script" );
+
+ script.async = "async";
+
+ if ( s.scriptCharset ) {
+ script.charset = s.scriptCharset;
+ }
+
+ script.src = s.url;
+
+ // Attach handlers for all browsers
+ script.onload = script.onreadystatechange = function( _, isAbort ) {
+
+ if ( isAbort || !script.readyState || /loaded|complete/.test( script.readyState ) ) {
+
+ // Handle memory leak in IE
+ script.onload = script.onreadystatechange = null;
+
+ // Remove the script
+ if ( head && script.parentNode ) {
+ head.removeChild( script );
+ }
+
+ // Dereference the script
+ script = undefined;
+
+ // Callback if not abort
+ if ( !isAbort ) {
+ callback( 200, "success" );
+ }
+ }
+ };
+ // Use insertBefore instead of appendChild to circumvent an IE6 bug.
+ // This arises when a base node is used (#2709 and #4378).
+ head.insertBefore( script, head.firstChild );
+ },
+
+ abort: function() {
+ if ( script ) {
+ script.onload( 0, 1 );
+ }
+ }
+ };
+ }
+});
+
+
+
+
+var // #5280: Internet Explorer will keep connections alive if we don't abort on unload
+ xhrOnUnloadAbort = window.ActiveXObject ? function() {
+ // Abort all pending requests
+ for ( var key in xhrCallbacks ) {
+ xhrCallbacks[ key ]( 0, 1 );
+ }
+ } : false,
+ xhrId = 0,
+ xhrCallbacks;
+
+// Functions to create xhrs
+function createStandardXHR() {
+ try {
+ return new window.XMLHttpRequest();
+ } catch( e ) {}
+}
+
+function createActiveXHR() {
+ try {
+ return new window.ActiveXObject( "Microsoft.XMLHTTP" );
+ } catch( e ) {}
+}
+
+// Create the request object
+// (This is still attached to ajaxSettings for backward compatibility)
+jQuery.ajaxSettings.xhr = window.ActiveXObject ?
+ /* Microsoft failed to properly
+ * implement the XMLHttpRequest in IE7 (can't request local files),
+ * so we use the ActiveXObject when it is available
+ * Additionally XMLHttpRequest can be disabled in IE7/IE8 so
+ * we need a fallback.
+ */
+ function() {
+ return !this.isLocal && createStandardXHR() || createActiveXHR();
+ } :
+ // For all other browsers, use the standard XMLHttpRequest object
+ createStandardXHR;
+
+// Determine support properties
+(function( xhr ) {
+ jQuery.extend( jQuery.support, {
+ ajax: !!xhr,
+ cors: !!xhr && ( "withCredentials" in xhr )
+ });
+})( jQuery.ajaxSettings.xhr() );
+
+// Create transport if the browser can provide an xhr
+if ( jQuery.support.ajax ) {
+
+ jQuery.ajaxTransport(function( s ) {
+ // Cross domain only allowed if supported through XMLHttpRequest
+ if ( !s.crossDomain || jQuery.support.cors ) {
+
+ var callback;
+
+ return {
+ send: function( headers, complete ) {
+
+ // Get a new xhr
+ var xhr = s.xhr(),
+ handle,
+ i;
+
+ // Open the socket
+ // Passing null username, generates a login popup on Opera (#2865)
+ if ( s.username ) {
+ xhr.open( s.type, s.url, s.async, s.username, s.password );
+ } else {
+ xhr.open( s.type, s.url, s.async );
+ }
+
+ // Apply custom fields if provided
+ if ( s.xhrFields ) {
+ for ( i in s.xhrFields ) {
+ xhr[ i ] = s.xhrFields[ i ];
+ }
+ }
+
+ // Override mime type if needed
+ if ( s.mimeType && xhr.overrideMimeType ) {
+ xhr.overrideMimeType( s.mimeType );
+ }
+
+ // X-Requested-With header
+ // For cross-domain requests, seeing as conditions for a preflight are
+ // akin to a jigsaw puzzle, we simply never set it to be sure.
+ // (it can always be set on a per-request basis or even using ajaxSetup)
+ // For same-domain requests, won't change header if already provided.
+ if ( !s.crossDomain && !headers["X-Requested-With"] ) {
+ headers[ "X-Requested-With" ] = "XMLHttpRequest";
+ }
+
+ // Need an extra try/catch for cross domain requests in Firefox 3
+ try {
+ for ( i in headers ) {
+ xhr.setRequestHeader( i, headers[ i ] );
+ }
+ } catch( _ ) {}
+
+ // Do send the request
+ // This may raise an exception which is actually
+ // handled in jQuery.ajax (so no try/catch here)
+ xhr.send( ( s.hasContent && s.data ) || null );
+
+ // Listener
+ callback = function( _, isAbort ) {
+
+ var status,
+ statusText,
+ responseHeaders,
+ responses,
+ xml;
+
+ // Firefox throws exceptions when accessing properties
+ // of an xhr when a network error occured
+ // http://helpful.knobs-dials.com/index.php/Component_returned_failure_code:_0x80040111_(NS_ERROR_NOT_AVAILABLE)
+ try {
+
+ // Was never called and is aborted or complete
+ if ( callback && ( isAbort || xhr.readyState === 4 ) ) {
+
+ // Only called once
+ callback = undefined;
+
+ // Do not keep as active anymore
+ if ( handle ) {
+ xhr.onreadystatechange = jQuery.noop;
+ if ( xhrOnUnloadAbort ) {
+ delete xhrCallbacks[ handle ];
+ }
+ }
+
+ // If it's an abort
+ if ( isAbort ) {
+ // Abort it manually if needed
+ if ( xhr.readyState !== 4 ) {
+ xhr.abort();
+ }
+ } else {
+ status = xhr.status;
+ responseHeaders = xhr.getAllResponseHeaders();
+ responses = {};
+ xml = xhr.responseXML;
+
+ // Construct response list
+ if ( xml && xml.documentElement /* #4958 */ ) {
+ responses.xml = xml;
+ }
+ responses.text = xhr.responseText;
+
+ // Firefox throws an exception when accessing
+ // statusText for faulty cross-domain requests
+ try {
+ statusText = xhr.statusText;
+ } catch( e ) {
+ // We normalize with Webkit giving an empty statusText
+ statusText = "";
+ }
+
+ // Filter status for non standard behaviors
+
+ // If the request is local and we have data: assume a success
+ // (success with no data won't get notified, that's the best we
+ // can do given current implementations)
+ if ( !status && s.isLocal && !s.crossDomain ) {
+ status = responses.text ? 200 : 404;
+ // IE - #1450: sometimes returns 1223 when it should be 204
+ } else if ( status === 1223 ) {
+ status = 204;
+ }
+ }
+ }
+ } catch( firefoxAccessException ) {
+ if ( !isAbort ) {
+ complete( -1, firefoxAccessException );
+ }
+ }
+
+ // Call complete if needed
+ if ( responses ) {
+ complete( status, statusText, responses, responseHeaders );
+ }
+ };
+
+ // if we're in sync mode or it's in cache
+ // and has been retrieved directly (IE6 & IE7)
+ // we need to manually fire the callback
+ if ( !s.async || xhr.readyState === 4 ) {
+ callback();
+ } else {
+ handle = ++xhrId;
+ if ( xhrOnUnloadAbort ) {
+ // Create the active xhrs callbacks list if needed
+ // and attach the unload handler
+ if ( !xhrCallbacks ) {
+ xhrCallbacks = {};
+ jQuery( window ).unload( xhrOnUnloadAbort );
+ }
+ // Add to list of active xhrs callbacks
+ xhrCallbacks[ handle ] = callback;
+ }
+ xhr.onreadystatechange = callback;
+ }
+ },
+
+ abort: function() {
+ if ( callback ) {
+ callback(0,1);
+ }
+ }
+ };
+ }
+ });
+}
+
+
+
+
+var elemdisplay = {},
+ iframe, iframeDoc,
+ rfxtypes = /^(?:toggle|show|hide)$/,
+ rfxnum = /^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,
+ timerId,
+ fxAttrs = [
+ // height animations
+ [ "height", "marginTop", "marginBottom", "paddingTop", "paddingBottom" ],
+ // width animations
+ [ "width", "marginLeft", "marginRight", "paddingLeft", "paddingRight" ],
+ // opacity animations
+ [ "opacity" ]
+ ],
+ fxNow,
+ requestAnimationFrame = window.webkitRequestAnimationFrame ||
+ window.mozRequestAnimationFrame ||
+ window.oRequestAnimationFrame;
+
+jQuery.fn.extend({
+ show: function( speed, easing, callback ) {
+ var elem, display;
+
+ if ( speed || speed === 0 ) {
+ return this.animate( genFx("show", 3), speed, easing, callback);
+
+ } else {
+ for ( var i = 0, j = this.length; i < j; i++ ) {
+ elem = this[i];
+
+ if ( elem.style ) {
+ display = elem.style.display;
+
+ // Reset the inline display of this element to learn if it is
+ // being hidden by cascaded rules or not
+ if ( !jQuery._data(elem, "olddisplay") && display === "none" ) {
+ display = elem.style.display = "";
+ }
+
+ // Set elements which have been overridden with display: none
+ // in a stylesheet to whatever the default browser style is
+ // for such an element
+ if ( display === "" && jQuery.css( elem, "display" ) === "none" ) {
+ jQuery._data(elem, "olddisplay", defaultDisplay(elem.nodeName));
+ }
+ }
+ }
+
+ // Set the display of most of the elements in a second loop
+ // to avoid the constant reflow
+ for ( i = 0; i < j; i++ ) {
+ elem = this[i];
+
+ if ( elem.style ) {
+ display = elem.style.display;
+
+ if ( display === "" || display === "none" ) {
+ elem.style.display = jQuery._data(elem, "olddisplay") || "";
+ }
+ }
+ }
+
+ return this;
+ }
+ },
+
+ hide: function( speed, easing, callback ) {
+ if ( speed || speed === 0 ) {
+ return this.animate( genFx("hide", 3), speed, easing, callback);
+
+ } else {
+ for ( var i = 0, j = this.length; i < j; i++ ) {
+ if ( this[i].style ) {
+ var display = jQuery.css( this[i], "display" );
+
+ if ( display !== "none" && !jQuery._data( this[i], "olddisplay" ) ) {
+ jQuery._data( this[i], "olddisplay", display );
+ }
+ }
+ }
+
+ // Set the display of the elements in a second loop
+ // to avoid the constant reflow
+ for ( i = 0; i < j; i++ ) {
+ if ( this[i].style ) {
+ this[i].style.display = "none";
+ }
+ }
+
+ return this;
+ }
+ },
+
+ // Save the old toggle function
+ _toggle: jQuery.fn.toggle,
+
+ toggle: function( fn, fn2, callback ) {
+ var bool = typeof fn === "boolean";
+
+ if ( jQuery.isFunction(fn) && jQuery.isFunction(fn2) ) {
+ this._toggle.apply( this, arguments );
+
+ } else if ( fn == null || bool ) {
+ this.each(function() {
+ var state = bool ? fn : jQuery(this).is(":hidden");
+ jQuery(this)[ state ? "show" : "hide" ]();
+ });
+
+ } else {
+ this.animate(genFx("toggle", 3), fn, fn2, callback);
+ }
+
+ return this;
+ },
+
+ fadeTo: function( speed, to, easing, callback ) {
+ return this.filter(":hidden").css("opacity", 0).show().end()
+ .animate({opacity: to}, speed, easing, callback);
+ },
+
+ animate: function( prop, speed, easing, callback ) {
+ var optall = jQuery.speed(speed, easing, callback);
+
+ if ( jQuery.isEmptyObject( prop ) ) {
+ return this.each( optall.complete, [ false ] );
+ }
+
+ // Do not change referenced properties as per-property easing will be lost
+ prop = jQuery.extend( {}, prop );
+
+ return this[ optall.queue === false ? "each" : "queue" ](function() {
+ // XXX 'this' does not always have a nodeName when running the
+ // test suite
+
+ if ( optall.queue === false ) {
+ jQuery._mark( this );
+ }
+
+ var opt = jQuery.extend( {}, optall ),
+ isElement = this.nodeType === 1,
+ hidden = isElement && jQuery(this).is(":hidden"),
+ name, val, p,
+ display, e,
+ parts, start, end, unit;
+
+ // will store per property easing and be used to determine when an animation is complete
+ opt.animatedProperties = {};
+
+ for ( p in prop ) {
+
+ // property name normalization
+ name = jQuery.camelCase( p );
+ if ( p !== name ) {
+ prop[ name ] = prop[ p ];
+ delete prop[ p ];
+ }
+
+ val = prop[ name ];
+
+ // easing resolution: per property > opt.specialEasing > opt.easing > 'swing' (default)
+ if ( jQuery.isArray( val ) ) {
+ opt.animatedProperties[ name ] = val[ 1 ];
+ val = prop[ name ] = val[ 0 ];
+ } else {
+ opt.animatedProperties[ name ] = opt.specialEasing && opt.specialEasing[ name ] || opt.easing || 'swing';
+ }
+
+ if ( val === "hide" && hidden || val === "show" && !hidden ) {
+ return opt.complete.call( this );
+ }
+
+ if ( isElement && ( name === "height" || name === "width" ) ) {
+ // Make sure that nothing sneaks out
+ // Record all 3 overflow attributes because IE does not
+ // change the overflow attribute when overflowX and
+ // overflowY are set to the same value
+ opt.overflow = [ this.style.overflow, this.style.overflowX, this.style.overflowY ];
+
+ // Set display property to inline-block for height/width
+ // animations on inline elements that are having width/height
+ // animated
+ if ( jQuery.css( this, "display" ) === "inline" &&
+ jQuery.css( this, "float" ) === "none" ) {
+ if ( !jQuery.support.inlineBlockNeedsLayout ) {
+ this.style.display = "inline-block";
+
+ } else {
+ display = defaultDisplay( this.nodeName );
+
+ // inline-level elements accept inline-block;
+ // block-level elements need to be inline with layout
+ if ( display === "inline" ) {
+ this.style.display = "inline-block";
+
+ } else {
+ this.style.display = "inline";
+ this.style.zoom = 1;
+ }
+ }
+ }
+ }
+ }
+
+ if ( opt.overflow != null ) {
+ this.style.overflow = "hidden";
+ }
+
+ for ( p in prop ) {
+ e = new jQuery.fx( this, opt, p );
+ val = prop[ p ];
+
+ if ( rfxtypes.test(val) ) {
+ e[ val === "toggle" ? hidden ? "show" : "hide" : val ]();
+
+ } else {
+ parts = rfxnum.exec( val );
+ start = e.cur();
+
+ if ( parts ) {
+ end = parseFloat( parts[2] );
+ unit = parts[3] || ( jQuery.cssNumber[ p ] ? "" : "px" );
+
+ // We need to compute starting value
+ if ( unit !== "px" ) {
+ jQuery.style( this, p, (end || 1) + unit);
+ start = ((end || 1) / e.cur()) * start;
+ jQuery.style( this, p, start + unit);
+ }
+
+ // If a +=/-= token was provided, we're doing a relative animation
+ if ( parts[1] ) {
+ end = ( (parts[ 1 ] === "-=" ? -1 : 1) * end ) + start;
+ }
+
+ e.custom( start, end, unit );
+
+ } else {
+ e.custom( start, val, "" );
+ }
+ }
+ }
+
+ // For JS strict compliance
+ return true;
+ });
+ },
+
+ stop: function( clearQueue, gotoEnd ) {
+ if ( clearQueue ) {
+ this.queue([]);
+ }
+
+ this.each(function() {
+ var timers = jQuery.timers,
+ i = timers.length;
+ // clear marker counters if we know they won't be
+ if ( !gotoEnd ) {
+ jQuery._unmark( true, this );
+ }
+ while ( i-- ) {
+ if ( timers[i].elem === this ) {
+ if (gotoEnd) {
+ // force the next step to be the last
+ timers[i](true);
+ }
+
+ timers.splice(i, 1);
+ }
+ }
+ });
+
+ // start the next in the queue if the last step wasn't forced
+ if ( !gotoEnd ) {
+ this.dequeue();
+ }
+
+ return this;
+ }
+
+});
+
+// Animations created synchronously will run synchronously
+function createFxNow() {
+ setTimeout( clearFxNow, 0 );
+ return ( fxNow = jQuery.now() );
+}
+
+function clearFxNow() {
+ fxNow = undefined;
+}
+
+// Generate parameters to create a standard animation
+function genFx( type, num ) {
+ var obj = {};
+
+ jQuery.each( fxAttrs.concat.apply([], fxAttrs.slice(0,num)), function() {
+ obj[ this ] = type;
+ });
+
+ return obj;
+}
+
+// Generate shortcuts for custom animations
+jQuery.each({
+ slideDown: genFx("show", 1),
+ slideUp: genFx("hide", 1),
+ slideToggle: genFx("toggle", 1),
+ fadeIn: { opacity: "show" },
+ fadeOut: { opacity: "hide" },
+ fadeToggle: { opacity: "toggle" }
+}, function( name, props ) {
+ jQuery.fn[ name ] = function( speed, easing, callback ) {
+ return this.animate( props, speed, easing, callback );
+ };
+});
+
+jQuery.extend({
+ speed: function( speed, easing, fn ) {
+ var opt = speed && typeof speed === "object" ? jQuery.extend({}, speed) : {
+ complete: fn || !fn && easing ||
+ jQuery.isFunction( speed ) && speed,
+ duration: speed,
+ easing: fn && easing || easing && !jQuery.isFunction(easing) && easing
+ };
+
+ opt.duration = jQuery.fx.off ? 0 : typeof opt.duration === "number" ? opt.duration :
+ opt.duration in jQuery.fx.speeds ? jQuery.fx.speeds[opt.duration] : jQuery.fx.speeds._default;
+
+ // Queueing
+ opt.old = opt.complete;
+ opt.complete = function( noUnmark ) {
+ if ( opt.queue !== false ) {
+ jQuery.dequeue( this );
+ } else if ( noUnmark !== false ) {
+ jQuery._unmark( this );
+ }
+
+ if ( jQuery.isFunction( opt.old ) ) {
+ opt.old.call( this );
+ }
+ };
+
+ return opt;
+ },
+
+ easing: {
+ linear: function( p, n, firstNum, diff ) {
+ return firstNum + diff * p;
+ },
+ swing: function( p, n, firstNum, diff ) {
+ return ((-Math.cos(p*Math.PI)/2) + 0.5) * diff + firstNum;
+ }
+ },
+
+ timers: [],
+
+ fx: function( elem, options, prop ) {
+ this.options = options;
+ this.elem = elem;
+ this.prop = prop;
+
+ options.orig = options.orig || {};
+ }
+
+});
+
+jQuery.fx.prototype = {
+ // Simple function for setting a style value
+ update: function() {
+ if ( this.options.step ) {
+ this.options.step.call( this.elem, this.now, this );
+ }
+
+ (jQuery.fx.step[this.prop] || jQuery.fx.step._default)( this );
+ },
+
+ // Get the current size
+ cur: function() {
+ if ( this.elem[this.prop] != null && (!this.elem.style || this.elem.style[this.prop] == null) ) {
+ return this.elem[ this.prop ];
+ }
+
+ var parsed,
+ r = jQuery.css( this.elem, this.prop );
+ // Empty strings, null, undefined and "auto" are converted to 0,
+ // complex values such as "rotate(1rad)" are returned as is,
+ // simple values such as "10px" are parsed to Float.
+ return isNaN( parsed = parseFloat( r ) ) ? !r || r === "auto" ? 0 : r : parsed;
+ },
+
+ // Start an animation from one number to another
+ custom: function( from, to, unit ) {
+ var self = this,
+ fx = jQuery.fx,
+ raf;
+
+ this.startTime = fxNow || createFxNow();
+ this.start = from;
+ this.end = to;
+ this.unit = unit || this.unit || ( jQuery.cssNumber[ this.prop ] ? "" : "px" );
+ this.now = this.start;
+ this.pos = this.state = 0;
+
+ function t( gotoEnd ) {
+ return self.step(gotoEnd);
+ }
+
+ t.elem = this.elem;
+
+ if ( t() && jQuery.timers.push(t) && !timerId ) {
+ // Use requestAnimationFrame instead of setInterval if available
+ if ( requestAnimationFrame ) {
+ timerId = 1;
+ raf = function() {
+ // When timerId gets set to null at any point, this stops
+ if ( timerId ) {
+ requestAnimationFrame( raf );
+ fx.tick();
+ }
+ };
+ requestAnimationFrame( raf );
+ } else {
+ timerId = setInterval( fx.tick, fx.interval );
+ }
+ }
+ },
+
+ // Simple 'show' function
+ show: function() {
+ // Remember where we started, so that we can go back to it later
+ this.options.orig[this.prop] = jQuery.style( this.elem, this.prop );
+ this.options.show = true;
+
+ // Begin the animation
+ // Make sure that we start at a small width/height to avoid any
+ // flash of content
+ this.custom(this.prop === "width" || this.prop === "height" ? 1 : 0, this.cur());
+
+ // Start by showing the element
+ jQuery( this.elem ).show();
+ },
+
+ // Simple 'hide' function
+ hide: function() {
+ // Remember where we started, so that we can go back to it later
+ this.options.orig[this.prop] = jQuery.style( this.elem, this.prop );
+ this.options.hide = true;
+
+ // Begin the animation
+ this.custom(this.cur(), 0);
+ },
+
+ // Each step of an animation
+ step: function( gotoEnd ) {
+ var t = fxNow || createFxNow(),
+ done = true,
+ elem = this.elem,
+ options = this.options,
+ i, n;
+
+ if ( gotoEnd || t >= options.duration + this.startTime ) {
+ this.now = this.end;
+ this.pos = this.state = 1;
+ this.update();
+
+ options.animatedProperties[ this.prop ] = true;
+
+ for ( i in options.animatedProperties ) {
+ if ( options.animatedProperties[i] !== true ) {
+ done = false;
+ }
+ }
+
+ if ( done ) {
+ // Reset the overflow
+ if ( options.overflow != null && !jQuery.support.shrinkWrapBlocks ) {
+
+ jQuery.each( [ "", "X", "Y" ], function (index, value) {
+ elem.style[ "overflow" + value ] = options.overflow[index];
+ });
+ }
+
+ // Hide the element if the "hide" operation was done
+ if ( options.hide ) {
+ jQuery(elem).hide();
+ }
+
+ // Reset the properties, if the item has been hidden or shown
+ if ( options.hide || options.show ) {
+ for ( var p in options.animatedProperties ) {
+ jQuery.style( elem, p, options.orig[p] );
+ }
+ }
+
+ // Execute the complete function
+ options.complete.call( elem );
+ }
+
+ return false;
+
+ } else {
+ // classical easing cannot be used with an Infinity duration
+ if ( options.duration == Infinity ) {
+ this.now = t;
+ } else {
+ n = t - this.startTime;
+ this.state = n / options.duration;
+
+ // Perform the easing function, defaults to swing
+ this.pos = jQuery.easing[ options.animatedProperties[ this.prop ] ]( this.state, n, 0, 1, options.duration );
+ this.now = this.start + ((this.end - this.start) * this.pos);
+ }
+ // Perform the next step of the animation
+ this.update();
+ }
+
+ return true;
+ }
+};
+
+jQuery.extend( jQuery.fx, {
+ tick: function() {
+ for ( var timers = jQuery.timers, i = 0 ; i < timers.length ; ++i ) {
+ if ( !timers[i]() ) {
+ timers.splice(i--, 1);
+ }
+ }
+
+ if ( !timers.length ) {
+ jQuery.fx.stop();
+ }
+ },
+
+ interval: 13,
+
+ stop: function() {
+ clearInterval( timerId );
+ timerId = null;
+ },
+
+ speeds: {
+ slow: 600,
+ fast: 200,
+ // Default speed
+ _default: 400
+ },
+
+ step: {
+ opacity: function( fx ) {
+ jQuery.style( fx.elem, "opacity", fx.now );
+ },
+
+ _default: function( fx ) {
+ if ( fx.elem.style && fx.elem.style[ fx.prop ] != null ) {
+ fx.elem.style[ fx.prop ] = (fx.prop === "width" || fx.prop === "height" ? Math.max(0, fx.now) : fx.now) + fx.unit;
+ } else {
+ fx.elem[ fx.prop ] = fx.now;
+ }
+ }
+ }
+});
+
+if ( jQuery.expr && jQuery.expr.filters ) {
+ jQuery.expr.filters.animated = function( elem ) {
+ return jQuery.grep(jQuery.timers, function( fn ) {
+ return elem === fn.elem;
+ }).length;
+ };
+}
+
+// Try to restore the default display value of an element
+function defaultDisplay( nodeName ) {
+
+ if ( !elemdisplay[ nodeName ] ) {
+
+ var elem = jQuery( "<" + nodeName + ">" ).appendTo( "body" ),
+ display = elem.css( "display" );
+
+ elem.remove();
+
+ // If the simple way fails,
+ // get element's real default display by attaching it to a temp iframe
+ if ( display === "none" || display === "" ) {
+ // No iframe to use yet, so create it
+ if ( !iframe ) {
+ iframe = document.createElement( "iframe" );
+ iframe.frameBorder = iframe.width = iframe.height = 0;
+ }
+
+ document.body.appendChild( iframe );
+
+ // Create a cacheable copy of the iframe document on first call.
+ // IE and Opera will allow us to reuse the iframeDoc without re-writing the fake html
+ // document to it, Webkit & Firefox won't allow reusing the iframe document
+ if ( !iframeDoc || !iframe.createElement ) {
+ iframeDoc = ( iframe.contentWindow || iframe.contentDocument ).document;
+ iframeDoc.write( "<!doctype><html><body></body></html>" );
+ }
+
+ elem = iframeDoc.createElement( nodeName );
+
+ iframeDoc.body.appendChild( elem );
+
+ display = jQuery.css( elem, "display" );
+
+ document.body.removeChild( iframe );
+ }
+
+ // Store the correct default display
+ elemdisplay[ nodeName ] = display;
+ }
+
+ return elemdisplay[ nodeName ];
+}
+
+
+
+
+var rtable = /^t(?:able|d|h)$/i,
+ rroot = /^(?:body|html)$/i;
+
+if ( "getBoundingClientRect" in document.documentElement ) {
+ jQuery.fn.offset = function( options ) {
+ var elem = this[0], box;
+
+ if ( options ) {
+ return this.each(function( i ) {
+ jQuery.offset.setOffset( this, options, i );
+ });
+ }
+
+ if ( !elem || !elem.ownerDocument ) {
+ return null;
+ }
+
+ if ( elem === elem.ownerDocument.body ) {
+ return jQuery.offset.bodyOffset( elem );
+ }
+
+ try {
+ box = elem.getBoundingClientRect();
+ } catch(e) {}
+
+ var doc = elem.ownerDocument,
+ docElem = doc.documentElement;
+
+ // Make sure we're not dealing with a disconnected DOM node
+ if ( !box || !jQuery.contains( docElem, elem ) ) {
+ return box ? { top: box.top, left: box.left } : { top: 0, left: 0 };
+ }
+
+ var body = doc.body,
+ win = getWindow(doc),
+ clientTop = docElem.clientTop || body.clientTop || 0,
+ clientLeft = docElem.clientLeft || body.clientLeft || 0,
+ scrollTop = win.pageYOffset || jQuery.support.boxModel && docElem.scrollTop || body.scrollTop,
+ scrollLeft = win.pageXOffset || jQuery.support.boxModel && docElem.scrollLeft || body.scrollLeft,
+ top = box.top + scrollTop - clientTop,
+ left = box.left + scrollLeft - clientLeft;
+
+ return { top: top, left: left };
+ };
+
+} else {
+ jQuery.fn.offset = function( options ) {
+ var elem = this[0];
+
+ if ( options ) {
+ return this.each(function( i ) {
+ jQuery.offset.setOffset( this, options, i );
+ });
+ }
+
+ if ( !elem || !elem.ownerDocument ) {
+ return null;
+ }
+
+ if ( elem === elem.ownerDocument.body ) {
+ return jQuery.offset.bodyOffset( elem );
+ }
+
+ jQuery.offset.initialize();
+
+ var computedStyle,
+ offsetParent = elem.offsetParent,
+ prevOffsetParent = elem,
+ doc = elem.ownerDocument,
+ docElem = doc.documentElement,
+ body = doc.body,
+ defaultView = doc.defaultView,
+ prevComputedStyle = defaultView ? defaultView.getComputedStyle( elem, null ) : elem.currentStyle,
+ top = elem.offsetTop,
+ left = elem.offsetLeft;
+
+ while ( (elem = elem.parentNode) && elem !== body && elem !== docElem ) {
+ if ( jQuery.offset.supportsFixedPosition && prevComputedStyle.position === "fixed" ) {
+ break;
+ }
+
+ computedStyle = defaultView ? defaultView.getComputedStyle(elem, null) : elem.currentStyle;
+ top -= elem.scrollTop;
+ left -= elem.scrollLeft;
+
+ if ( elem === offsetParent ) {
+ top += elem.offsetTop;
+ left += elem.offsetLeft;
+
+ if ( jQuery.offset.doesNotAddBorder && !(jQuery.offset.doesAddBorderForTableAndCells && rtable.test(elem.nodeName)) ) {
+ top += parseFloat( computedStyle.borderTopWidth ) || 0;
+ left += parseFloat( computedStyle.borderLeftWidth ) || 0;
+ }
+
+ prevOffsetParent = offsetParent;
+ offsetParent = elem.offsetParent;
+ }
+
+ if ( jQuery.offset.subtractsBorderForOverflowNotVisible && computedStyle.overflow !== "visible" ) {
+ top += parseFloat( computedStyle.borderTopWidth ) || 0;
+ left += parseFloat( computedStyle.borderLeftWidth ) || 0;
+ }
+
+ prevComputedStyle = computedStyle;
+ }
+
+ if ( prevComputedStyle.position === "relative" || prevComputedStyle.position === "static" ) {
+ top += body.offsetTop;
+ left += body.offsetLeft;
+ }
+
+ if ( jQuery.offset.supportsFixedPosition && prevComputedStyle.position === "fixed" ) {
+ top += Math.max( docElem.scrollTop, body.scrollTop );
+ left += Math.max( docElem.scrollLeft, body.scrollLeft );
+ }
+
+ return { top: top, left: left };
+ };
+}
+
+jQuery.offset = {
+ initialize: function() {
+ var body = document.body, container = document.createElement("div"), innerDiv, checkDiv, table, td, bodyMarginTop = parseFloat( jQuery.css(body, "marginTop") ) || 0,
+ html = "<div style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;'><div></div></div><table style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;' cellpadding='0' cellspacing='0'><tr><td></td></tr></table>";
+
+ jQuery.extend( container.style, { position: "absolute", top: 0, left: 0, margin: 0, border: 0, width: "1px", height: "1px", visibility: "hidden" } );
+
+ container.innerHTML = html;
+ body.insertBefore( container, body.firstChild );
+ innerDiv = container.firstChild;
+ checkDiv = innerDiv.firstChild;
+ td = innerDiv.nextSibling.firstChild.firstChild;
+
+ this.doesNotAddBorder = (checkDiv.offsetTop !== 5);
+ this.doesAddBorderForTableAndCells = (td.offsetTop === 5);
+
+ checkDiv.style.position = "fixed";
+ checkDiv.style.top = "20px";
+
+ // safari subtracts parent border width here which is 5px
+ this.supportsFixedPosition = (checkDiv.offsetTop === 20 || checkDiv.offsetTop === 15);
+ checkDiv.style.position = checkDiv.style.top = "";
+
+ innerDiv.style.overflow = "hidden";
+ innerDiv.style.position = "relative";
+
+ this.subtractsBorderForOverflowNotVisible = (checkDiv.offsetTop === -5);
+
+ this.doesNotIncludeMarginInBodyOffset = (body.offsetTop !== bodyMarginTop);
+
+ body.removeChild( container );
+ jQuery.offset.initialize = jQuery.noop;
+ },
+
+ bodyOffset: function( body ) {
+ var top = body.offsetTop,
+ left = body.offsetLeft;
+
+ jQuery.offset.initialize();
+
+ if ( jQuery.offset.doesNotIncludeMarginInBodyOffset ) {
+ top += parseFloat( jQuery.css(body, "marginTop") ) || 0;
+ left += parseFloat( jQuery.css(body, "marginLeft") ) || 0;
+ }
+
+ return { top: top, left: left };
+ },
+
+ setOffset: function( elem, options, i ) {
+ var position = jQuery.css( elem, "position" );
+
+ // set position first, in-case top/left are set even on static elem
+ if ( position === "static" ) {
+ elem.style.position = "relative";
+ }
+
+ var curElem = jQuery( elem ),
+ curOffset = curElem.offset(),
+ curCSSTop = jQuery.css( elem, "top" ),
+ curCSSLeft = jQuery.css( elem, "left" ),
+ calculatePosition = (position === "absolute" || position === "fixed") && jQuery.inArray("auto", [curCSSTop, curCSSLeft]) > -1,
+ props = {}, curPosition = {}, curTop, curLeft;
+
+ // need to be able to calculate position if either top or left is auto and position is either absolute or fixed
+ if ( calculatePosition ) {
+ curPosition = curElem.position();
+ curTop = curPosition.top;
+ curLeft = curPosition.left;
+ } else {
+ curTop = parseFloat( curCSSTop ) || 0;
+ curLeft = parseFloat( curCSSLeft ) || 0;
+ }
+
+ if ( jQuery.isFunction( options ) ) {
+ options = options.call( elem, i, curOffset );
+ }
+
+ if (options.top != null) {
+ props.top = (options.top - curOffset.top) + curTop;
+ }
+ if (options.left != null) {
+ props.left = (options.left - curOffset.left) + curLeft;
+ }
+
+ if ( "using" in options ) {
+ options.using.call( elem, props );
+ } else {
+ curElem.css( props );
+ }
+ }
+};
+
+
+jQuery.fn.extend({
+ position: function() {
+ if ( !this[0] ) {
+ return null;
+ }
+
+ var elem = this[0],
+
+ // Get *real* offsetParent
+ offsetParent = this.offsetParent(),
+
+ // Get correct offsets
+ offset = this.offset(),
+ parentOffset = rroot.test(offsetParent[0].nodeName) ? { top: 0, left: 0 } : offsetParent.offset();
+
+ // Subtract element margins
+ // note: when an element has margin: auto the offsetLeft and marginLeft
+ // are the same in Safari causing offset.left to incorrectly be 0
+ offset.top -= parseFloat( jQuery.css(elem, "marginTop") ) || 0;
+ offset.left -= parseFloat( jQuery.css(elem, "marginLeft") ) || 0;
+
+ // Add offsetParent borders
+ parentOffset.top += parseFloat( jQuery.css(offsetParent[0], "borderTopWidth") ) || 0;
+ parentOffset.left += parseFloat( jQuery.css(offsetParent[0], "borderLeftWidth") ) || 0;
+
+ // Subtract the two offsets
+ return {
+ top: offset.top - parentOffset.top,
+ left: offset.left - parentOffset.left
+ };
+ },
+
+ offsetParent: function() {
+ return this.map(function() {
+ var offsetParent = this.offsetParent || document.body;
+ while ( offsetParent && (!rroot.test(offsetParent.nodeName) && jQuery.css(offsetParent, "position") === "static") ) {
+ offsetParent = offsetParent.offsetParent;
+ }
+ return offsetParent;
+ });
+ }
+});
+
+
+// Create scrollLeft and scrollTop methods
+jQuery.each( ["Left", "Top"], function( i, name ) {
+ var method = "scroll" + name;
+
+ jQuery.fn[ method ] = function( val ) {
+ var elem, win;
+
+ if ( val === undefined ) {
+ elem = this[ 0 ];
+
+ if ( !elem ) {
+ return null;
+ }
+
+ win = getWindow( elem );
+
+ // Return the scroll offset
+ return win ? ("pageXOffset" in win) ? win[ i ? "pageYOffset" : "pageXOffset" ] :
+ jQuery.support.boxModel && win.document.documentElement[ method ] ||
+ win.document.body[ method ] :
+ elem[ method ];
+ }
+
+ // Set the scroll offset
+ return this.each(function() {
+ win = getWindow( this );
+
+ if ( win ) {
+ win.scrollTo(
+ !i ? val : jQuery( win ).scrollLeft(),
+ i ? val : jQuery( win ).scrollTop()
+ );
+
+ } else {
+ this[ method ] = val;
+ }
+ });
+ };
+});
+
+function getWindow( elem ) {
+ return jQuery.isWindow( elem ) ?
+ elem :
+ elem.nodeType === 9 ?
+ elem.defaultView || elem.parentWindow :
+ false;
+}
+
+
+
+
+// Create innerHeight, innerWidth, outerHeight and outerWidth methods
+jQuery.each([ "Height", "Width" ], function( i, name ) {
+
+ var type = name.toLowerCase();
+
+ // innerHeight and innerWidth
+ jQuery.fn["inner" + name] = function() {
+ return this[0] ?
+ parseFloat( jQuery.css( this[0], type, "padding" ) ) :
+ null;
+ };
+
+ // outerHeight and outerWidth
+ jQuery.fn["outer" + name] = function( margin ) {
+ return this[0] ?
+ parseFloat( jQuery.css( this[0], type, margin ? "margin" : "border" ) ) :
+ null;
+ };
+
+ jQuery.fn[ type ] = function( size ) {
+ // Get window width or height
+ var elem = this[0];
+ if ( !elem ) {
+ return size == null ? null : this;
+ }
+
+ if ( jQuery.isFunction( size ) ) {
+ return this.each(function( i ) {
+ var self = jQuery( this );
+ self[ type ]( size.call( this, i, self[ type ]() ) );
+ });
+ }
+
+ if ( jQuery.isWindow( elem ) ) {
+ // Everyone else use document.documentElement or document.body depending on Quirks vs Standards mode
+ // 3rd condition allows Nokia support, as it supports the docElem prop but not CSS1Compat
+ var docElemProp = elem.document.documentElement[ "client" + name ];
+ return elem.document.compatMode === "CSS1Compat" && docElemProp ||
+ elem.document.body[ "client" + name ] || docElemProp;
+
+ // Get document width or height
+ } else if ( elem.nodeType === 9 ) {
+ // Either scroll[Width/Height] or offset[Width/Height], whichever is greater
+ return Math.max(
+ elem.documentElement["client" + name],
+ elem.body["scroll" + name], elem.documentElement["scroll" + name],
+ elem.body["offset" + name], elem.documentElement["offset" + name]
+ );
+
+ // Get or set width or height on the element
+ } else if ( size === undefined ) {
+ var orig = jQuery.css( elem, type ),
+ ret = parseFloat( orig );
+
+ return jQuery.isNaN( ret ) ? orig : ret;
+
+ // Set the width or height on the element (default to pixels if value is unitless)
+ } else {
+ return this.css( type, typeof size === "string" ? size : size + "px" );
+ }
+ };
+
+});
+
+
+window.jQuery = window.$ = jQuery;
+})(window); \ No newline at end of file
diff --git a/bug/bug/jquery-validation-1.8.1/lib/jquery.form.js b/bug/bug/jquery-validation-1.8.1/lib/jquery.form.js
new file mode 100644
index 0000000..dde3942
--- /dev/null
+++ b/bug/bug/jquery-validation-1.8.1/lib/jquery.form.js
@@ -0,0 +1,660 @@
+/*
+ * jQuery Form Plugin
+ * version: 2.36 (07-NOV-2009)
+ * @requires jQuery v1.2.6 or later
+ *
+ * Examples and documentation at: http://malsup.com/jquery/form/
+ * Dual licensed under the MIT and GPL licenses:
+ * http://www.opensource.org/licenses/mit-license.php
+ * http://www.gnu.org/licenses/gpl.html
+ */
+;(function($) {
+
+/*
+ Usage Note:
+ -----------
+ Do not use both ajaxSubmit and ajaxForm on the same form. These
+ functions are intended to be exclusive. Use ajaxSubmit if you want
+ to bind your own submit handler to the form. For example,
+
+ $(document).ready(function() {
+ $('#myForm').bind('submit', function() {
+ $(this).ajaxSubmit({
+ target: '#output'
+ });
+ return false; // <-- important!
+ });
+ });
+
+ Use ajaxForm when you want the plugin to manage all the event binding
+ for you. For example,
+
+ $(document).ready(function() {
+ $('#myForm').ajaxForm({
+ target: '#output'
+ });
+ });
+
+ When using ajaxForm, the ajaxSubmit function will be invoked for you
+ at the appropriate time.
+*/
+
+/**
+ * ajaxSubmit() provides a mechanism for immediately submitting
+ * an HTML form using AJAX.
+ */
+$.fn.ajaxSubmit = function(options) {
+ // fast fail if nothing selected (http://dev.jquery.com/ticket/2752)
+ if (!this.length) {
+ log('ajaxSubmit: skipping submit process - no element selected');
+ return this;
+ }
+
+ if (typeof options == 'function')
+ options = { success: options };
+
+ var url = $.trim(this.attr('action'));
+ if (url) {
+ // clean url (don't include hash vaue)
+ url = (url.match(/^([^#]+)/)||[])[1];
+ }
+ url = url || window.location.href || '';
+
+ options = $.extend({
+ url: url,
+ type: this.attr('method') || 'GET',
+ iframeSrc: /^https/i.test(window.location.href || '') ? 'javascript:false' : 'about:blank'
+ }, options || {});
+
+ // hook for manipulating the form data before it is extracted;
+ // convenient for use with rich editors like tinyMCE or FCKEditor
+ var veto = {};
+ this.trigger('form-pre-serialize', [this, options, veto]);
+ if (veto.veto) {
+ log('ajaxSubmit: submit vetoed via form-pre-serialize trigger');
+ return this;
+ }
+
+ // provide opportunity to alter form data before it is serialized
+ if (options.beforeSerialize && options.beforeSerialize(this, options) === false) {
+ log('ajaxSubmit: submit aborted via beforeSerialize callback');
+ return this;
+ }
+
+ var a = this.formToArray(options.semantic);
+ if (options.data) {
+ options.extraData = options.data;
+ for (var n in options.data) {
+ if(options.data[n] instanceof Array) {
+ for (var k in options.data[n])
+ a.push( { name: n, value: options.data[n][k] } );
+ }
+ else
+ a.push( { name: n, value: options.data[n] } );
+ }
+ }
+
+ // give pre-submit callback an opportunity to abort the submit
+ if (options.beforeSubmit && options.beforeSubmit(a, this, options) === false) {
+ log('ajaxSubmit: submit aborted via beforeSubmit callback');
+ return this;
+ }
+
+ // fire vetoable 'validate' event
+ this.trigger('form-submit-validate', [a, this, options, veto]);
+ if (veto.veto) {
+ log('ajaxSubmit: submit vetoed via form-submit-validate trigger');
+ return this;
+ }
+
+ var q = $.param(a);
+
+ if (options.type.toUpperCase() == 'GET') {
+ options.url += (options.url.indexOf('?') >= 0 ? '&' : '?') + q;
+ options.data = null; // data is null for 'get'
+ }
+ else
+ options.data = q; // data is the query string for 'post'
+
+ var $form = this, callbacks = [];
+ if (options.resetForm) callbacks.push(function() { $form.resetForm(); });
+ if (options.clearForm) callbacks.push(function() { $form.clearForm(); });
+
+ // perform a load on the target only if dataType is not provided
+ if (!options.dataType && options.target) {
+ var oldSuccess = options.success || function(){};
+ callbacks.push(function(data) {
+ $(options.target).html(data).each(oldSuccess, arguments);
+ });
+ }
+ else if (options.success)
+ callbacks.push(options.success);
+
+ options.success = function(data, status) {
+ for (var i=0, max=callbacks.length; i < max; i++)
+ callbacks[i].apply(options, [data, status, $form]);
+ };
+
+ // are there files to upload?
+ var files = $('input:file', this).fieldValue();
+ var found = false;
+ for (var j=0; j < files.length; j++)
+ if (files[j])
+ found = true;
+
+ var multipart = false;
+// var mp = 'multipart/form-data';
+// multipart = ($form.attr('enctype') == mp || $form.attr('encoding') == mp);
+
+ // options.iframe allows user to force iframe mode
+ // 06-NOV-09: now defaulting to iframe mode if file input is detected
+ if ((files.length && options.iframe !== false) || options.iframe || found || multipart) {
+ // hack to fix Safari hang (thanks to Tim Molendijk for this)
+ // see: http://groups.google.com/group/jquery-dev/browse_thread/thread/36395b7ab510dd5d
+ if (options.closeKeepAlive)
+ $.get(options.closeKeepAlive, fileUpload);
+ else
+ fileUpload();
+ }
+ else
+ $.ajax(options);
+
+ // fire 'notify' event
+ this.trigger('form-submit-notify', [this, options]);
+ return this;
+
+
+ // private function for handling file uploads (hat tip to YAHOO!)
+ function fileUpload() {
+ var form = $form[0];
+
+ if ($(':input[name=submit]', form).length) {
+ alert('Error: Form elements must not be named "submit".');
+ return;
+ }
+
+ var opts = $.extend({}, $.ajaxSettings, options);
+ var s = $.extend(true, {}, $.extend(true, {}, $.ajaxSettings), opts);
+
+ var id = 'jqFormIO' + (new Date().getTime());
+ var $io = $('<iframe id="' + id + '" name="' + id + '" src="'+ opts.iframeSrc +'" />');
+ var io = $io[0];
+
+ $io.css({ position: 'absolute', top: '-1000px', left: '-1000px' });
+
+ var xhr = { // mock object
+ aborted: 0,
+ responseText: null,
+ responseXML: null,
+ status: 0,
+ statusText: 'n/a',
+ getAllResponseHeaders: function() {},
+ getResponseHeader: function() {},
+ setRequestHeader: function() {},
+ abort: function() {
+ this.aborted = 1;
+ $io.attr('src', opts.iframeSrc); // abort op in progress
+ }
+ };
+
+ var g = opts.global;
+ // trigger ajax global events so that activity/block indicators work like normal
+ if (g && ! $.active++) $.event.trigger("ajaxStart");
+ if (g) $.event.trigger("ajaxSend", [xhr, opts]);
+
+ if (s.beforeSend && s.beforeSend(xhr, s) === false) {
+ s.global && $.active--;
+ return;
+ }
+ if (xhr.aborted)
+ return;
+
+ var cbInvoked = 0;
+ var timedOut = 0;
+
+ // add submitting element to data if we know it
+ var sub = form.clk;
+ if (sub) {
+ var n = sub.name;
+ if (n && !sub.disabled) {
+ options.extraData = options.extraData || {};
+ options.extraData[n] = sub.value;
+ if (sub.type == "image") {
+ options.extraData[name+'.x'] = form.clk_x;
+ options.extraData[name+'.y'] = form.clk_y;
+ }
+ }
+ }
+
+ // take a breath so that pending repaints get some cpu time before the upload starts
+ setTimeout(function() {
+ // make sure form attrs are set
+ var t = $form.attr('target'), a = $form.attr('action');
+
+ // update form attrs in IE friendly way
+ form.setAttribute('target',id);
+ if (form.getAttribute('method') != 'POST')
+ form.setAttribute('method', 'POST');
+ if (form.getAttribute('action') != opts.url)
+ form.setAttribute('action', opts.url);
+
+ // ie borks in some cases when setting encoding
+ if (! options.skipEncodingOverride) {
+ $form.attr({
+ encoding: 'multipart/form-data',
+ enctype: 'multipart/form-data'
+ });
+ }
+
+ // support timout
+ if (opts.timeout)
+ setTimeout(function() { timedOut = true; cb(); }, opts.timeout);
+
+ // add "extra" data to form if provided in options
+ var extraInputs = [];
+ try {
+ if (options.extraData)
+ for (var n in options.extraData)
+ extraInputs.push(
+ $('<input type="hidden" name="'+n+'" value="'+options.extraData[n]+'" />')
+ .appendTo(form)[0]);
+
+ // add iframe to doc and submit the form
+ $io.appendTo('body');
+ io.attachEvent ? io.attachEvent('onload', cb) : io.addEventListener('load', cb, false);
+ form.submit();
+ }
+ finally {
+ // reset attrs and remove "extra" input elements
+ form.setAttribute('action',a);
+ t ? form.setAttribute('target', t) : $form.removeAttr('target');
+ $(extraInputs).remove();
+ }
+ }, 10);
+
+ var domCheckCount = 50;
+
+ function cb() {
+ if (cbInvoked++) return;
+
+ io.detachEvent ? io.detachEvent('onload', cb) : io.removeEventListener('load', cb, false);
+
+ var ok = true;
+ try {
+ if (timedOut) throw 'timeout';
+ // extract the server response from the iframe
+ var data, doc;
+
+ doc = io.contentWindow ? io.contentWindow.document : io.contentDocument ? io.contentDocument : io.document;
+
+ var isXml = opts.dataType == 'xml' || doc.XMLDocument || $.isXMLDoc(doc);
+ log('isXml='+isXml);
+ if (!isXml && (doc.body == null || doc.body.innerHTML == '')) {
+ if (--domCheckCount) {
+ // in some browsers (Opera) the iframe DOM is not always traversable when
+ // the onload callback fires, so we loop a bit to accommodate
+ cbInvoked = 0;
+ setTimeout(cb, 100);
+ return;
+ }
+ log('Could not access iframe DOM after 50 tries.');
+ return;
+ }
+
+ xhr.responseText = doc.body ? doc.body.innerHTML : null;
+ xhr.responseXML = doc.XMLDocument ? doc.XMLDocument : doc;
+ xhr.getResponseHeader = function(header){
+ var headers = {'content-type': opts.dataType};
+ return headers[header];
+ };
+
+ if (opts.dataType == 'json' || opts.dataType == 'script') {
+ // see if user embedded response in textarea
+ var ta = doc.getElementsByTagName('textarea')[0];
+ if (ta)
+ xhr.responseText = ta.value;
+ else {
+ // account for browsers injecting pre around json response
+ var pre = doc.getElementsByTagName('pre')[0];
+ if (pre)
+ xhr.responseText = pre.innerHTML;
+ }
+ }
+ else if (opts.dataType == 'xml' && !xhr.responseXML && xhr.responseText != null) {
+ xhr.responseXML = toXml(xhr.responseText);
+ }
+ data = $.httpData(xhr, opts.dataType);
+ }
+ catch(e){
+ ok = false;
+ $.handleError(opts, xhr, 'error', e);
+ }
+
+ // ordering of these callbacks/triggers is odd, but that's how $.ajax does it
+ if (ok) {
+ opts.success(data, 'success');
+ if (g) $.event.trigger("ajaxSuccess", [xhr, opts]);
+ }
+ if (g) $.event.trigger("ajaxComplete", [xhr, opts]);
+ if (g && ! --$.active) $.event.trigger("ajaxStop");
+ if (opts.complete) opts.complete(xhr, ok ? 'success' : 'error');
+
+ // clean up
+ setTimeout(function() {
+ $io.remove();
+ xhr.responseXML = null;
+ }, 100);
+ };
+
+ function toXml(s, doc) {
+ if (window.ActiveXObject) {
+ doc = new ActiveXObject('Microsoft.XMLDOM');
+ doc.async = 'false';
+ doc.loadXML(s);
+ }
+ else
+ doc = (new DOMParser()).parseFromString(s, 'text/xml');
+ return (doc && doc.documentElement && doc.documentElement.tagName != 'parsererror') ? doc : null;
+ };
+ };
+};
+
+/**
+ * ajaxForm() provides a mechanism for fully automating form submission.
+ *
+ * The advantages of using this method instead of ajaxSubmit() are:
+ *
+ * 1: This method will include coordinates for <input type="image" /> elements (if the element
+ * is used to submit the form).
+ * 2. This method will include the submit element's name/value data (for the element that was
+ * used to submit the form).
+ * 3. This method binds the submit() method to the form for you.
+ *
+ * The options argument for ajaxForm works exactly as it does for ajaxSubmit. ajaxForm merely
+ * passes the options argument along after properly binding events for submit elements and
+ * the form itself.
+ */
+$.fn.ajaxForm = function(options) {
+ return this.ajaxFormUnbind().bind('submit.form-plugin', function() {
+ $(this).ajaxSubmit(options);
+ return false;
+ }).bind('click.form-plugin', function(e) {
+ var target = e.target;
+ var $el = $(target);
+ if (!($el.is(":submit,input:image"))) {
+ // is this a child element of the submit el? (ex: a span within a button)
+ var t = $el.closest(':submit');
+ if (t.length == 0)
+ return;
+ target = t[0];
+ }
+ var form = this;
+ form.clk = target;
+ if (target.type == 'image') {
+ if (e.offsetX != undefined) {
+ form.clk_x = e.offsetX;
+ form.clk_y = e.offsetY;
+ } else if (typeof $.fn.offset == 'function') { // try to use dimensions plugin
+ var offset = $el.offset();
+ form.clk_x = e.pageX - offset.left;
+ form.clk_y = e.pageY - offset.top;
+ } else {
+ form.clk_x = e.pageX - target.offsetLeft;
+ form.clk_y = e.pageY - target.offsetTop;
+ }
+ }
+ // clear form vars
+ setTimeout(function() { form.clk = form.clk_x = form.clk_y = null; }, 100);
+ });
+};
+
+// ajaxFormUnbind unbinds the event handlers that were bound by ajaxForm
+$.fn.ajaxFormUnbind = function() {
+ return this.unbind('submit.form-plugin click.form-plugin');
+};
+
+/**
+ * formToArray() gathers form element data into an array of objects that can
+ * be passed to any of the following ajax functions: $.get, $.post, or load.
+ * Each object in the array has both a 'name' and 'value' property. An example of
+ * an array for a simple login form might be:
+ *
+ * [ { name: 'username', value: 'jresig' }, { name: 'password', value: 'secret' } ]
+ *
+ * It is this array that is passed to pre-submit callback functions provided to the
+ * ajaxSubmit() and ajaxForm() methods.
+ */
+$.fn.formToArray = function(semantic) {
+ var a = [];
+ if (this.length == 0) return a;
+
+ var form = this[0];
+ var els = semantic ? form.getElementsByTagName('*') : form.elements;
+ if (!els) return a;
+ for(var i=0, max=els.length; i < max; i++) {
+ var el = els[i];
+ var n = el.name;
+ if (!n) continue;
+
+ if (semantic && form.clk && el.type == "image") {
+ // handle image inputs on the fly when semantic == true
+ if(!el.disabled && form.clk == el) {
+ a.push({name: n, value: $(el).val()});
+ a.push({name: n+'.x', value: form.clk_x}, {name: n+'.y', value: form.clk_y});
+ }
+ continue;
+ }
+
+ var v = $.fieldValue(el, true);
+ if (v && v.constructor == Array) {
+ for(var j=0, jmax=v.length; j < jmax; j++)
+ a.push({name: n, value: v[j]});
+ }
+ else if (v !== null && typeof v != 'undefined')
+ a.push({name: n, value: v});
+ }
+
+ if (!semantic && form.clk) {
+ // input type=='image' are not found in elements array! handle it here
+ var $input = $(form.clk), input = $input[0], n = input.name;
+ if (n && !input.disabled && input.type == 'image') {
+ a.push({name: n, value: $input.val()});
+ a.push({name: n+'.x', value: form.clk_x}, {name: n+'.y', value: form.clk_y});
+ }
+ }
+ return a;
+};
+
+/**
+ * Serializes form data into a 'submittable' string. This method will return a string
+ * in the format: name1=value1&amp;name2=value2
+ */
+$.fn.formSerialize = function(semantic) {
+ //hand off to jQuery.param for proper encoding
+ return $.param(this.formToArray(semantic));
+};
+
+/**
+ * Serializes all field elements in the jQuery object into a query string.
+ * This method will return a string in the format: name1=value1&amp;name2=value2
+ */
+$.fn.fieldSerialize = function(successful) {
+ var a = [];
+ this.each(function() {
+ var n = this.name;
+ if (!n) return;
+ var v = $.fieldValue(this, successful);
+ if (v && v.constructor == Array) {
+ for (var i=0,max=v.length; i < max; i++)
+ a.push({name: n, value: v[i]});
+ }
+ else if (v !== null && typeof v != 'undefined')
+ a.push({name: this.name, value: v});
+ });
+ //hand off to jQuery.param for proper encoding
+ return $.param(a);
+};
+
+/**
+ * Returns the value(s) of the element in the matched set. For example, consider the following form:
+ *
+ * <form><fieldset>
+ * <input name="A" type="text" />
+ * <input name="A" type="text" />
+ * <input name="B" type="checkbox" value="B1" />
+ * <input name="B" type="checkbox" value="B2"/>
+ * <input name="C" type="radio" value="C1" />
+ * <input name="C" type="radio" value="C2" />
+ * </fieldset></form>
+ *
+ * var v = $(':text').fieldValue();
+ * // if no values are entered into the text inputs
+ * v == ['','']
+ * // if values entered into the text inputs are 'foo' and 'bar'
+ * v == ['foo','bar']
+ *
+ * var v = $(':checkbox').fieldValue();
+ * // if neither checkbox is checked
+ * v === undefined
+ * // if both checkboxes are checked
+ * v == ['B1', 'B2']
+ *
+ * var v = $(':radio').fieldValue();
+ * // if neither radio is checked
+ * v === undefined
+ * // if first radio is checked
+ * v == ['C1']
+ *
+ * The successful argument controls whether or not the field element must be 'successful'
+ * (per http://www.w3.org/TR/html4/interact/forms.html#successful-controls).
+ * The default value of the successful argument is true. If this value is false the value(s)
+ * for each element is returned.
+ *
+ * Note: This method *always* returns an array. If no valid value can be determined the
+ * array will be empty, otherwise it will contain one or more values.
+ */
+$.fn.fieldValue = function(successful) {
+ for (var val=[], i=0, max=this.length; i < max; i++) {
+ var el = this[i];
+ var v = $.fieldValue(el, successful);
+ if (v === null || typeof v == 'undefined' || (v.constructor == Array && !v.length))
+ continue;
+ v.constructor == Array ? $.merge(val, v) : val.push(v);
+ }
+ return val;
+};
+
+/**
+ * Returns the value of the field element.
+ */
+$.fieldValue = function(el, successful) {
+ var n = el.name, t = el.type, tag = el.tagName.toLowerCase();
+ if (typeof successful == 'undefined') successful = true;
+
+ if (successful && (!n || el.disabled || t == 'reset' || t == 'button' ||
+ (t == 'checkbox' || t == 'radio') && !el.checked ||
+ (t == 'submit' || t == 'image') && el.form && el.form.clk != el ||
+ tag == 'select' && el.selectedIndex == -1))
+ return null;
+
+ if (tag == 'select') {
+ var index = el.selectedIndex;
+ if (index < 0) return null;
+ var a = [], ops = el.options;
+ var one = (t == 'select-one');
+ var max = (one ? index+1 : ops.length);
+ for(var i=(one ? index : 0); i < max; i++) {
+ var op = ops[i];
+ if (op.selected) {
+ var v = op.value;
+ if (!v) // extra pain for IE...
+ v = (op.attributes && op.attributes['value'] && !(op.attributes['value'].specified)) ? op.text : op.value;
+ if (one) return v;
+ a.push(v);
+ }
+ }
+ return a;
+ }
+ return el.value;
+};
+
+/**
+ * Clears the form data. Takes the following actions on the form's input fields:
+ * - input text fields will have their 'value' property set to the empty string
+ * - select elements will have their 'selectedIndex' property set to -1
+ * - checkbox and radio inputs will have their 'checked' property set to false
+ * - inputs of type submit, button, reset, and hidden will *not* be effected
+ * - button elements will *not* be effected
+ */
+$.fn.clearForm = function() {
+ return this.each(function() {
+ $('input,select,textarea', this).clearFields();
+ });
+};
+
+/**
+ * Clears the selected form elements.
+ */
+$.fn.clearFields = $.fn.clearInputs = function() {
+ return this.each(function() {
+ var t = this.type, tag = this.tagName.toLowerCase();
+ if (t == 'text' || t == 'password' || tag == 'textarea')
+ this.value = '';
+ else if (t == 'checkbox' || t == 'radio')
+ this.checked = false;
+ else if (tag == 'select')
+ this.selectedIndex = -1;
+ });
+};
+
+/**
+ * Resets the form data. Causes all form elements to be reset to their original value.
+ */
+$.fn.resetForm = function() {
+ return this.each(function() {
+ // guard against an input with the name of 'reset'
+ // note that IE reports the reset function as an 'object'
+ if (typeof this.reset == 'function' || (typeof this.reset == 'object' && !this.reset.nodeType))
+ this.reset();
+ });
+};
+
+/**
+ * Enables or disables any matching elements.
+ */
+$.fn.enable = function(b) {
+ if (b == undefined) b = true;
+ return this.each(function() {
+ this.disabled = !b;
+ });
+};
+
+/**
+ * Checks/unchecks any matching checkboxes or radio buttons and
+ * selects/deselects and matching option elements.
+ */
+$.fn.selected = function(select) {
+ if (select == undefined) select = true;
+ return this.each(function() {
+ var t = this.type;
+ if (t == 'checkbox' || t == 'radio')
+ this.checked = select;
+ else if (this.tagName.toLowerCase() == 'option') {
+ var $sel = $(this).parent('select');
+ if (select && $sel[0] && $sel[0].type == 'select-one') {
+ // deselect all other options
+ $sel.find('option').selected(false);
+ }
+ this.selected = select;
+ }
+ });
+};
+
+// helper fn for console logging
+// set $.fn.ajaxSubmit.debug to true to enable debug logging
+function log() {
+ if ($.fn.ajaxSubmit.debug && window.console && window.console.log)
+ window.console.log('[jquery.form] ' + Array.prototype.join.call(arguments,''));
+};
+
+})(jQuery);
diff --git a/bug/bug/jquery-validation-1.8.1/lib/jquery.js b/bug/bug/jquery-validation-1.8.1/lib/jquery.js
new file mode 100644
index 0000000..714166a
--- /dev/null
+++ b/bug/bug/jquery-validation-1.8.1/lib/jquery.js
@@ -0,0 +1,4376 @@
+/*!
+ * jQuery JavaScript Library v1.3.2
+ * http://jquery.com/
+ *
+ * Copyright (c) 2009 John Resig
+ * Dual licensed under the MIT and GPL licenses.
+ * http://docs.jquery.com/License
+ *
+ * Date: 2009-02-19 17:34:21 -0500 (Thu, 19 Feb 2009)
+ * Revision: 6246
+ */
+(function(){
+
+var
+ // Will speed up references to window, and allows munging its name.
+ window = this,
+ // Will speed up references to undefined, and allows munging its name.
+ undefined,
+ // Map over jQuery in case of overwrite
+ _jQuery = window.jQuery,
+ // Map over the $ in case of overwrite
+ _$ = window.$,
+
+ jQuery = window.jQuery = window.$ = function( selector, context ) {
+ // The jQuery object is actually just the init constructor 'enhanced'
+ return new jQuery.fn.init( selector, context );
+ },
+
+ // A simple way to check for HTML strings or ID strings
+ // (both of which we optimize for)
+ quickExpr = /^[^<]*(<(.|\s)+>)[^>]*$|^#([\w-]+)$/,
+ // Is it a simple selector
+ isSimple = /^.[^:#\[\.,]*$/;
+
+jQuery.fn = jQuery.prototype = {
+ init: function( selector, context ) {
+ // Make sure that a selection was provided
+ selector = selector || document;
+
+ // Handle $(DOMElement)
+ if ( selector.nodeType ) {
+ this[0] = selector;
+ this.length = 1;
+ this.context = selector;
+ return this;
+ }
+ // Handle HTML strings
+ if ( typeof selector === "string" ) {
+ // Are we dealing with HTML string or an ID?
+ var match = quickExpr.exec( selector );
+
+ // Verify a match, and that no context was specified for #id
+ if ( match && (match[1] || !context) ) {
+
+ // HANDLE: $(html) -> $(array)
+ if ( match[1] )
+ selector = jQuery.clean( [ match[1] ], context );
+
+ // HANDLE: $("#id")
+ else {
+ var elem = document.getElementById( match[3] );
+
+ // Handle the case where IE and Opera return items
+ // by name instead of ID
+ if ( elem && elem.id != match[3] )
+ return jQuery().find( selector );
+
+ // Otherwise, we inject the element directly into the jQuery object
+ var ret = jQuery( elem || [] );
+ ret.context = document;
+ ret.selector = selector;
+ return ret;
+ }
+
+ // HANDLE: $(expr, [context])
+ // (which is just equivalent to: $(content).find(expr)
+ } else
+ return jQuery( context ).find( selector );
+
+ // HANDLE: $(function)
+ // Shortcut for document ready
+ } else if ( jQuery.isFunction( selector ) )
+ return jQuery( document ).ready( selector );
+
+ // Make sure that old selector state is passed along
+ if ( selector.selector && selector.context ) {
+ this.selector = selector.selector;
+ this.context = selector.context;
+ }
+
+ return this.setArray(jQuery.isArray( selector ) ?
+ selector :
+ jQuery.makeArray(selector));
+ },
+
+ // Start with an empty selector
+ selector: "",
+
+ // The current version of jQuery being used
+ jquery: "1.3.2",
+
+ // The number of elements contained in the matched element set
+ size: function() {
+ return this.length;
+ },
+
+ // Get the Nth element in the matched element set OR
+ // Get the whole matched element set as a clean array
+ get: function( num ) {
+ return num === undefined ?
+
+ // Return a 'clean' array
+ Array.prototype.slice.call( this ) :
+
+ // Return just the object
+ this[ num ];
+ },
+
+ // Take an array of elements and push it onto the stack
+ // (returning the new matched element set)
+ pushStack: function( elems, name, selector ) {
+ // Build a new jQuery matched element set
+ var ret = jQuery( elems );
+
+ // Add the old object onto the stack (as a reference)
+ ret.prevObject = this;
+
+ ret.context = this.context;
+
+ if ( name === "find" )
+ ret.selector = this.selector + (this.selector ? " " : "") + selector;
+ else if ( name )
+ ret.selector = this.selector + "." + name + "(" + selector + ")";
+
+ // Return the newly-formed element set
+ return ret;
+ },
+
+ // Force the current matched set of elements to become
+ // the specified array of elements (destroying the stack in the process)
+ // You should use pushStack() in order to do this, but maintain the stack
+ setArray: function( elems ) {
+ // Resetting the length to 0, then using the native Array push
+ // is a super-fast way to populate an object with array-like properties
+ this.length = 0;
+ Array.prototype.push.apply( this, elems );
+
+ return this;
+ },
+
+ // Execute a callback for every element in the matched set.
+ // (You can seed the arguments with an array of args, but this is
+ // only used internally.)
+ each: function( callback, args ) {
+ return jQuery.each( this, callback, args );
+ },
+
+ // Determine the position of an element within
+ // the matched set of elements
+ index: function( elem ) {
+ // Locate the position of the desired element
+ return jQuery.inArray(
+ // If it receives a jQuery object, the first element is used
+ elem && elem.jquery ? elem[0] : elem
+ , this );
+ },
+
+ attr: function( name, value, type ) {
+ var options = name;
+
+ // Look for the case where we're accessing a style value
+ if ( typeof name === "string" )
+ if ( value === undefined )
+ return this[0] && jQuery[ type || "attr" ]( this[0], name );
+
+ else {
+ options = {};
+ options[ name ] = value;
+ }
+
+ // Check to see if we're setting style values
+ return this.each(function(i){
+ // Set all the styles
+ for ( name in options )
+ jQuery.attr(
+ type ?
+ this.style :
+ this,
+ name, jQuery.prop( this, options[ name ], type, i, name )
+ );
+ });
+ },
+
+ css: function( key, value ) {
+ // ignore negative width and height values
+ if ( (key == 'width' || key == 'height') && parseFloat(value) < 0 )
+ value = undefined;
+ return this.attr( key, value, "curCSS" );
+ },
+
+ text: function( text ) {
+ if ( typeof text !== "object" && text != null )
+ return this.empty().append( (this[0] && this[0].ownerDocument || document).createTextNode( text ) );
+
+ var ret = "";
+
+ jQuery.each( text || this, function(){
+ jQuery.each( this.childNodes, function(){
+ if ( this.nodeType != 8 )
+ ret += this.nodeType != 1 ?
+ this.nodeValue :
+ jQuery.fn.text( [ this ] );
+ });
+ });
+
+ return ret;
+ },
+
+ wrapAll: function( html ) {
+ if ( this[0] ) {
+ // The elements to wrap the target around
+ var wrap = jQuery( html, this[0].ownerDocument ).clone();
+
+ if ( this[0].parentNode )
+ wrap.insertBefore( this[0] );
+
+ wrap.map(function(){
+ var elem = this;
+
+ while ( elem.firstChild )
+ elem = elem.firstChild;
+
+ return elem;
+ }).append(this);
+ }
+
+ return this;
+ },
+
+ wrapInner: function( html ) {
+ return this.each(function(){
+ jQuery( this ).contents().wrapAll( html );
+ });
+ },
+
+ wrap: function( html ) {
+ return this.each(function(){
+ jQuery( this ).wrapAll( html );
+ });
+ },
+
+ append: function() {
+ return this.domManip(arguments, true, function(elem){
+ if (this.nodeType == 1)
+ this.appendChild( elem );
+ });
+ },
+
+ prepend: function() {
+ return this.domManip(arguments, true, function(elem){
+ if (this.nodeType == 1)
+ this.insertBefore( elem, this.firstChild );
+ });
+ },
+
+ before: function() {
+ return this.domManip(arguments, false, function(elem){
+ this.parentNode.insertBefore( elem, this );
+ });
+ },
+
+ after: function() {
+ return this.domManip(arguments, false, function(elem){
+ this.parentNode.insertBefore( elem, this.nextSibling );
+ });
+ },
+
+ end: function() {
+ return this.prevObject || jQuery( [] );
+ },
+
+ // For internal use only.
+ // Behaves like an Array's method, not like a jQuery method.
+ push: [].push,
+ sort: [].sort,
+ splice: [].splice,
+
+ find: function( selector ) {
+ if ( this.length === 1 ) {
+ var ret = this.pushStack( [], "find", selector );
+ ret.length = 0;
+ jQuery.find( selector, this[0], ret );
+ return ret;
+ } else {
+ return this.pushStack( jQuery.unique(jQuery.map(this, function(elem){
+ return jQuery.find( selector, elem );
+ })), "find", selector );
+ }
+ },
+
+ clone: function( events ) {
+ // Do the clone
+ var ret = this.map(function(){
+ if ( !jQuery.support.noCloneEvent && !jQuery.isXMLDoc(this) ) {
+ // IE copies events bound via attachEvent when
+ // using cloneNode. Calling detachEvent on the
+ // clone will also remove the events from the orignal
+ // In order to get around this, we use innerHTML.
+ // Unfortunately, this means some modifications to
+ // attributes in IE that are actually only stored
+ // as properties will not be copied (such as the
+ // the name attribute on an input).
+ var html = this.outerHTML;
+ if ( !html ) {
+ var div = this.ownerDocument.createElement("div");
+ div.appendChild( this.cloneNode(true) );
+ html = div.innerHTML;
+ }
+
+ return jQuery.clean([html.replace(/ jQuery\d+="(?:\d+|null)"/g, "").replace(/^\s*/, "")])[0];
+ } else
+ return this.cloneNode(true);
+ });
+
+ // Copy the events from the original to the clone
+ if ( events === true ) {
+ var orig = this.find("*").andSelf(), i = 0;
+
+ ret.find("*").andSelf().each(function(){
+ if ( this.nodeName !== orig[i].nodeName )
+ return;
+
+ var events = jQuery.data( orig[i], "events" );
+
+ for ( var type in events ) {
+ for ( var handler in events[ type ] ) {
+ jQuery.event.add( this, type, events[ type ][ handler ], events[ type ][ handler ].data );
+ }
+ }
+
+ i++;
+ });
+ }
+
+ // Return the cloned set
+ return ret;
+ },
+
+ filter: function( selector ) {
+ return this.pushStack(
+ jQuery.isFunction( selector ) &&
+ jQuery.grep(this, function(elem, i){
+ return selector.call( elem, i );
+ }) ||
+
+ jQuery.multiFilter( selector, jQuery.grep(this, function(elem){
+ return elem.nodeType === 1;
+ }) ), "filter", selector );
+ },
+
+ closest: function( selector ) {
+ var pos = jQuery.expr.match.POS.test( selector ) ? jQuery(selector) : null,
+ closer = 0;
+
+ return this.map(function(){
+ var cur = this;
+ while ( cur && cur.ownerDocument ) {
+ if ( pos ? pos.index(cur) > -1 : jQuery(cur).is(selector) ) {
+ jQuery.data(cur, "closest", closer);
+ return cur;
+ }
+ cur = cur.parentNode;
+ closer++;
+ }
+ });
+ },
+
+ not: function( selector ) {
+ if ( typeof selector === "string" )
+ // test special case where just one selector is passed in
+ if ( isSimple.test( selector ) )
+ return this.pushStack( jQuery.multiFilter( selector, this, true ), "not", selector );
+ else
+ selector = jQuery.multiFilter( selector, this );
+
+ var isArrayLike = selector.length && selector[selector.length - 1] !== undefined && !selector.nodeType;
+ return this.filter(function() {
+ return isArrayLike ? jQuery.inArray( this, selector ) < 0 : this != selector;
+ });
+ },
+
+ add: function( selector ) {
+ return this.pushStack( jQuery.unique( jQuery.merge(
+ this.get(),
+ typeof selector === "string" ?
+ jQuery( selector ) :
+ jQuery.makeArray( selector )
+ )));
+ },
+
+ is: function( selector ) {
+ return !!selector && jQuery.multiFilter( selector, this ).length > 0;
+ },
+
+ hasClass: function( selector ) {
+ return !!selector && this.is( "." + selector );
+ },
+
+ val: function( value ) {
+ if ( value === undefined ) {
+ var elem = this[0];
+
+ if ( elem ) {
+ if( jQuery.nodeName( elem, 'option' ) )
+ return (elem.attributes.value || {}).specified ? elem.value : elem.text;
+
+ // We need to handle select boxes special
+ if ( jQuery.nodeName( elem, "select" ) ) {
+ var index = elem.selectedIndex,
+ values = [],
+ options = elem.options,
+ one = elem.type == "select-one";
+
+ // Nothing was selected
+ if ( index < 0 )
+ return null;
+
+ // Loop through all the selected options
+ for ( var i = one ? index : 0, max = one ? index + 1 : options.length; i < max; i++ ) {
+ var option = options[ i ];
+
+ if ( option.selected ) {
+ // Get the specifc value for the option
+ value = jQuery(option).val();
+
+ // We don't need an array for one selects
+ if ( one )
+ return value;
+
+ // Multi-Selects return an array
+ values.push( value );
+ }
+ }
+
+ return values;
+ }
+
+ // Everything else, we just grab the value
+ return (elem.value || "").replace(/\r/g, "");
+
+ }
+
+ return undefined;
+ }
+
+ if ( typeof value === "number" )
+ value += '';
+
+ return this.each(function(){
+ if ( this.nodeType != 1 )
+ return;
+
+ if ( jQuery.isArray(value) && /radio|checkbox/.test( this.type ) )
+ this.checked = (jQuery.inArray(this.value, value) >= 0 ||
+ jQuery.inArray(this.name, value) >= 0);
+
+ else if ( jQuery.nodeName( this, "select" ) ) {
+ var values = jQuery.makeArray(value);
+
+ jQuery( "option", this ).each(function(){
+ this.selected = (jQuery.inArray( this.value, values ) >= 0 ||
+ jQuery.inArray( this.text, values ) >= 0);
+ });
+
+ if ( !values.length )
+ this.selectedIndex = -1;
+
+ } else
+ this.value = value;
+ });
+ },
+
+ html: function( value ) {
+ return value === undefined ?
+ (this[0] ?
+ this[0].innerHTML.replace(/ jQuery\d+="(?:\d+|null)"/g, "") :
+ null) :
+ this.empty().append( value );
+ },
+
+ replaceWith: function( value ) {
+ return this.after( value ).remove();
+ },
+
+ eq: function( i ) {
+ return this.slice( i, +i + 1 );
+ },
+
+ slice: function() {
+ return this.pushStack( Array.prototype.slice.apply( this, arguments ),
+ "slice", Array.prototype.slice.call(arguments).join(",") );
+ },
+
+ map: function( callback ) {
+ return this.pushStack( jQuery.map(this, function(elem, i){
+ return callback.call( elem, i, elem );
+ }));
+ },
+
+ andSelf: function() {
+ return this.add( this.prevObject );
+ },
+
+ domManip: function( args, table, callback ) {
+ if ( this[0] ) {
+ var fragment = (this[0].ownerDocument || this[0]).createDocumentFragment(),
+ scripts = jQuery.clean( args, (this[0].ownerDocument || this[0]), fragment ),
+ first = fragment.firstChild;
+
+ if ( first )
+ for ( var i = 0, l = this.length; i < l; i++ )
+ callback.call( root(this[i], first), this.length > 1 || i > 0 ?
+ fragment.cloneNode(true) : fragment );
+
+ if ( scripts )
+ jQuery.each( scripts, evalScript );
+ }
+
+ return this;
+
+ function root( elem, cur ) {
+ return table && jQuery.nodeName(elem, "table") && jQuery.nodeName(cur, "tr") ?
+ (elem.getElementsByTagName("tbody")[0] ||
+ elem.appendChild(elem.ownerDocument.createElement("tbody"))) :
+ elem;
+ }
+ }
+};
+
+// Give the init function the jQuery prototype for later instantiation
+jQuery.fn.init.prototype = jQuery.fn;
+
+function evalScript( i, elem ) {
+ if ( elem.src )
+ jQuery.ajax({
+ url: elem.src,
+ async: false,
+ dataType: "script"
+ });
+
+ else
+ jQuery.globalEval( elem.text || elem.textContent || elem.innerHTML || "" );
+
+ if ( elem.parentNode )
+ elem.parentNode.removeChild( elem );
+}
+
+function now(){
+ return +new Date;
+}
+
+jQuery.extend = jQuery.fn.extend = function() {
+ // copy reference to target object
+ var target = arguments[0] || {}, i = 1, length = arguments.length, deep = false, options;
+
+ // Handle a deep copy situation
+ if ( typeof target === "boolean" ) {
+ deep = target;
+ target = arguments[1] || {};
+ // skip the boolean and the target
+ i = 2;
+ }
+
+ // Handle case when target is a string or something (possible in deep copy)
+ if ( typeof target !== "object" && !jQuery.isFunction(target) )
+ target = {};
+
+ // extend jQuery itself if only one argument is passed
+ if ( length == i ) {
+ target = this;
+ --i;
+ }
+
+ for ( ; i < length; i++ )
+ // Only deal with non-null/undefined values
+ if ( (options = arguments[ i ]) != null )
+ // Extend the base object
+ for ( var name in options ) {
+ var src = target[ name ], copy = options[ name ];
+
+ // Prevent never-ending loop
+ if ( target === copy )
+ continue;
+
+ // Recurse if we're merging object values
+ if ( deep && copy && typeof copy === "object" && !copy.nodeType )
+ target[ name ] = jQuery.extend( deep,
+ // Never move original objects, clone them
+ src || ( copy.length != null ? [ ] : { } )
+ , copy );
+
+ // Don't bring in undefined values
+ else if ( copy !== undefined )
+ target[ name ] = copy;
+
+ }
+
+ // Return the modified object
+ return target;
+};
+
+// exclude the following css properties to add px
+var exclude = /z-?index|font-?weight|opacity|zoom|line-?height/i,
+ // cache defaultView
+ defaultView = document.defaultView || {},
+ toString = Object.prototype.toString;
+
+jQuery.extend({
+ noConflict: function( deep ) {
+ window.$ = _$;
+
+ if ( deep )
+ window.jQuery = _jQuery;
+
+ return jQuery;
+ },
+
+ // See test/unit/core.js for details concerning isFunction.
+ // Since version 1.3, DOM methods and functions like alert
+ // aren't supported. They return false on IE (#2968).
+ isFunction: function( obj ) {
+ return toString.call(obj) === "[object Function]";
+ },
+
+ isArray: function( obj ) {
+ return toString.call(obj) === "[object Array]";
+ },
+
+ // check if an element is in a (or is an) XML document
+ isXMLDoc: function( elem ) {
+ return elem.nodeType === 9 && elem.documentElement.nodeName !== "HTML" ||
+ !!elem.ownerDocument && jQuery.isXMLDoc( elem.ownerDocument );
+ },
+
+ // Evalulates a script in a global context
+ globalEval: function( data ) {
+ if ( data && /\S/.test(data) ) {
+ // Inspired by code by Andrea Giammarchi
+ // http://webreflection.blogspot.com/2007/08/global-scope-evaluation-and-dom.html
+ var head = document.getElementsByTagName("head")[0] || document.documentElement,
+ script = document.createElement("script");
+
+ script.type = "text/javascript";
+ if ( jQuery.support.scriptEval )
+ script.appendChild( document.createTextNode( data ) );
+ else
+ script.text = data;
+
+ // Use insertBefore instead of appendChild to circumvent an IE6 bug.
+ // This arises when a base node is used (#2709).
+ head.insertBefore( script, head.firstChild );
+ head.removeChild( script );
+ }
+ },
+
+ nodeName: function( elem, name ) {
+ return elem.nodeName && elem.nodeName.toUpperCase() == name.toUpperCase();
+ },
+
+ // args is for internal usage only
+ each: function( object, callback, args ) {
+ var name, i = 0, length = object.length;
+
+ if ( args ) {
+ if ( length === undefined ) {
+ for ( name in object )
+ if ( callback.apply( object[ name ], args ) === false )
+ break;
+ } else
+ for ( ; i < length; )
+ if ( callback.apply( object[ i++ ], args ) === false )
+ break;
+
+ // A special, fast, case for the most common use of each
+ } else {
+ if ( length === undefined ) {
+ for ( name in object )
+ if ( callback.call( object[ name ], name, object[ name ] ) === false )
+ break;
+ } else
+ for ( var value = object[0];
+ i < length && callback.call( value, i, value ) !== false; value = object[++i] ){}
+ }
+
+ return object;
+ },
+
+ prop: function( elem, value, type, i, name ) {
+ // Handle executable functions
+ if ( jQuery.isFunction( value ) )
+ value = value.call( elem, i );
+
+ // Handle passing in a number to a CSS property
+ return typeof value === "number" && type == "curCSS" && !exclude.test( name ) ?
+ value + "px" :
+ value;
+ },
+
+ className: {
+ // internal only, use addClass("class")
+ add: function( elem, classNames ) {
+ jQuery.each((classNames || "").split(/\s+/), function(i, className){
+ if ( elem.nodeType == 1 && !jQuery.className.has( elem.className, className ) )
+ elem.className += (elem.className ? " " : "") + className;
+ });
+ },
+
+ // internal only, use removeClass("class")
+ remove: function( elem, classNames ) {
+ if (elem.nodeType == 1)
+ elem.className = classNames !== undefined ?
+ jQuery.grep(elem.className.split(/\s+/), function(className){
+ return !jQuery.className.has( classNames, className );
+ }).join(" ") :
+ "";
+ },
+
+ // internal only, use hasClass("class")
+ has: function( elem, className ) {
+ return elem && jQuery.inArray( className, (elem.className || elem).toString().split(/\s+/) ) > -1;
+ }
+ },
+
+ // A method for quickly swapping in/out CSS properties to get correct calculations
+ swap: function( elem, options, callback ) {
+ var old = {};
+ // Remember the old values, and insert the new ones
+ for ( var name in options ) {
+ old[ name ] = elem.style[ name ];
+ elem.style[ name ] = options[ name ];
+ }
+
+ callback.call( elem );
+
+ // Revert the old values
+ for ( var name in options )
+ elem.style[ name ] = old[ name ];
+ },
+
+ css: function( elem, name, force, extra ) {
+ if ( name == "width" || name == "height" ) {
+ var val, props = { position: "absolute", visibility: "hidden", display:"block" }, which = name == "width" ? [ "Left", "Right" ] : [ "Top", "Bottom" ];
+
+ function getWH() {
+ val = name == "width" ? elem.offsetWidth : elem.offsetHeight;
+
+ if ( extra === "border" )
+ return;
+
+ jQuery.each( which, function() {
+ if ( !extra )
+ val -= parseFloat(jQuery.curCSS( elem, "padding" + this, true)) || 0;
+ if ( extra === "margin" )
+ val += parseFloat(jQuery.curCSS( elem, "margin" + this, true)) || 0;
+ else
+ val -= parseFloat(jQuery.curCSS( elem, "border" + this + "Width", true)) || 0;
+ });
+ }
+
+ if ( elem.offsetWidth !== 0 )
+ getWH();
+ else
+ jQuery.swap( elem, props, getWH );
+
+ return Math.max(0, Math.round(val));
+ }
+
+ return jQuery.curCSS( elem, name, force );
+ },
+
+ curCSS: function( elem, name, force ) {
+ var ret, style = elem.style;
+
+ // We need to handle opacity special in IE
+ if ( name == "opacity" && !jQuery.support.opacity ) {
+ ret = jQuery.attr( style, "opacity" );
+
+ return ret == "" ?
+ "1" :
+ ret;
+ }
+
+ // Make sure we're using the right name for getting the float value
+ if ( name.match( /float/i ) )
+ name = styleFloat;
+
+ if ( !force && style && style[ name ] )
+ ret = style[ name ];
+
+ else if ( defaultView.getComputedStyle ) {
+
+ // Only "float" is needed here
+ if ( name.match( /float/i ) )
+ name = "float";
+
+ name = name.replace( /([A-Z])/g, "-$1" ).toLowerCase();
+
+ var computedStyle = defaultView.getComputedStyle( elem, null );
+
+ if ( computedStyle )
+ ret = computedStyle.getPropertyValue( name );
+
+ // We should always get a number back from opacity
+ if ( name == "opacity" && ret == "" )
+ ret = "1";
+
+ } else if ( elem.currentStyle ) {
+ var camelCase = name.replace(/\-(\w)/g, function(all, letter){
+ return letter.toUpperCase();
+ });
+
+ ret = elem.currentStyle[ name ] || elem.currentStyle[ camelCase ];
+
+ // From the awesome hack by Dean Edwards
+ // http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291
+
+ // If we're not dealing with a regular pixel number
+ // but a number that has a weird ending, we need to convert it to pixels
+ if ( !/^\d+(px)?$/i.test( ret ) && /^\d/.test( ret ) ) {
+ // Remember the original values
+ var left = style.left, rsLeft = elem.runtimeStyle.left;
+
+ // Put in the new values to get a computed value out
+ elem.runtimeStyle.left = elem.currentStyle.left;
+ style.left = ret || 0;
+ ret = style.pixelLeft + "px";
+
+ // Revert the changed values
+ style.left = left;
+ elem.runtimeStyle.left = rsLeft;
+ }
+ }
+
+ return ret;
+ },
+
+ clean: function( elems, context, fragment ) {
+ context = context || document;
+
+ // !context.createElement fails in IE with an error but returns typeof 'object'
+ if ( typeof context.createElement === "undefined" )
+ context = context.ownerDocument || context[0] && context[0].ownerDocument || document;
+
+ // If a single string is passed in and it's a single tag
+ // just do a createElement and skip the rest
+ if ( !fragment && elems.length === 1 && typeof elems[0] === "string" ) {
+ var match = /^<(\w+)\s*\/?>$/.exec(elems[0]);
+ if ( match )
+ return [ context.createElement( match[1] ) ];
+ }
+
+ var ret = [], scripts = [], div = context.createElement("div");
+
+ jQuery.each(elems, function(i, elem){
+ if ( typeof elem === "number" )
+ elem += '';
+
+ if ( !elem )
+ return;
+
+ // Convert html string into DOM nodes
+ if ( typeof elem === "string" ) {
+ // Fix "XHTML"-style tags in all browsers
+ elem = elem.replace(/(<(\w+)[^>]*?)\/>/g, function(all, front, tag){
+ return tag.match(/^(abbr|br|col|img|input|link|meta|param|hr|area|embed)$/i) ?
+ all :
+ front + "></" + tag + ">";
+ });
+
+ // Trim whitespace, otherwise indexOf won't work as expected
+ var tags = elem.replace(/^\s+/, "").substring(0, 10).toLowerCase();
+
+ var wrap =
+ // option or optgroup
+ !tags.indexOf("<opt") &&
+ [ 1, "<select multiple='multiple'>", "</select>" ] ||
+
+ !tags.indexOf("<leg") &&
+ [ 1, "<fieldset>", "</fieldset>" ] ||
+
+ tags.match(/^<(thead|tbody|tfoot|colg|cap)/) &&
+ [ 1, "<table>", "</table>" ] ||
+
+ !tags.indexOf("<tr") &&
+ [ 2, "<table><tbody>", "</tbody></table>" ] ||
+
+ // <thead> matched above
+ (!tags.indexOf("<td") || !tags.indexOf("<th")) &&
+ [ 3, "<table><tbody><tr>", "</tr></tbody></table>" ] ||
+
+ !tags.indexOf("<col") &&
+ [ 2, "<table><tbody></tbody><colgroup>", "</colgroup></table>" ] ||
+
+ // IE can't serialize <link> and <script> tags normally
+ !jQuery.support.htmlSerialize &&
+ [ 1, "div<div>", "</div>" ] ||
+
+ [ 0, "", "" ];
+
+ // Go to html and back, then peel off extra wrappers
+ div.innerHTML = wrap[1] + elem + wrap[2];
+
+ // Move to the right depth
+ while ( wrap[0]-- )
+ div = div.lastChild;
+
+ // Remove IE's autoinserted <tbody> from table fragments
+ if ( !jQuery.support.tbody ) {
+
+ // String was a <table>, *may* have spurious <tbody>
+ var hasBody = /<tbody/i.test(elem),
+ tbody = !tags.indexOf("<table") && !hasBody ?
+ div.firstChild && div.firstChild.childNodes :
+
+ // String was a bare <thead> or <tfoot>
+ wrap[1] == "<table>" && !hasBody ?
+ div.childNodes :
+ [];
+
+ for ( var j = tbody.length - 1; j >= 0 ; --j )
+ if ( jQuery.nodeName( tbody[ j ], "tbody" ) && !tbody[ j ].childNodes.length )
+ tbody[ j ].parentNode.removeChild( tbody[ j ] );
+
+ }
+
+ // IE completely kills leading whitespace when innerHTML is used
+ if ( !jQuery.support.leadingWhitespace && /^\s/.test( elem ) )
+ div.insertBefore( context.createTextNode( elem.match(/^\s*/)[0] ), div.firstChild );
+
+ elem = jQuery.makeArray( div.childNodes );
+ }
+
+ if ( elem.nodeType )
+ ret.push( elem );
+ else
+ ret = jQuery.merge( ret, elem );
+
+ });
+
+ if ( fragment ) {
+ for ( var i = 0; ret[i]; i++ ) {
+ if ( jQuery.nodeName( ret[i], "script" ) && (!ret[i].type || ret[i].type.toLowerCase() === "text/javascript") ) {
+ scripts.push( ret[i].parentNode ? ret[i].parentNode.removeChild( ret[i] ) : ret[i] );
+ } else {
+ if ( ret[i].nodeType === 1 )
+ ret.splice.apply( ret, [i + 1, 0].concat(jQuery.makeArray(ret[i].getElementsByTagName("script"))) );
+ fragment.appendChild( ret[i] );
+ }
+ }
+
+ return scripts;
+ }
+
+ return ret;
+ },
+
+ attr: function( elem, name, value ) {
+ // don't set attributes on text and comment nodes
+ if (!elem || elem.nodeType == 3 || elem.nodeType == 8)
+ return undefined;
+
+ var notxml = !jQuery.isXMLDoc( elem ),
+ // Whether we are setting (or getting)
+ set = value !== undefined;
+
+ // Try to normalize/fix the name
+ name = notxml && jQuery.props[ name ] || name;
+
+ // Only do all the following if this is a node (faster for style)
+ // IE elem.getAttribute passes even for style
+ if ( elem.tagName ) {
+
+ // These attributes require special treatment
+ var special = /href|src|style/.test( name );
+
+ // Safari mis-reports the default selected property of a hidden option
+ // Accessing the parent's selectedIndex property fixes it
+ if ( name == "selected" && elem.parentNode )
+ elem.parentNode.selectedIndex;
+
+ // If applicable, access the attribute via the DOM 0 way
+ if ( name in elem && notxml && !special ) {
+ if ( set ){
+ // We can't allow the type property to be changed (since it causes problems in IE)
+ if ( name == "type" && jQuery.nodeName( elem, "input" ) && elem.parentNode )
+ throw "type property can't be changed";
+
+ elem[ name ] = value;
+ }
+
+ // browsers index elements by id/name on forms, give priority to attributes.
+ if( jQuery.nodeName( elem, "form" ) && elem.getAttributeNode(name) )
+ return elem.getAttributeNode( name ).nodeValue;
+
+ // elem.tabIndex doesn't always return the correct value when it hasn't been explicitly set
+ // http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/
+ if ( name == "tabIndex" ) {
+ var attributeNode = elem.getAttributeNode( "tabIndex" );
+ return attributeNode && attributeNode.specified
+ ? attributeNode.value
+ : elem.nodeName.match(/(button|input|object|select|textarea)/i)
+ ? 0
+ : elem.nodeName.match(/^(a|area)$/i) && elem.href
+ ? 0
+ : undefined;
+ }
+
+ return elem[ name ];
+ }
+
+ if ( !jQuery.support.style && notxml && name == "style" )
+ return jQuery.attr( elem.style, "cssText", value );
+
+ if ( set )
+ // convert the value to a string (all browsers do this but IE) see #1070
+ elem.setAttribute( name, "" + value );
+
+ var attr = !jQuery.support.hrefNormalized && notxml && special
+ // Some attributes require a special call on IE
+ ? elem.getAttribute( name, 2 )
+ : elem.getAttribute( name );
+
+ // Non-existent attributes return null, we normalize to undefined
+ return attr === null ? undefined : attr;
+ }
+
+ // elem is actually elem.style ... set the style
+
+ // IE uses filters for opacity
+ if ( !jQuery.support.opacity && name == "opacity" ) {
+ if ( set ) {
+ // IE has trouble with opacity if it does not have layout
+ // Force it by setting the zoom level
+ elem.zoom = 1;
+
+ // Set the alpha filter to set the opacity
+ elem.filter = (elem.filter || "").replace( /alpha\([^)]*\)/, "" ) +
+ (parseInt( value ) + '' == "NaN" ? "" : "alpha(opacity=" + value * 100 + ")");
+ }
+
+ return elem.filter && elem.filter.indexOf("opacity=") >= 0 ?
+ (parseFloat( elem.filter.match(/opacity=([^)]*)/)[1] ) / 100) + '':
+ "";
+ }
+
+ name = name.replace(/-([a-z])/ig, function(all, letter){
+ return letter.toUpperCase();
+ });
+
+ if ( set )
+ elem[ name ] = value;
+
+ return elem[ name ];
+ },
+
+ trim: function( text ) {
+ return (text || "").replace( /^\s+|\s+$/g, "" );
+ },
+
+ makeArray: function( array ) {
+ var ret = [];
+
+ if( array != null ){
+ var i = array.length;
+ // The window, strings (and functions) also have 'length'
+ if( i == null || typeof array === "string" || jQuery.isFunction(array) || array.setInterval )
+ ret[0] = array;
+ else
+ while( i )
+ ret[--i] = array[i];
+ }
+
+ return ret;
+ },
+
+ inArray: function( elem, array ) {
+ for ( var i = 0, length = array.length; i < length; i++ )
+ // Use === because on IE, window == document
+ if ( array[ i ] === elem )
+ return i;
+
+ return -1;
+ },
+
+ merge: function( first, second ) {
+ // We have to loop this way because IE & Opera overwrite the length
+ // expando of getElementsByTagName
+ var i = 0, elem, pos = first.length;
+ // Also, we need to make sure that the correct elements are being returned
+ // (IE returns comment nodes in a '*' query)
+ if ( !jQuery.support.getAll ) {
+ while ( (elem = second[ i++ ]) != null )
+ if ( elem.nodeType != 8 )
+ first[ pos++ ] = elem;
+
+ } else
+ while ( (elem = second[ i++ ]) != null )
+ first[ pos++ ] = elem;
+
+ return first;
+ },
+
+ unique: function( array ) {
+ var ret = [], done = {};
+
+ try {
+
+ for ( var i = 0, length = array.length; i < length; i++ ) {
+ var id = jQuery.data( array[ i ] );
+
+ if ( !done[ id ] ) {
+ done[ id ] = true;
+ ret.push( array[ i ] );
+ }
+ }
+
+ } catch( e ) {
+ ret = array;
+ }
+
+ return ret;
+ },
+
+ grep: function( elems, callback, inv ) {
+ var ret = [];
+
+ // Go through the array, only saving the items
+ // that pass the validator function
+ for ( var i = 0, length = elems.length; i < length; i++ )
+ if ( !inv != !callback( elems[ i ], i ) )
+ ret.push( elems[ i ] );
+
+ return ret;
+ },
+
+ map: function( elems, callback ) {
+ var ret = [];
+
+ // Go through the array, translating each of the items to their
+ // new value (or values).
+ for ( var i = 0, length = elems.length; i < length; i++ ) {
+ var value = callback( elems[ i ], i );
+
+ if ( value != null )
+ ret[ ret.length ] = value;
+ }
+
+ return ret.concat.apply( [], ret );
+ }
+});
+
+// Use of jQuery.browser is deprecated.
+// It's included for backwards compatibility and plugins,
+// although they should work to migrate away.
+
+var userAgent = navigator.userAgent.toLowerCase();
+
+// Figure out what browser is being used
+jQuery.browser = {
+ version: (userAgent.match( /.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/ ) || [0,'0'])[1],
+ safari: /webkit/.test( userAgent ),
+ opera: /opera/.test( userAgent ),
+ msie: /msie/.test( userAgent ) && !/opera/.test( userAgent ),
+ mozilla: /mozilla/.test( userAgent ) && !/(compatible|webkit)/.test( userAgent )
+};
+
+jQuery.each({
+ parent: function(elem){return elem.parentNode;},
+ parents: function(elem){return jQuery.dir(elem,"parentNode");},
+ next: function(elem){return jQuery.nth(elem,2,"nextSibling");},
+ prev: function(elem){return jQuery.nth(elem,2,"previousSibling");},
+ nextAll: function(elem){return jQuery.dir(elem,"nextSibling");},
+ prevAll: function(elem){return jQuery.dir(elem,"previousSibling");},
+ siblings: function(elem){return jQuery.sibling(elem.parentNode.firstChild,elem);},
+ children: function(elem){return jQuery.sibling(elem.firstChild);},
+ contents: function(elem){return jQuery.nodeName(elem,"iframe")?elem.contentDocument||elem.contentWindow.document:jQuery.makeArray(elem.childNodes);}
+}, function(name, fn){
+ jQuery.fn[ name ] = function( selector ) {
+ var ret = jQuery.map( this, fn );
+
+ if ( selector && typeof selector == "string" )
+ ret = jQuery.multiFilter( selector, ret );
+
+ return this.pushStack( jQuery.unique( ret ), name, selector );
+ };
+});
+
+jQuery.each({
+ appendTo: "append",
+ prependTo: "prepend",
+ insertBefore: "before",
+ insertAfter: "after",
+ replaceAll: "replaceWith"
+}, function(name, original){
+ jQuery.fn[ name ] = function( selector ) {
+ var ret = [], insert = jQuery( selector );
+
+ for ( var i = 0, l = insert.length; i < l; i++ ) {
+ var elems = (i > 0 ? this.clone(true) : this).get();
+ jQuery.fn[ original ].apply( jQuery(insert[i]), elems );
+ ret = ret.concat( elems );
+ }
+
+ return this.pushStack( ret, name, selector );
+ };
+});
+
+jQuery.each({
+ removeAttr: function( name ) {
+ jQuery.attr( this, name, "" );
+ if (this.nodeType == 1)
+ this.removeAttribute( name );
+ },
+
+ addClass: function( classNames ) {
+ jQuery.className.add( this, classNames );
+ },
+
+ removeClass: function( classNames ) {
+ jQuery.className.remove( this, classNames );
+ },
+
+ toggleClass: function( classNames, state ) {
+ if( typeof state !== "boolean" )
+ state = !jQuery.className.has( this, classNames );
+ jQuery.className[ state ? "add" : "remove" ]( this, classNames );
+ },
+
+ remove: function( selector ) {
+ if ( !selector || jQuery.filter( selector, [ this ] ).length ) {
+ // Prevent memory leaks
+ jQuery( "*", this ).add([this]).each(function(){
+ jQuery.event.remove(this);
+ jQuery.removeData(this);
+ });
+ if (this.parentNode)
+ this.parentNode.removeChild( this );
+ }
+ },
+
+ empty: function() {
+ // Remove element nodes and prevent memory leaks
+ jQuery(this).children().remove();
+
+ // Remove any remaining nodes
+ while ( this.firstChild )
+ this.removeChild( this.firstChild );
+ }
+}, function(name, fn){
+ jQuery.fn[ name ] = function(){
+ return this.each( fn, arguments );
+ };
+});
+
+// Helper function used by the dimensions and offset modules
+function num(elem, prop) {
+ return elem[0] && parseInt( jQuery.curCSS(elem[0], prop, true), 10 ) || 0;
+}
+var expando = "jQuery" + now(), uuid = 0, windowData = {};
+
+jQuery.extend({
+ cache: {},
+
+ data: function( elem, name, data ) {
+ elem = elem == window ?
+ windowData :
+ elem;
+
+ var id = elem[ expando ];
+
+ // Compute a unique ID for the element
+ if ( !id )
+ id = elem[ expando ] = ++uuid;
+
+ // Only generate the data cache if we're
+ // trying to access or manipulate it
+ if ( name && !jQuery.cache[ id ] )
+ jQuery.cache[ id ] = {};
+
+ // Prevent overriding the named cache with undefined values
+ if ( data !== undefined )
+ jQuery.cache[ id ][ name ] = data;
+
+ // Return the named cache data, or the ID for the element
+ return name ?
+ jQuery.cache[ id ][ name ] :
+ id;
+ },
+
+ removeData: function( elem, name ) {
+ elem = elem == window ?
+ windowData :
+ elem;
+
+ var id = elem[ expando ];
+
+ // If we want to remove a specific section of the element's data
+ if ( name ) {
+ if ( jQuery.cache[ id ] ) {
+ // Remove the section of cache data
+ delete jQuery.cache[ id ][ name ];
+
+ // If we've removed all the data, remove the element's cache
+ name = "";
+
+ for ( name in jQuery.cache[ id ] )
+ break;
+
+ if ( !name )
+ jQuery.removeData( elem );
+ }
+
+ // Otherwise, we want to remove all of the element's data
+ } else {
+ // Clean up the element expando
+ try {
+ delete elem[ expando ];
+ } catch(e){
+ // IE has trouble directly removing the expando
+ // but it's ok with using removeAttribute
+ if ( elem.removeAttribute )
+ elem.removeAttribute( expando );
+ }
+
+ // Completely remove the data cache
+ delete jQuery.cache[ id ];
+ }
+ },
+ queue: function( elem, type, data ) {
+ if ( elem ){
+
+ type = (type || "fx") + "queue";
+
+ var q = jQuery.data( elem, type );
+
+ if ( !q || jQuery.isArray(data) )
+ q = jQuery.data( elem, type, jQuery.makeArray(data) );
+ else if( data )
+ q.push( data );
+
+ }
+ return q;
+ },
+
+ dequeue: function( elem, type ){
+ var queue = jQuery.queue( elem, type ),
+ fn = queue.shift();
+
+ if( !type || type === "fx" )
+ fn = queue[0];
+
+ if( fn !== undefined )
+ fn.call(elem);
+ }
+});
+
+jQuery.fn.extend({
+ data: function( key, value ){
+ var parts = key.split(".");
+ parts[1] = parts[1] ? "." + parts[1] : "";
+
+ if ( value === undefined ) {
+ var data = this.triggerHandler("getData" + parts[1] + "!", [parts[0]]);
+
+ if ( data === undefined && this.length )
+ data = jQuery.data( this[0], key );
+
+ return data === undefined && parts[1] ?
+ this.data( parts[0] ) :
+ data;
+ } else
+ return this.trigger("setData" + parts[1] + "!", [parts[0], value]).each(function(){
+ jQuery.data( this, key, value );
+ });
+ },
+
+ removeData: function( key ){
+ return this.each(function(){
+ jQuery.removeData( this, key );
+ });
+ },
+ queue: function(type, data){
+ if ( typeof type !== "string" ) {
+ data = type;
+ type = "fx";
+ }
+
+ if ( data === undefined )
+ return jQuery.queue( this[0], type );
+
+ return this.each(function(){
+ var queue = jQuery.queue( this, type, data );
+
+ if( type == "fx" && queue.length == 1 )
+ queue[0].call(this);
+ });
+ },
+ dequeue: function(type){
+ return this.each(function(){
+ jQuery.dequeue( this, type );
+ });
+ }
+});/*!
+ * Sizzle CSS Selector Engine - v0.9.3
+ * Copyright 2009, The Dojo Foundation
+ * Released under the MIT, BSD, and GPL Licenses.
+ * More information: http://sizzlejs.com/
+ */
+(function(){
+
+var chunker = /((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?/g,
+ done = 0,
+ toString = Object.prototype.toString;
+
+var Sizzle = function(selector, context, results, seed) {
+ results = results || [];
+ context = context || document;
+
+ if ( context.nodeType !== 1 && context.nodeType !== 9 )
+ return [];
+
+ if ( !selector || typeof selector !== "string" ) {
+ return results;
+ }
+
+ var parts = [], m, set, checkSet, check, mode, extra, prune = true;
+
+ // Reset the position of the chunker regexp (start from head)
+ chunker.lastIndex = 0;
+
+ while ( (m = chunker.exec(selector)) !== null ) {
+ parts.push( m[1] );
+
+ if ( m[2] ) {
+ extra = RegExp.rightContext;
+ break;
+ }
+ }
+
+ if ( parts.length > 1 && origPOS.exec( selector ) ) {
+ if ( parts.length === 2 && Expr.relative[ parts[0] ] ) {
+ set = posProcess( parts[0] + parts[1], context );
+ } else {
+ set = Expr.relative[ parts[0] ] ?
+ [ context ] :
+ Sizzle( parts.shift(), context );
+
+ while ( parts.length ) {
+ selector = parts.shift();
+
+ if ( Expr.relative[ selector ] )
+ selector += parts.shift();
+
+ set = posProcess( selector, set );
+ }
+ }
+ } else {
+ var ret = seed ?
+ { expr: parts.pop(), set: makeArray(seed) } :
+ Sizzle.find( parts.pop(), parts.length === 1 && context.parentNode ? context.parentNode : context, isXML(context) );
+ set = Sizzle.filter( ret.expr, ret.set );
+
+ if ( parts.length > 0 ) {
+ checkSet = makeArray(set);
+ } else {
+ prune = false;
+ }
+
+ while ( parts.length ) {
+ var cur = parts.pop(), pop = cur;
+
+ if ( !Expr.relative[ cur ] ) {
+ cur = "";
+ } else {
+ pop = parts.pop();
+ }
+
+ if ( pop == null ) {
+ pop = context;
+ }
+
+ Expr.relative[ cur ]( checkSet, pop, isXML(context) );
+ }
+ }
+
+ if ( !checkSet ) {
+ checkSet = set;
+ }
+
+ if ( !checkSet ) {
+ throw "Syntax error, unrecognized expression: " + (cur || selector);
+ }
+
+ if ( toString.call(checkSet) === "[object Array]" ) {
+ if ( !prune ) {
+ results.push.apply( results, checkSet );
+ } else if ( context.nodeType === 1 ) {
+ for ( var i = 0; checkSet[i] != null; i++ ) {
+ if ( checkSet[i] && (checkSet[i] === true || checkSet[i].nodeType === 1 && contains(context, checkSet[i])) ) {
+ results.push( set[i] );
+ }
+ }
+ } else {
+ for ( var i = 0; checkSet[i] != null; i++ ) {
+ if ( checkSet[i] && checkSet[i].nodeType === 1 ) {
+ results.push( set[i] );
+ }
+ }
+ }
+ } else {
+ makeArray( checkSet, results );
+ }
+
+ if ( extra ) {
+ Sizzle( extra, context, results, seed );
+
+ if ( sortOrder ) {
+ hasDuplicate = false;
+ results.sort(sortOrder);
+
+ if ( hasDuplicate ) {
+ for ( var i = 1; i < results.length; i++ ) {
+ if ( results[i] === results[i-1] ) {
+ results.splice(i--, 1);
+ }
+ }
+ }
+ }
+ }
+
+ return results;
+};
+
+Sizzle.matches = function(expr, set){
+ return Sizzle(expr, null, null, set);
+};
+
+Sizzle.find = function(expr, context, isXML){
+ var set, match;
+
+ if ( !expr ) {
+ return [];
+ }
+
+ for ( var i = 0, l = Expr.order.length; i < l; i++ ) {
+ var type = Expr.order[i], match;
+
+ if ( (match = Expr.match[ type ].exec( expr )) ) {
+ var left = RegExp.leftContext;
+
+ if ( left.substr( left.length - 1 ) !== "\\" ) {
+ match[1] = (match[1] || "").replace(/\\/g, "");
+ set = Expr.find[ type ]( match, context, isXML );
+ if ( set != null ) {
+ expr = expr.replace( Expr.match[ type ], "" );
+ break;
+ }
+ }
+ }
+ }
+
+ if ( !set ) {
+ set = context.getElementsByTagName("*");
+ }
+
+ return {set: set, expr: expr};
+};
+
+Sizzle.filter = function(expr, set, inplace, not){
+ var old = expr, result = [], curLoop = set, match, anyFound,
+ isXMLFilter = set && set[0] && isXML(set[0]);
+
+ while ( expr && set.length ) {
+ for ( var type in Expr.filter ) {
+ if ( (match = Expr.match[ type ].exec( expr )) != null ) {
+ var filter = Expr.filter[ type ], found, item;
+ anyFound = false;
+
+ if ( curLoop == result ) {
+ result = [];
+ }
+
+ if ( Expr.preFilter[ type ] ) {
+ match = Expr.preFilter[ type ]( match, curLoop, inplace, result, not, isXMLFilter );
+
+ if ( !match ) {
+ anyFound = found = true;
+ } else if ( match === true ) {
+ continue;
+ }
+ }
+
+ if ( match ) {
+ for ( var i = 0; (item = curLoop[i]) != null; i++ ) {
+ if ( item ) {
+ found = filter( item, match, i, curLoop );
+ var pass = not ^ !!found;
+
+ if ( inplace && found != null ) {
+ if ( pass ) {
+ anyFound = true;
+ } else {
+ curLoop[i] = false;
+ }
+ } else if ( pass ) {
+ result.push( item );
+ anyFound = true;
+ }
+ }
+ }
+ }
+
+ if ( found !== undefined ) {
+ if ( !inplace ) {
+ curLoop = result;
+ }
+
+ expr = expr.replace( Expr.match[ type ], "" );
+
+ if ( !anyFound ) {
+ return [];
+ }
+
+ break;
+ }
+ }
+ }
+
+ // Improper expression
+ if ( expr == old ) {
+ if ( anyFound == null ) {
+ throw "Syntax error, unrecognized expression: " + expr;
+ } else {
+ break;
+ }
+ }
+
+ old = expr;
+ }
+
+ return curLoop;
+};
+
+var Expr = Sizzle.selectors = {
+ order: [ "ID", "NAME", "TAG" ],
+ match: {
+ ID: /#((?:[\w\u00c0-\uFFFF_-]|\\.)+)/,
+ CLASS: /\.((?:[\w\u00c0-\uFFFF_-]|\\.)+)/,
+ NAME: /\[name=['"]*((?:[\w\u00c0-\uFFFF_-]|\\.)+)['"]*\]/,
+ ATTR: /\[\s*((?:[\w\u00c0-\uFFFF_-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/,
+ TAG: /^((?:[\w\u00c0-\uFFFF\*_-]|\\.)+)/,
+ CHILD: /:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/,
+ POS: /:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)/,
+ PSEUDO: /:((?:[\w\u00c0-\uFFFF_-]|\\.)+)(?:\((['"]*)((?:\([^\)]+\)|[^\2\(\)]*)+)\2\))?/
+ },
+ attrMap: {
+ "class": "className",
+ "for": "htmlFor"
+ },
+ attrHandle: {
+ href: function(elem){
+ return elem.getAttribute("href");
+ }
+ },
+ relative: {
+ "+": function(checkSet, part, isXML){
+ var isPartStr = typeof part === "string",
+ isTag = isPartStr && !/\W/.test(part),
+ isPartStrNotTag = isPartStr && !isTag;
+
+ if ( isTag && !isXML ) {
+ part = part.toUpperCase();
+ }
+
+ for ( var i = 0, l = checkSet.length, elem; i < l; i++ ) {
+ if ( (elem = checkSet[i]) ) {
+ while ( (elem = elem.previousSibling) && elem.nodeType !== 1 ) {}
+
+ checkSet[i] = isPartStrNotTag || elem && elem.nodeName === part ?
+ elem || false :
+ elem === part;
+ }
+ }
+
+ if ( isPartStrNotTag ) {
+ Sizzle.filter( part, checkSet, true );
+ }
+ },
+ ">": function(checkSet, part, isXML){
+ var isPartStr = typeof part === "string";
+
+ if ( isPartStr && !/\W/.test(part) ) {
+ part = isXML ? part : part.toUpperCase();
+
+ for ( var i = 0, l = checkSet.length; i < l; i++ ) {
+ var elem = checkSet[i];
+ if ( elem ) {
+ var parent = elem.parentNode;
+ checkSet[i] = parent.nodeName === part ? parent : false;
+ }
+ }
+ } else {
+ for ( var i = 0, l = checkSet.length; i < l; i++ ) {
+ var elem = checkSet[i];
+ if ( elem ) {
+ checkSet[i] = isPartStr ?
+ elem.parentNode :
+ elem.parentNode === part;
+ }
+ }
+
+ if ( isPartStr ) {
+ Sizzle.filter( part, checkSet, true );
+ }
+ }
+ },
+ "": function(checkSet, part, isXML){
+ var doneName = done++, checkFn = dirCheck;
+
+ if ( !part.match(/\W/) ) {
+ var nodeCheck = part = isXML ? part : part.toUpperCase();
+ checkFn = dirNodeCheck;
+ }
+
+ checkFn("parentNode", part, doneName, checkSet, nodeCheck, isXML);
+ },
+ "~": function(checkSet, part, isXML){
+ var doneName = done++, checkFn = dirCheck;
+
+ if ( typeof part === "string" && !part.match(/\W/) ) {
+ var nodeCheck = part = isXML ? part : part.toUpperCase();
+ checkFn = dirNodeCheck;
+ }
+
+ checkFn("previousSibling", part, doneName, checkSet, nodeCheck, isXML);
+ }
+ },
+ find: {
+ ID: function(match, context, isXML){
+ if ( typeof context.getElementById !== "undefined" && !isXML ) {
+ var m = context.getElementById(match[1]);
+ return m ? [m] : [];
+ }
+ },
+ NAME: function(match, context, isXML){
+ if ( typeof context.getElementsByName !== "undefined" ) {
+ var ret = [], results = context.getElementsByName(match[1]);
+
+ for ( var i = 0, l = results.length; i < l; i++ ) {
+ if ( results[i].getAttribute("name") === match[1] ) {
+ ret.push( results[i] );
+ }
+ }
+
+ return ret.length === 0 ? null : ret;
+ }
+ },
+ TAG: function(match, context){
+ return context.getElementsByTagName(match[1]);
+ }
+ },
+ preFilter: {
+ CLASS: function(match, curLoop, inplace, result, not, isXML){
+ match = " " + match[1].replace(/\\/g, "") + " ";
+
+ if ( isXML ) {
+ return match;
+ }
+
+ for ( var i = 0, elem; (elem = curLoop[i]) != null; i++ ) {
+ if ( elem ) {
+ if ( not ^ (elem.className && (" " + elem.className + " ").indexOf(match) >= 0) ) {
+ if ( !inplace )
+ result.push( elem );
+ } else if ( inplace ) {
+ curLoop[i] = false;
+ }
+ }
+ }
+
+ return false;
+ },
+ ID: function(match){
+ return match[1].replace(/\\/g, "");
+ },
+ TAG: function(match, curLoop){
+ for ( var i = 0; curLoop[i] === false; i++ ){}
+ return curLoop[i] && isXML(curLoop[i]) ? match[1] : match[1].toUpperCase();
+ },
+ CHILD: function(match){
+ if ( match[1] == "nth" ) {
+ // parse equations like 'even', 'odd', '5', '2n', '3n+2', '4n-1', '-n+6'
+ var test = /(-?)(\d*)n((?:\+|-)?\d*)/.exec(
+ match[2] == "even" && "2n" || match[2] == "odd" && "2n+1" ||
+ !/\D/.test( match[2] ) && "0n+" + match[2] || match[2]);
+
+ // calculate the numbers (first)n+(last) including if they are negative
+ match[2] = (test[1] + (test[2] || 1)) - 0;
+ match[3] = test[3] - 0;
+ }
+
+ // TODO: Move to normal caching system
+ match[0] = done++;
+
+ return match;
+ },
+ ATTR: function(match, curLoop, inplace, result, not, isXML){
+ var name = match[1].replace(/\\/g, "");
+
+ if ( !isXML && Expr.attrMap[name] ) {
+ match[1] = Expr.attrMap[name];
+ }
+
+ if ( match[2] === "~=" ) {
+ match[4] = " " + match[4] + " ";
+ }
+
+ return match;
+ },
+ PSEUDO: function(match, curLoop, inplace, result, not){
+ if ( match[1] === "not" ) {
+ // If we're dealing with a complex expression, or a simple one
+ if ( match[3].match(chunker).length > 1 || /^\w/.test(match[3]) ) {
+ match[3] = Sizzle(match[3], null, null, curLoop);
+ } else {
+ var ret = Sizzle.filter(match[3], curLoop, inplace, true ^ not);
+ if ( !inplace ) {
+ result.push.apply( result, ret );
+ }
+ return false;
+ }
+ } else if ( Expr.match.POS.test( match[0] ) || Expr.match.CHILD.test( match[0] ) ) {
+ return true;
+ }
+
+ return match;
+ },
+ POS: function(match){
+ match.unshift( true );
+ return match;
+ }
+ },
+ filters: {
+ enabled: function(elem){
+ return elem.disabled === false && elem.type !== "hidden";
+ },
+ disabled: function(elem){
+ return elem.disabled === true;
+ },
+ checked: function(elem){
+ return elem.checked === true;
+ },
+ selected: function(elem){
+ // Accessing this property makes selected-by-default
+ // options in Safari work properly
+ elem.parentNode.selectedIndex;
+ return elem.selected === true;
+ },
+ parent: function(elem){
+ return !!elem.firstChild;
+ },
+ empty: function(elem){
+ return !elem.firstChild;
+ },
+ has: function(elem, i, match){
+ return !!Sizzle( match[3], elem ).length;
+ },
+ header: function(elem){
+ return /h\d/i.test( elem.nodeName );
+ },
+ text: function(elem){
+ return "text" === elem.type;
+ },
+ radio: function(elem){
+ return "radio" === elem.type;
+ },
+ checkbox: function(elem){
+ return "checkbox" === elem.type;
+ },
+ file: function(elem){
+ return "file" === elem.type;
+ },
+ password: function(elem){
+ return "password" === elem.type;
+ },
+ submit: function(elem){
+ return "submit" === elem.type;
+ },
+ image: function(elem){
+ return "image" === elem.type;
+ },
+ reset: function(elem){
+ return "reset" === elem.type;
+ },
+ button: function(elem){
+ return "button" === elem.type || elem.nodeName.toUpperCase() === "BUTTON";
+ },
+ input: function(elem){
+ return /input|select|textarea|button/i.test(elem.nodeName);
+ }
+ },
+ setFilters: {
+ first: function(elem, i){
+ return i === 0;
+ },
+ last: function(elem, i, match, array){
+ return i === array.length - 1;
+ },
+ even: function(elem, i){
+ return i % 2 === 0;
+ },
+ odd: function(elem, i){
+ return i % 2 === 1;
+ },
+ lt: function(elem, i, match){
+ return i < match[3] - 0;
+ },
+ gt: function(elem, i, match){
+ return i > match[3] - 0;
+ },
+ nth: function(elem, i, match){
+ return match[3] - 0 == i;
+ },
+ eq: function(elem, i, match){
+ return match[3] - 0 == i;
+ }
+ },
+ filter: {
+ PSEUDO: function(elem, match, i, array){
+ var name = match[1], filter = Expr.filters[ name ];
+
+ if ( filter ) {
+ return filter( elem, i, match, array );
+ } else if ( name === "contains" ) {
+ return (elem.textContent || elem.innerText || "").indexOf(match[3]) >= 0;
+ } else if ( name === "not" ) {
+ var not = match[3];
+
+ for ( var i = 0, l = not.length; i < l; i++ ) {
+ if ( not[i] === elem ) {
+ return false;
+ }
+ }
+
+ return true;
+ }
+ },
+ CHILD: function(elem, match){
+ var type = match[1], node = elem;
+ switch (type) {
+ case 'only':
+ case 'first':
+ while (node = node.previousSibling) {
+ if ( node.nodeType === 1 ) return false;
+ }
+ if ( type == 'first') return true;
+ node = elem;
+ case 'last':
+ while (node = node.nextSibling) {
+ if ( node.nodeType === 1 ) return false;
+ }
+ return true;
+ case 'nth':
+ var first = match[2], last = match[3];
+
+ if ( first == 1 && last == 0 ) {
+ return true;
+ }
+
+ var doneName = match[0],
+ parent = elem.parentNode;
+
+ if ( parent && (parent.sizcache !== doneName || !elem.nodeIndex) ) {
+ var count = 0;
+ for ( node = parent.firstChild; node; node = node.nextSibling ) {
+ if ( node.nodeType === 1 ) {
+ node.nodeIndex = ++count;
+ }
+ }
+ parent.sizcache = doneName;
+ }
+
+ var diff = elem.nodeIndex - last;
+ if ( first == 0 ) {
+ return diff == 0;
+ } else {
+ return ( diff % first == 0 && diff / first >= 0 );
+ }
+ }
+ },
+ ID: function(elem, match){
+ return elem.nodeType === 1 && elem.getAttribute("id") === match;
+ },
+ TAG: function(elem, match){
+ return (match === "*" && elem.nodeType === 1) || elem.nodeName === match;
+ },
+ CLASS: function(elem, match){
+ return (" " + (elem.className || elem.getAttribute("class")) + " ")
+ .indexOf( match ) > -1;
+ },
+ ATTR: function(elem, match){
+ var name = match[1],
+ result = Expr.attrHandle[ name ] ?
+ Expr.attrHandle[ name ]( elem ) :
+ elem[ name ] != null ?
+ elem[ name ] :
+ elem.getAttribute( name ),
+ value = result + "",
+ type = match[2],
+ check = match[4];
+
+ return result == null ?
+ type === "!=" :
+ type === "=" ?
+ value === check :
+ type === "*=" ?
+ value.indexOf(check) >= 0 :
+ type === "~=" ?
+ (" " + value + " ").indexOf(check) >= 0 :
+ !check ?
+ value && result !== false :
+ type === "!=" ?
+ value != check :
+ type === "^=" ?
+ value.indexOf(check) === 0 :
+ type === "$=" ?
+ value.substr(value.length - check.length) === check :
+ type === "|=" ?
+ value === check || value.substr(0, check.length + 1) === check + "-" :
+ false;
+ },
+ POS: function(elem, match, i, array){
+ var name = match[2], filter = Expr.setFilters[ name ];
+
+ if ( filter ) {
+ return filter( elem, i, match, array );
+ }
+ }
+ }
+};
+
+var origPOS = Expr.match.POS;
+
+for ( var type in Expr.match ) {
+ Expr.match[ type ] = RegExp( Expr.match[ type ].source + /(?![^\[]*\])(?![^\(]*\))/.source );
+}
+
+var makeArray = function(array, results) {
+ array = Array.prototype.slice.call( array );
+
+ if ( results ) {
+ results.push.apply( results, array );
+ return results;
+ }
+
+ return array;
+};
+
+// Perform a simple check to determine if the browser is capable of
+// converting a NodeList to an array using builtin methods.
+try {
+ Array.prototype.slice.call( document.documentElement.childNodes );
+
+// Provide a fallback method if it does not work
+} catch(e){
+ makeArray = function(array, results) {
+ var ret = results || [];
+
+ if ( toString.call(array) === "[object Array]" ) {
+ Array.prototype.push.apply( ret, array );
+ } else {
+ if ( typeof array.length === "number" ) {
+ for ( var i = 0, l = array.length; i < l; i++ ) {
+ ret.push( array[i] );
+ }
+ } else {
+ for ( var i = 0; array[i]; i++ ) {
+ ret.push( array[i] );
+ }
+ }
+ }
+
+ return ret;
+ };
+}
+
+var sortOrder;
+
+if ( document.documentElement.compareDocumentPosition ) {
+ sortOrder = function( a, b ) {
+ var ret = a.compareDocumentPosition(b) & 4 ? -1 : a === b ? 0 : 1;
+ if ( ret === 0 ) {
+ hasDuplicate = true;
+ }
+ return ret;
+ };
+} else if ( "sourceIndex" in document.documentElement ) {
+ sortOrder = function( a, b ) {
+ var ret = a.sourceIndex - b.sourceIndex;
+ if ( ret === 0 ) {
+ hasDuplicate = true;
+ }
+ return ret;
+ };
+} else if ( document.createRange ) {
+ sortOrder = function( a, b ) {
+ var aRange = a.ownerDocument.createRange(), bRange = b.ownerDocument.createRange();
+ aRange.selectNode(a);
+ aRange.collapse(true);
+ bRange.selectNode(b);
+ bRange.collapse(true);
+ var ret = aRange.compareBoundaryPoints(Range.START_TO_END, bRange);
+ if ( ret === 0 ) {
+ hasDuplicate = true;
+ }
+ return ret;
+ };
+}
+
+// Check to see if the browser returns elements by name when
+// querying by getElementById (and provide a workaround)
+(function(){
+ // We're going to inject a fake input element with a specified name
+ var form = document.createElement("form"),
+ id = "script" + (new Date).getTime();
+ form.innerHTML = "<input name='" + id + "'/>";
+
+ // Inject it into the root element, check its status, and remove it quickly
+ var root = document.documentElement;
+ root.insertBefore( form, root.firstChild );
+
+ // The workaround has to do additional checks after a getElementById
+ // Which slows things down for other browsers (hence the branching)
+ if ( !!document.getElementById( id ) ) {
+ Expr.find.ID = function(match, context, isXML){
+ if ( typeof context.getElementById !== "undefined" && !isXML ) {
+ var m = context.getElementById(match[1]);
+ return m ? m.id === match[1] || typeof m.getAttributeNode !== "undefined" && m.getAttributeNode("id").nodeValue === match[1] ? [m] : undefined : [];
+ }
+ };
+
+ Expr.filter.ID = function(elem, match){
+ var node = typeof elem.getAttributeNode !== "undefined" && elem.getAttributeNode("id");
+ return elem.nodeType === 1 && node && node.nodeValue === match;
+ };
+ }
+
+ root.removeChild( form );
+})();
+
+(function(){
+ // Check to see if the browser returns only elements
+ // when doing getElementsByTagName("*")
+
+ // Create a fake element
+ var div = document.createElement("div");
+ div.appendChild( document.createComment("") );
+
+ // Make sure no comments are found
+ if ( div.getElementsByTagName("*").length > 0 ) {
+ Expr.find.TAG = function(match, context){
+ var results = context.getElementsByTagName(match[1]);
+
+ // Filter out possible comments
+ if ( match[1] === "*" ) {
+ var tmp = [];
+
+ for ( var i = 0; results[i]; i++ ) {
+ if ( results[i].nodeType === 1 ) {
+ tmp.push( results[i] );
+ }
+ }
+
+ results = tmp;
+ }
+
+ return results;
+ };
+ }
+
+ // Check to see if an attribute returns normalized href attributes
+ div.innerHTML = "<a href='#'></a>";
+ if ( div.firstChild && typeof div.firstChild.getAttribute !== "undefined" &&
+ div.firstChild.getAttribute("href") !== "#" ) {
+ Expr.attrHandle.href = function(elem){
+ return elem.getAttribute("href", 2);
+ };
+ }
+})();
+
+if ( document.querySelectorAll ) (function(){
+ var oldSizzle = Sizzle, div = document.createElement("div");
+ div.innerHTML = "<p class='TEST'></p>";
+
+ // Safari can't handle uppercase or unicode characters when
+ // in quirks mode.
+ if ( div.querySelectorAll && div.querySelectorAll(".TEST").length === 0 ) {
+ return;
+ }
+
+ Sizzle = function(query, context, extra, seed){
+ context = context || document;
+
+ // Only use querySelectorAll on non-XML documents
+ // (ID selectors don't work in non-HTML documents)
+ if ( !seed && context.nodeType === 9 && !isXML(context) ) {
+ try {
+ return makeArray( context.querySelectorAll(query), extra );
+ } catch(e){}
+ }
+
+ return oldSizzle(query, context, extra, seed);
+ };
+
+ Sizzle.find = oldSizzle.find;
+ Sizzle.filter = oldSizzle.filter;
+ Sizzle.selectors = oldSizzle.selectors;
+ Sizzle.matches = oldSizzle.matches;
+})();
+
+if ( document.getElementsByClassName && document.documentElement.getElementsByClassName ) (function(){
+ var div = document.createElement("div");
+ div.innerHTML = "<div class='test e'></div><div class='test'></div>";
+
+ // Opera can't find a second classname (in 9.6)
+ if ( div.getElementsByClassName("e").length === 0 )
+ return;
+
+ // Safari caches class attributes, doesn't catch changes (in 3.2)
+ div.lastChild.className = "e";
+
+ if ( div.getElementsByClassName("e").length === 1 )
+ return;
+
+ Expr.order.splice(1, 0, "CLASS");
+ Expr.find.CLASS = function(match, context, isXML) {
+ if ( typeof context.getElementsByClassName !== "undefined" && !isXML ) {
+ return context.getElementsByClassName(match[1]);
+ }
+ };
+})();
+
+function dirNodeCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {
+ var sibDir = dir == "previousSibling" && !isXML;
+ for ( var i = 0, l = checkSet.length; i < l; i++ ) {
+ var elem = checkSet[i];
+ if ( elem ) {
+ if ( sibDir && elem.nodeType === 1 ){
+ elem.sizcache = doneName;
+ elem.sizset = i;
+ }
+ elem = elem[dir];
+ var match = false;
+
+ while ( elem ) {
+ if ( elem.sizcache === doneName ) {
+ match = checkSet[elem.sizset];
+ break;
+ }
+
+ if ( elem.nodeType === 1 && !isXML ){
+ elem.sizcache = doneName;
+ elem.sizset = i;
+ }
+
+ if ( elem.nodeName === cur ) {
+ match = elem;
+ break;
+ }
+
+ elem = elem[dir];
+ }
+
+ checkSet[i] = match;
+ }
+ }
+}
+
+function dirCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {
+ var sibDir = dir == "previousSibling" && !isXML;
+ for ( var i = 0, l = checkSet.length; i < l; i++ ) {
+ var elem = checkSet[i];
+ if ( elem ) {
+ if ( sibDir && elem.nodeType === 1 ) {
+ elem.sizcache = doneName;
+ elem.sizset = i;
+ }
+ elem = elem[dir];
+ var match = false;
+
+ while ( elem ) {
+ if ( elem.sizcache === doneName ) {
+ match = checkSet[elem.sizset];
+ break;
+ }
+
+ if ( elem.nodeType === 1 ) {
+ if ( !isXML ) {
+ elem.sizcache = doneName;
+ elem.sizset = i;
+ }
+ if ( typeof cur !== "string" ) {
+ if ( elem === cur ) {
+ match = true;
+ break;
+ }
+
+ } else if ( Sizzle.filter( cur, [elem] ).length > 0 ) {
+ match = elem;
+ break;
+ }
+ }
+
+ elem = elem[dir];
+ }
+
+ checkSet[i] = match;
+ }
+ }
+}
+
+var contains = document.compareDocumentPosition ? function(a, b){
+ return a.compareDocumentPosition(b) & 16;
+} : function(a, b){
+ return a !== b && (a.contains ? a.contains(b) : true);
+};
+
+var isXML = function(elem){
+ return elem.nodeType === 9 && elem.documentElement.nodeName !== "HTML" ||
+ !!elem.ownerDocument && isXML( elem.ownerDocument );
+};
+
+var posProcess = function(selector, context){
+ var tmpSet = [], later = "", match,
+ root = context.nodeType ? [context] : context;
+
+ // Position selectors must be done after the filter
+ // And so must :not(positional) so we move all PSEUDOs to the end
+ while ( (match = Expr.match.PSEUDO.exec( selector )) ) {
+ later += match[0];
+ selector = selector.replace( Expr.match.PSEUDO, "" );
+ }
+
+ selector = Expr.relative[selector] ? selector + "*" : selector;
+
+ for ( var i = 0, l = root.length; i < l; i++ ) {
+ Sizzle( selector, root[i], tmpSet );
+ }
+
+ return Sizzle.filter( later, tmpSet );
+};
+
+// EXPOSE
+jQuery.find = Sizzle;
+jQuery.filter = Sizzle.filter;
+jQuery.expr = Sizzle.selectors;
+jQuery.expr[":"] = jQuery.expr.filters;
+
+Sizzle.selectors.filters.hidden = function(elem){
+ return elem.offsetWidth === 0 || elem.offsetHeight === 0;
+};
+
+Sizzle.selectors.filters.visible = function(elem){
+ return elem.offsetWidth > 0 || elem.offsetHeight > 0;
+};
+
+Sizzle.selectors.filters.animated = function(elem){
+ return jQuery.grep(jQuery.timers, function(fn){
+ return elem === fn.elem;
+ }).length;
+};
+
+jQuery.multiFilter = function( expr, elems, not ) {
+ if ( not ) {
+ expr = ":not(" + expr + ")";
+ }
+
+ return Sizzle.matches(expr, elems);
+};
+
+jQuery.dir = function( elem, dir ){
+ var matched = [], cur = elem[dir];
+ while ( cur && cur != document ) {
+ if ( cur.nodeType == 1 )
+ matched.push( cur );
+ cur = cur[dir];
+ }
+ return matched;
+};
+
+jQuery.nth = function(cur, result, dir, elem){
+ result = result || 1;
+ var num = 0;
+
+ for ( ; cur; cur = cur[dir] )
+ if ( cur.nodeType == 1 && ++num == result )
+ break;
+
+ return cur;
+};
+
+jQuery.sibling = function(n, elem){
+ var r = [];
+
+ for ( ; n; n = n.nextSibling ) {
+ if ( n.nodeType == 1 && n != elem )
+ r.push( n );
+ }
+
+ return r;
+};
+
+return;
+
+window.Sizzle = Sizzle;
+
+})();
+/*
+ * A number of helper functions used for managing events.
+ * Many of the ideas behind this code originated from
+ * Dean Edwards' addEvent library.
+ */
+jQuery.event = {
+
+ // Bind an event to an element
+ // Original by Dean Edwards
+ add: function(elem, types, handler, data) {
+ if ( elem.nodeType == 3 || elem.nodeType == 8 )
+ return;
+
+ // For whatever reason, IE has trouble passing the window object
+ // around, causing it to be cloned in the process
+ if ( elem.setInterval && elem != window )
+ elem = window;
+
+ // Make sure that the function being executed has a unique ID
+ if ( !handler.guid )
+ handler.guid = this.guid++;
+
+ // if data is passed, bind to handler
+ if ( data !== undefined ) {
+ // Create temporary function pointer to original handler
+ var fn = handler;
+
+ // Create unique handler function, wrapped around original handler
+ handler = this.proxy( fn );
+
+ // Store data in unique handler
+ handler.data = data;
+ }
+
+ // Init the element's event structure
+ var events = jQuery.data(elem, "events") || jQuery.data(elem, "events", {}),
+ handle = jQuery.data(elem, "handle") || jQuery.data(elem, "handle", function(){
+ // Handle the second event of a trigger and when
+ // an event is called after a page has unloaded
+ return typeof jQuery !== "undefined" && !jQuery.event.triggered ?
+ jQuery.event.handle.apply(arguments.callee.elem, arguments) :
+ undefined;
+ });
+ // Add elem as a property of the handle function
+ // This is to prevent a memory leak with non-native
+ // event in IE.
+ handle.elem = elem;
+
+ // Handle multiple events separated by a space
+ // jQuery(...).bind("mouseover mouseout", fn);
+ jQuery.each(types.split(/\s+/), function(index, type) {
+ // Namespaced event handlers
+ var namespaces = type.split(".");
+ type = namespaces.shift();
+ handler.type = namespaces.slice().sort().join(".");
+
+ // Get the current list of functions bound to this event
+ var handlers = events[type];
+
+ if ( jQuery.event.specialAll[type] )
+ jQuery.event.specialAll[type].setup.call(elem, data, namespaces);
+
+ // Init the event handler queue
+ if (!handlers) {
+ handlers = events[type] = {};
+
+ // Check for a special event handler
+ // Only use addEventListener/attachEvent if the special
+ // events handler returns false
+ if ( !jQuery.event.special[type] || jQuery.event.special[type].setup.call(elem, data, namespaces) === false ) {
+ // Bind the global event handler to the element
+ if (elem.addEventListener)
+ elem.addEventListener(type, handle, false);
+ else if (elem.attachEvent)
+ elem.attachEvent("on" + type, handle);
+ }
+ }
+
+ // Add the function to the element's handler list
+ handlers[handler.guid] = handler;
+
+ // Keep track of which events have been used, for global triggering
+ jQuery.event.global[type] = true;
+ });
+
+ // Nullify elem to prevent memory leaks in IE
+ elem = null;
+ },
+
+ guid: 1,
+ global: {},
+
+ // Detach an event or set of events from an element
+ remove: function(elem, types, handler) {
+ // don't do events on text and comment nodes
+ if ( elem.nodeType == 3 || elem.nodeType == 8 )
+ return;
+
+ var events = jQuery.data(elem, "events"), ret, index;
+
+ if ( events ) {
+ // Unbind all events for the element
+ if ( types === undefined || (typeof types === "string" && types.charAt(0) == ".") )
+ for ( var type in events )
+ this.remove( elem, type + (types || "") );
+ else {
+ // types is actually an event object here
+ if ( types.type ) {
+ handler = types.handler;
+ types = types.type;
+ }
+
+ // Handle multiple events seperated by a space
+ // jQuery(...).unbind("mouseover mouseout", fn);
+ jQuery.each(types.split(/\s+/), function(index, type){
+ // Namespaced event handlers
+ var namespaces = type.split(".");
+ type = namespaces.shift();
+ var namespace = RegExp("(^|\\.)" + namespaces.slice().sort().join(".*\\.") + "(\\.|$)");
+
+ if ( events[type] ) {
+ // remove the given handler for the given type
+ if ( handler )
+ delete events[type][handler.guid];
+
+ // remove all handlers for the given type
+ else
+ for ( var handle in events[type] )
+ // Handle the removal of namespaced events
+ if ( namespace.test(events[type][handle].type) )
+ delete events[type][handle];
+
+ if ( jQuery.event.specialAll[type] )
+ jQuery.event.specialAll[type].teardown.call(elem, namespaces);
+
+ // remove generic event handler if no more handlers exist
+ for ( ret in events[type] ) break;
+ if ( !ret ) {
+ if ( !jQuery.event.special[type] || jQuery.event.special[type].teardown.call(elem, namespaces) === false ) {
+ if (elem.removeEventListener)
+ elem.removeEventListener(type, jQuery.data(elem, "handle"), false);
+ else if (elem.detachEvent)
+ elem.detachEvent("on" + type, jQuery.data(elem, "handle"));
+ }
+ ret = null;
+ delete events[type];
+ }
+ }
+ });
+ }
+
+ // Remove the expando if it's no longer used
+ for ( ret in events ) break;
+ if ( !ret ) {
+ var handle = jQuery.data( elem, "handle" );
+ if ( handle ) handle.elem = null;
+ jQuery.removeData( elem, "events" );
+ jQuery.removeData( elem, "handle" );
+ }
+ }
+ },
+
+ // bubbling is internal
+ trigger: function( event, data, elem, bubbling ) {
+ // Event object or event type
+ var type = event.type || event;
+
+ if( !bubbling ){
+ event = typeof event === "object" ?
+ // jQuery.Event object
+ event[expando] ? event :
+ // Object literal
+ jQuery.extend( jQuery.Event(type), event ) :
+ // Just the event type (string)
+ jQuery.Event(type);
+
+ if ( type.indexOf("!") >= 0 ) {
+ event.type = type = type.slice(0, -1);
+ event.exclusive = true;
+ }
+
+ // Handle a global trigger
+ if ( !elem ) {
+ // Don't bubble custom events when global (to avoid too much overhead)
+ event.stopPropagation();
+ // Only trigger if we've ever bound an event for it
+ if ( this.global[type] )
+ jQuery.each( jQuery.cache, function(){
+ if ( this.events && this.events[type] )
+ jQuery.event.trigger( event, data, this.handle.elem );
+ });
+ }
+
+ // Handle triggering a single element
+
+ // don't do events on text and comment nodes
+ if ( !elem || elem.nodeType == 3 || elem.nodeType == 8 )
+ return undefined;
+
+ // Clean up in case it is reused
+ event.result = undefined;
+ event.target = elem;
+
+ // Clone the incoming data, if any
+ data = jQuery.makeArray(data);
+ data.unshift( event );
+ }
+
+ event.currentTarget = elem;
+
+ // Trigger the event, it is assumed that "handle" is a function
+ var handle = jQuery.data(elem, "handle");
+ if ( handle )
+ handle.apply( elem, data );
+
+ // Handle triggering native .onfoo handlers (and on links since we don't call .click() for links)
+ if ( (!elem[type] || (jQuery.nodeName(elem, 'a') && type == "click")) && elem["on"+type] && elem["on"+type].apply( elem, data ) === false )
+ event.result = false;
+
+ // Trigger the native events (except for clicks on links)
+ if ( !bubbling && elem[type] && !event.isDefaultPrevented() && !(jQuery.nodeName(elem, 'a') && type == "click") ) {
+ this.triggered = true;
+ try {
+ elem[ type ]();
+ // prevent IE from throwing an error for some hidden elements
+ } catch (e) {}
+ }
+
+ this.triggered = false;
+
+ if ( !event.isPropagationStopped() ) {
+ var parent = elem.parentNode || elem.ownerDocument;
+ if ( parent )
+ jQuery.event.trigger(event, data, parent, true);
+ }
+ },
+
+ handle: function(event) {
+ // returned undefined or false
+ var all, handlers;
+
+ event = arguments[0] = jQuery.event.fix( event || window.event );
+ event.currentTarget = this;
+
+ // Namespaced event handlers
+ var namespaces = event.type.split(".");
+ event.type = namespaces.shift();
+
+ // Cache this now, all = true means, any handler
+ all = !namespaces.length && !event.exclusive;
+
+ var namespace = RegExp("(^|\\.)" + namespaces.slice().sort().join(".*\\.") + "(\\.|$)");
+
+ handlers = ( jQuery.data(this, "events") || {} )[event.type];
+
+ for ( var j in handlers ) {
+ var handler = handlers[j];
+
+ // Filter the functions by class
+ if ( all || namespace.test(handler.type) ) {
+ // Pass in a reference to the handler function itself
+ // So that we can later remove it
+ event.handler = handler;
+ event.data = handler.data;
+
+ var ret = handler.apply(this, arguments);
+
+ if( ret !== undefined ){
+ event.result = ret;
+ if ( ret === false ) {
+ event.preventDefault();
+ event.stopPropagation();
+ }
+ }
+
+ if( event.isImmediatePropagationStopped() )
+ break;
+
+ }
+ }
+ },
+
+ props: "altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode metaKey newValue originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),
+
+ fix: function(event) {
+ if ( event[expando] )
+ return event;
+
+ // store a copy of the original event object
+ // and "clone" to set read-only properties
+ var originalEvent = event;
+ event = jQuery.Event( originalEvent );
+
+ for ( var i = this.props.length, prop; i; ){
+ prop = this.props[ --i ];
+ event[ prop ] = originalEvent[ prop ];
+ }
+
+ // Fix target property, if necessary
+ if ( !event.target )
+ event.target = event.srcElement || document; // Fixes #1925 where srcElement might not be defined either
+
+ // check if target is a textnode (safari)
+ if ( event.target.nodeType == 3 )
+ event.target = event.target.parentNode;
+
+ // Add relatedTarget, if necessary
+ if ( !event.relatedTarget && event.fromElement )
+ event.relatedTarget = event.fromElement == event.target ? event.toElement : event.fromElement;
+
+ // Calculate pageX/Y if missing and clientX/Y available
+ if ( event.pageX == null && event.clientX != null ) {
+ var doc = document.documentElement, body = document.body;
+ event.pageX = event.clientX + (doc && doc.scrollLeft || body && body.scrollLeft || 0) - (doc.clientLeft || 0);
+ event.pageY = event.clientY + (doc && doc.scrollTop || body && body.scrollTop || 0) - (doc.clientTop || 0);
+ }
+
+ // Add which for key events
+ if ( !event.which && ((event.charCode || event.charCode === 0) ? event.charCode : event.keyCode) )
+ event.which = event.charCode || event.keyCode;
+
+ // Add metaKey to non-Mac browsers (use ctrl for PC's and Meta for Macs)
+ if ( !event.metaKey && event.ctrlKey )
+ event.metaKey = event.ctrlKey;
+
+ // Add which for click: 1 == left; 2 == middle; 3 == right
+ // Note: button is not normalized, so don't use it
+ if ( !event.which && event.button )
+ event.which = (event.button & 1 ? 1 : ( event.button & 2 ? 3 : ( event.button & 4 ? 2 : 0 ) ));
+
+ return event;
+ },
+
+ proxy: function( fn, proxy ){
+ proxy = proxy || function(){ return fn.apply(this, arguments); };
+ // Set the guid of unique handler to the same of original handler, so it can be removed
+ proxy.guid = fn.guid = fn.guid || proxy.guid || this.guid++;
+ // So proxy can be declared as an argument
+ return proxy;
+ },
+
+ special: {
+ ready: {
+ // Make sure the ready event is setup
+ setup: bindReady,
+ teardown: function() {}
+ }
+ },
+
+ specialAll: {
+ live: {
+ setup: function( selector, namespaces ){
+ jQuery.event.add( this, namespaces[0], liveHandler );
+ },
+ teardown: function( namespaces ){
+ if ( namespaces.length ) {
+ var remove = 0, name = RegExp("(^|\\.)" + namespaces[0] + "(\\.|$)");
+
+ jQuery.each( (jQuery.data(this, "events").live || {}), function(){
+ if ( name.test(this.type) )
+ remove++;
+ });
+
+ if ( remove < 1 )
+ jQuery.event.remove( this, namespaces[0], liveHandler );
+ }
+ }
+ }
+ }
+};
+
+jQuery.Event = function( src ){
+ // Allow instantiation without the 'new' keyword
+ if( !this.preventDefault )
+ return new jQuery.Event(src);
+
+ // Event object
+ if( src && src.type ){
+ this.originalEvent = src;
+ this.type = src.type;
+ // Event type
+ }else
+ this.type = src;
+
+ // timeStamp is buggy for some events on Firefox(#3843)
+ // So we won't rely on the native value
+ this.timeStamp = now();
+
+ // Mark it as fixed
+ this[expando] = true;
+};
+
+function returnFalse(){
+ return false;
+}
+function returnTrue(){
+ return true;
+}
+
+// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding
+// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html
+jQuery.Event.prototype = {
+ preventDefault: function() {
+ this.isDefaultPrevented = returnTrue;
+
+ var e = this.originalEvent;
+ if( !e )
+ return;
+ // if preventDefault exists run it on the original event
+ if (e.preventDefault)
+ e.preventDefault();
+ // otherwise set the returnValue property of the original event to false (IE)
+ e.returnValue = false;
+ },
+ stopPropagation: function() {
+ this.isPropagationStopped = returnTrue;
+
+ var e = this.originalEvent;
+ if( !e )
+ return;
+ // if stopPropagation exists run it on the original event
+ if (e.stopPropagation)
+ e.stopPropagation();
+ // otherwise set the cancelBubble property of the original event to true (IE)
+ e.cancelBubble = true;
+ },
+ stopImmediatePropagation:function(){
+ this.isImmediatePropagationStopped = returnTrue;
+ this.stopPropagation();
+ },
+ isDefaultPrevented: returnFalse,
+ isPropagationStopped: returnFalse,
+ isImmediatePropagationStopped: returnFalse
+};
+// Checks if an event happened on an element within another element
+// Used in jQuery.event.special.mouseenter and mouseleave handlers
+var withinElement = function(event) {
+ // Check if mouse(over|out) are still within the same parent element
+ var parent = event.relatedTarget;
+ // Traverse up the tree
+ while ( parent && parent != this )
+ try { parent = parent.parentNode; }
+ catch(e) { parent = this; }
+
+ if( parent != this ){
+ // set the correct event type
+ event.type = event.data;
+ // handle event if we actually just moused on to a non sub-element
+ jQuery.event.handle.apply( this, arguments );
+ }
+};
+
+jQuery.each({
+ mouseover: 'mouseenter',
+ mouseout: 'mouseleave'
+}, function( orig, fix ){
+ jQuery.event.special[ fix ] = {
+ setup: function(){
+ jQuery.event.add( this, orig, withinElement, fix );
+ },
+ teardown: function(){
+ jQuery.event.remove( this, orig, withinElement );
+ }
+ };
+});
+
+jQuery.fn.extend({
+ bind: function( type, data, fn ) {
+ return type == "unload" ? this.one(type, data, fn) : this.each(function(){
+ jQuery.event.add( this, type, fn || data, fn && data );
+ });
+ },
+
+ one: function( type, data, fn ) {
+ var one = jQuery.event.proxy( fn || data, function(event) {
+ jQuery(this).unbind(event, one);
+ return (fn || data).apply( this, arguments );
+ });
+ return this.each(function(){
+ jQuery.event.add( this, type, one, fn && data);
+ });
+ },
+
+ unbind: function( type, fn ) {
+ return this.each(function(){
+ jQuery.event.remove( this, type, fn );
+ });
+ },
+
+ trigger: function( type, data ) {
+ return this.each(function(){
+ jQuery.event.trigger( type, data, this );
+ });
+ },
+
+ triggerHandler: function( type, data ) {
+ if( this[0] ){
+ var event = jQuery.Event(type);
+ event.preventDefault();
+ event.stopPropagation();
+ jQuery.event.trigger( event, data, this[0] );
+ return event.result;
+ }
+ },
+
+ toggle: function( fn ) {
+ // Save reference to arguments for access in closure
+ var args = arguments, i = 1;
+
+ // link all the functions, so any of them can unbind this click handler
+ while( i < args.length )
+ jQuery.event.proxy( fn, args[i++] );
+
+ return this.click( jQuery.event.proxy( fn, function(event) {
+ // Figure out which function to execute
+ this.lastToggle = ( this.lastToggle || 0 ) % i;
+
+ // Make sure that clicks stop
+ event.preventDefault();
+
+ // and execute the function
+ return args[ this.lastToggle++ ].apply( this, arguments ) || false;
+ }));
+ },
+
+ hover: function(fnOver, fnOut) {
+ return this.mouseenter(fnOver).mouseleave(fnOut);
+ },
+
+ ready: function(fn) {
+ // Attach the listeners
+ bindReady();
+
+ // If the DOM is already ready
+ if ( jQuery.isReady )
+ // Execute the function immediately
+ fn.call( document, jQuery );
+
+ // Otherwise, remember the function for later
+ else
+ // Add the function to the wait list
+ jQuery.readyList.push( fn );
+
+ return this;
+ },
+
+ live: function( type, fn ){
+ var proxy = jQuery.event.proxy( fn );
+ proxy.guid += this.selector + type;
+
+ jQuery(document).bind( liveConvert(type, this.selector), this.selector, proxy );
+
+ return this;
+ },
+
+ die: function( type, fn ){
+ jQuery(document).unbind( liveConvert(type, this.selector), fn ? { guid: fn.guid + this.selector + type } : null );
+ return this;
+ }
+});
+
+function liveHandler( event ){
+ var check = RegExp("(^|\\.)" + event.type + "(\\.|$)"),
+ stop = true,
+ elems = [];
+
+ jQuery.each(jQuery.data(this, "events").live || [], function(i, fn){
+ if ( check.test(fn.type) ) {
+ var elem = jQuery(event.target).closest(fn.data)[0];
+ if ( elem )
+ elems.push({ elem: elem, fn: fn });
+ }
+ });
+
+ elems.sort(function(a,b) {
+ return jQuery.data(a.elem, "closest") - jQuery.data(b.elem, "closest");
+ });
+
+ jQuery.each(elems, function(){
+ if ( this.fn.call(this.elem, event, this.fn.data) === false )
+ return (stop = false);
+ });
+
+ return stop;
+}
+
+function liveConvert(type, selector){
+ return ["live", type, selector.replace(/\./g, "`").replace(/ /g, "|")].join(".");
+}
+
+jQuery.extend({
+ isReady: false,
+ readyList: [],
+ // Handle when the DOM is ready
+ ready: function() {
+ // Make sure that the DOM is not already loaded
+ if ( !jQuery.isReady ) {
+ // Remember that the DOM is ready
+ jQuery.isReady = true;
+
+ // If there are functions bound, to execute
+ if ( jQuery.readyList ) {
+ // Execute all of them
+ jQuery.each( jQuery.readyList, function(){
+ this.call( document, jQuery );
+ });
+
+ // Reset the list of functions
+ jQuery.readyList = null;
+ }
+
+ // Trigger any bound ready events
+ jQuery(document).triggerHandler("ready");
+ }
+ }
+});
+
+var readyBound = false;
+
+function bindReady(){
+ if ( readyBound ) return;
+ readyBound = true;
+
+ // Mozilla, Opera and webkit nightlies currently support this event
+ if ( document.addEventListener ) {
+ // Use the handy event callback
+ document.addEventListener( "DOMContentLoaded", function(){
+ document.removeEventListener( "DOMContentLoaded", arguments.callee, false );
+ jQuery.ready();
+ }, false );
+
+ // If IE event model is used
+ } else if ( document.attachEvent ) {
+ // ensure firing before onload,
+ // maybe late but safe also for iframes
+ document.attachEvent("onreadystatechange", function(){
+ if ( document.readyState === "complete" ) {
+ document.detachEvent( "onreadystatechange", arguments.callee );
+ jQuery.ready();
+ }
+ });
+
+ // If IE and not an iframe
+ // continually check to see if the document is ready
+ if ( document.documentElement.doScroll && window == window.top ) (function(){
+ if ( jQuery.isReady ) return;
+
+ try {
+ // If IE is used, use the trick by Diego Perini
+ // http://javascript.nwbox.com/IEContentLoaded/
+ document.documentElement.doScroll("left");
+ } catch( error ) {
+ setTimeout( arguments.callee, 0 );
+ return;
+ }
+
+ // and execute any waiting functions
+ jQuery.ready();
+ })();
+ }
+
+ // A fallback to window.onload, that will always work
+ jQuery.event.add( window, "load", jQuery.ready );
+}
+
+jQuery.each( ("blur,focus,load,resize,scroll,unload,click,dblclick," +
+ "mousedown,mouseup,mousemove,mouseover,mouseout,mouseenter,mouseleave," +
+ "change,select,submit,keydown,keypress,keyup,error").split(","), function(i, name){
+
+ // Handle event binding
+ jQuery.fn[name] = function(fn){
+ return fn ? this.bind(name, fn) : this.trigger(name);
+ };
+});
+
+// Prevent memory leaks in IE
+// And prevent errors on refresh with events like mouseover in other browsers
+// Window isn't included so as not to unbind existing unload events
+jQuery( window ).bind( 'unload', function(){
+ for ( var id in jQuery.cache )
+ // Skip the window
+ if ( id != 1 && jQuery.cache[ id ].handle )
+ jQuery.event.remove( jQuery.cache[ id ].handle.elem );
+});
+(function(){
+
+ jQuery.support = {};
+
+ var root = document.documentElement,
+ script = document.createElement("script"),
+ div = document.createElement("div"),
+ id = "script" + (new Date).getTime();
+
+ div.style.display = "none";
+ div.innerHTML = ' <link/><table></table><a href="/a" style="color:red;float:left;opacity:.5;">a</a><select><option>text</option></select><object><param/></object>';
+
+ var all = div.getElementsByTagName("*"),
+ a = div.getElementsByTagName("a")[0];
+
+ // Can't get basic test support
+ if ( !all || !all.length || !a ) {
+ return;
+ }
+
+ jQuery.support = {
+ // IE strips leading whitespace when .innerHTML is used
+ leadingWhitespace: div.firstChild.nodeType == 3,
+
+ // Make sure that tbody elements aren't automatically inserted
+ // IE will insert them into empty tables
+ tbody: !div.getElementsByTagName("tbody").length,
+
+ // Make sure that you can get all elements in an <object> element
+ // IE 7 always returns no results
+ objectAll: !!div.getElementsByTagName("object")[0]
+ .getElementsByTagName("*").length,
+
+ // Make sure that link elements get serialized correctly by innerHTML
+ // This requires a wrapper element in IE
+ htmlSerialize: !!div.getElementsByTagName("link").length,
+
+ // Get the style information from getAttribute
+ // (IE uses .cssText insted)
+ style: /red/.test( a.getAttribute("style") ),
+
+ // Make sure that URLs aren't manipulated
+ // (IE normalizes it by default)
+ hrefNormalized: a.getAttribute("href") === "/a",
+
+ // Make sure that element opacity exists
+ // (IE uses filter instead)
+ opacity: a.style.opacity === "0.5",
+
+ // Verify style float existence
+ // (IE uses styleFloat instead of cssFloat)
+ cssFloat: !!a.style.cssFloat,
+
+ // Will be defined later
+ scriptEval: false,
+ noCloneEvent: true,
+ boxModel: null
+ };
+
+ script.type = "text/javascript";
+ try {
+ script.appendChild( document.createTextNode( "window." + id + "=1;" ) );
+ } catch(e){}
+
+ root.insertBefore( script, root.firstChild );
+
+ // Make sure that the execution of code works by injecting a script
+ // tag with appendChild/createTextNode
+ // (IE doesn't support this, fails, and uses .text instead)
+ if ( window[ id ] ) {
+ jQuery.support.scriptEval = true;
+ delete window[ id ];
+ }
+
+ root.removeChild( script );
+
+ if ( div.attachEvent && div.fireEvent ) {
+ div.attachEvent("onclick", function(){
+ // Cloning a node shouldn't copy over any
+ // bound event handlers (IE does this)
+ jQuery.support.noCloneEvent = false;
+ div.detachEvent("onclick", arguments.callee);
+ });
+ div.cloneNode(true).fireEvent("onclick");
+ }
+
+ // Figure out if the W3C box model works as expected
+ // document.body must exist before we can do this
+ jQuery(function(){
+ var div = document.createElement("div");
+ div.style.width = div.style.paddingLeft = "1px";
+
+ document.body.appendChild( div );
+ jQuery.boxModel = jQuery.support.boxModel = div.offsetWidth === 2;
+ document.body.removeChild( div ).style.display = 'none';
+ });
+})();
+
+var styleFloat = jQuery.support.cssFloat ? "cssFloat" : "styleFloat";
+
+jQuery.props = {
+ "for": "htmlFor",
+ "class": "className",
+ "float": styleFloat,
+ cssFloat: styleFloat,
+ styleFloat: styleFloat,
+ readonly: "readOnly",
+ maxlength: "maxLength",
+ cellspacing: "cellSpacing",
+ rowspan: "rowSpan",
+ tabindex: "tabIndex"
+};
+jQuery.fn.extend({
+ // Keep a copy of the old load
+ _load: jQuery.fn.load,
+
+ load: function( url, params, callback ) {
+ if ( typeof url !== "string" )
+ return this._load( url );
+
+ var off = url.indexOf(" ");
+ if ( off >= 0 ) {
+ var selector = url.slice(off, url.length);
+ url = url.slice(0, off);
+ }
+
+ // Default to a GET request
+ var type = "GET";
+
+ // If the second parameter was provided
+ if ( params )
+ // If it's a function
+ if ( jQuery.isFunction( params ) ) {
+ // We assume that it's the callback
+ callback = params;
+ params = null;
+
+ // Otherwise, build a param string
+ } else if( typeof params === "object" ) {
+ params = jQuery.param( params );
+ type = "POST";
+ }
+
+ var self = this;
+
+ // Request the remote document
+ jQuery.ajax({
+ url: url,
+ type: type,
+ dataType: "html",
+ data: params,
+ complete: function(res, status){
+ // If successful, inject the HTML into all the matched elements
+ if ( status == "success" || status == "notmodified" )
+ // See if a selector was specified
+ self.html( selector ?
+ // Create a dummy div to hold the results
+ jQuery("<div/>")
+ // inject the contents of the document in, removing the scripts
+ // to avoid any 'Permission Denied' errors in IE
+ .append(res.responseText.replace(/<script(.|\s)*?\/script>/g, ""))
+
+ // Locate the specified elements
+ .find(selector) :
+
+ // If not, just inject the full result
+ res.responseText );
+
+ if( callback )
+ self.each( callback, [res.responseText, status, res] );
+ }
+ });
+ return this;
+ },
+
+ serialize: function() {
+ return jQuery.param(this.serializeArray());
+ },
+ serializeArray: function() {
+ return this.map(function(){
+ return this.elements ? jQuery.makeArray(this.elements) : this;
+ })
+ .filter(function(){
+ return this.name && !this.disabled &&
+ (this.checked || /select|textarea/i.test(this.nodeName) ||
+ /text|hidden|password|search/i.test(this.type));
+ })
+ .map(function(i, elem){
+ var val = jQuery(this).val();
+ return val == null ? null :
+ jQuery.isArray(val) ?
+ jQuery.map( val, function(val, i){
+ return {name: elem.name, value: val};
+ }) :
+ {name: elem.name, value: val};
+ }).get();
+ }
+});
+
+// Attach a bunch of functions for handling common AJAX events
+jQuery.each( "ajaxStart,ajaxStop,ajaxComplete,ajaxError,ajaxSuccess,ajaxSend".split(","), function(i,o){
+ jQuery.fn[o] = function(f){
+ return this.bind(o, f);
+ };
+});
+
+var jsc = now();
+
+jQuery.extend({
+
+ get: function( url, data, callback, type ) {
+ // shift arguments if data argument was ommited
+ if ( jQuery.isFunction( data ) ) {
+ callback = data;
+ data = null;
+ }
+
+ return jQuery.ajax({
+ type: "GET",
+ url: url,
+ data: data,
+ success: callback,
+ dataType: type
+ });
+ },
+
+ getScript: function( url, callback ) {
+ return jQuery.get(url, null, callback, "script");
+ },
+
+ getJSON: function( url, data, callback ) {
+ return jQuery.get(url, data, callback, "json");
+ },
+
+ post: function( url, data, callback, type ) {
+ if ( jQuery.isFunction( data ) ) {
+ callback = data;
+ data = {};
+ }
+
+ return jQuery.ajax({
+ type: "POST",
+ url: url,
+ data: data,
+ success: callback,
+ dataType: type
+ });
+ },
+
+ ajaxSetup: function( settings ) {
+ jQuery.extend( jQuery.ajaxSettings, settings );
+ },
+
+ ajaxSettings: {
+ url: location.href,
+ global: true,
+ type: "GET",
+ contentType: "application/x-www-form-urlencoded",
+ processData: true,
+ async: true,
+ /*
+ timeout: 0,
+ data: null,
+ username: null,
+ password: null,
+ */
+ // Create the request object; Microsoft failed to properly
+ // implement the XMLHttpRequest in IE7, so we use the ActiveXObject when it is available
+ // This function can be overriden by calling jQuery.ajaxSetup
+ xhr:function(){
+ return window.ActiveXObject ? new ActiveXObject("Microsoft.XMLHTTP") : new XMLHttpRequest();
+ },
+ accepts: {
+ xml: "application/xml, text/xml",
+ html: "text/html",
+ script: "text/javascript, application/javascript",
+ json: "application/json, text/javascript",
+ text: "text/plain",
+ _default: "*/*"
+ }
+ },
+
+ // Last-Modified header cache for next request
+ lastModified: {},
+
+ ajax: function( s ) {
+ // Extend the settings, but re-extend 's' so that it can be
+ // checked again later (in the test suite, specifically)
+ s = jQuery.extend(true, s, jQuery.extend(true, {}, jQuery.ajaxSettings, s));
+
+ var jsonp, jsre = /=\?(&|$)/g, status, data,
+ type = s.type.toUpperCase();
+
+ // convert data if not already a string
+ if ( s.data && s.processData && typeof s.data !== "string" )
+ s.data = jQuery.param(s.data);
+
+ // Handle JSONP Parameter Callbacks
+ if ( s.dataType == "jsonp" ) {
+ if ( type == "GET" ) {
+ if ( !s.url.match(jsre) )
+ s.url += (s.url.match(/\?/) ? "&" : "?") + (s.jsonp || "callback") + "=?";
+ } else if ( !s.data || !s.data.match(jsre) )
+ s.data = (s.data ? s.data + "&" : "") + (s.jsonp || "callback") + "=?";
+ s.dataType = "json";
+ }
+
+ // Build temporary JSONP function
+ if ( s.dataType == "json" && (s.data && s.data.match(jsre) || s.url.match(jsre)) ) {
+ jsonp = "jsonp" + jsc++;
+
+ // Replace the =? sequence both in the query string and the data
+ if ( s.data )
+ s.data = (s.data + "").replace(jsre, "=" + jsonp + "$1");
+ s.url = s.url.replace(jsre, "=" + jsonp + "$1");
+
+ // We need to make sure
+ // that a JSONP style response is executed properly
+ s.dataType = "script";
+
+ // Handle JSONP-style loading
+ window[ jsonp ] = function(tmp){
+ data = tmp;
+ success();
+ complete();
+ // Garbage collect
+ window[ jsonp ] = undefined;
+ try{ delete window[ jsonp ]; } catch(e){}
+ if ( head )
+ head.removeChild( script );
+ };
+ }
+
+ if ( s.dataType == "script" && s.cache == null )
+ s.cache = false;
+
+ if ( s.cache === false && type == "GET" ) {
+ var ts = now();
+ // try replacing _= if it is there
+ var ret = s.url.replace(/(\?|&)_=.*?(&|$)/, "$1_=" + ts + "$2");
+ // if nothing was replaced, add timestamp to the end
+ s.url = ret + ((ret == s.url) ? (s.url.match(/\?/) ? "&" : "?") + "_=" + ts : "");
+ }
+
+ // If data is available, append data to url for get requests
+ if ( s.data && type == "GET" ) {
+ s.url += (s.url.match(/\?/) ? "&" : "?") + s.data;
+
+ // IE likes to send both get and post data, prevent this
+ s.data = null;
+ }
+
+ // Watch for a new set of requests
+ if ( s.global && ! jQuery.active++ )
+ jQuery.event.trigger( "ajaxStart" );
+
+ // Matches an absolute URL, and saves the domain
+ var parts = /^(\w+:)?\/\/([^\/?#]+)/.exec( s.url );
+
+ // If we're requesting a remote document
+ // and trying to load JSON or Script with a GET
+ if ( s.dataType == "script" && type == "GET" && parts
+ && ( parts[1] && parts[1] != location.protocol || parts[2] != location.host )){
+
+ var head = document.getElementsByTagName("head")[0];
+ var script = document.createElement("script");
+ script.src = s.url;
+ if (s.scriptCharset)
+ script.charset = s.scriptCharset;
+
+ // Handle Script loading
+ if ( !jsonp ) {
+ var done = false;
+
+ // Attach handlers for all browsers
+ script.onload = script.onreadystatechange = function(){
+ if ( !done && (!this.readyState ||
+ this.readyState == "loaded" || this.readyState == "complete") ) {
+ done = true;
+ success();
+ complete();
+
+ // Handle memory leak in IE
+ script.onload = script.onreadystatechange = null;
+ head.removeChild( script );
+ }
+ };
+ }
+
+ head.appendChild(script);
+
+ // We handle everything using the script element injection
+ return undefined;
+ }
+
+ var requestDone = false;
+
+ // Create the request object
+ var xhr = s.xhr();
+
+ // Open the socket
+ // Passing null username, generates a login popup on Opera (#2865)
+ if( s.username )
+ xhr.open(type, s.url, s.async, s.username, s.password);
+ else
+ xhr.open(type, s.url, s.async);
+
+ // Need an extra try/catch for cross domain requests in Firefox 3
+ try {
+ // Set the correct header, if data is being sent
+ if ( s.data )
+ xhr.setRequestHeader("Content-Type", s.contentType);
+
+ // Set the If-Modified-Since header, if ifModified mode.
+ if ( s.ifModified )
+ xhr.setRequestHeader("If-Modified-Since",
+ jQuery.lastModified[s.url] || "Thu, 01 Jan 1970 00:00:00 GMT" );
+
+ // Set header so the called script knows that it's an XMLHttpRequest
+ xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest");
+
+ // Set the Accepts header for the server, depending on the dataType
+ xhr.setRequestHeader("Accept", s.dataType && s.accepts[ s.dataType ] ?
+ s.accepts[ s.dataType ] + ", */*" :
+ s.accepts._default );
+ } catch(e){}
+
+ // Allow custom headers/mimetypes and early abort
+ if ( s.beforeSend && s.beforeSend(xhr, s) === false ) {
+ // Handle the global AJAX counter
+ if ( s.global && ! --jQuery.active )
+ jQuery.event.trigger( "ajaxStop" );
+ // close opended socket
+ xhr.abort();
+ return false;
+ }
+
+ if ( s.global )
+ jQuery.event.trigger("ajaxSend", [xhr, s]);
+
+ // Wait for a response to come back
+ var onreadystatechange = function(isTimeout){
+ // The request was aborted, clear the interval and decrement jQuery.active
+ if (xhr.readyState == 0) {
+ if (ival) {
+ // clear poll interval
+ clearInterval(ival);
+ ival = null;
+ // Handle the global AJAX counter
+ if ( s.global && ! --jQuery.active )
+ jQuery.event.trigger( "ajaxStop" );
+ }
+ // The transfer is complete and the data is available, or the request timed out
+ } else if ( !requestDone && xhr && (xhr.readyState == 4 || isTimeout == "timeout") ) {
+ requestDone = true;
+
+ // clear poll interval
+ if (ival) {
+ clearInterval(ival);
+ ival = null;
+ }
+
+ status = isTimeout == "timeout" ? "timeout" :
+ !jQuery.httpSuccess( xhr ) ? "error" :
+ s.ifModified && jQuery.httpNotModified( xhr, s.url ) ? "notmodified" :
+ "success";
+
+ if ( status == "success" ) {
+ // Watch for, and catch, XML document parse errors
+ try {
+ // process the data (runs the xml through httpData regardless of callback)
+ data = jQuery.httpData( xhr, s.dataType, s );
+ } catch(e) {
+ status = "parsererror";
+ }
+ }
+
+ // Make sure that the request was successful or notmodified
+ if ( status == "success" ) {
+ // Cache Last-Modified header, if ifModified mode.
+ var modRes;
+ try {
+ modRes = xhr.getResponseHeader("Last-Modified");
+ } catch(e) {} // swallow exception thrown by FF if header is not available
+
+ if ( s.ifModified && modRes )
+ jQuery.lastModified[s.url] = modRes;
+
+ // JSONP handles its own success callback
+ if ( !jsonp )
+ success();
+ } else
+ jQuery.handleError(s, xhr, status);
+
+ // Fire the complete handlers
+ complete();
+
+ if ( isTimeout )
+ xhr.abort();
+
+ // Stop memory leaks
+ if ( s.async )
+ xhr = null;
+ }
+ };
+
+ if ( s.async ) {
+ // don't attach the handler to the request, just poll it instead
+ var ival = setInterval(onreadystatechange, 13);
+
+ // Timeout checker
+ if ( s.timeout > 0 )
+ setTimeout(function(){
+ // Check to see if the request is still happening
+ if ( xhr && !requestDone )
+ onreadystatechange( "timeout" );
+ }, s.timeout);
+ }
+
+ // Send the data
+ try {
+ xhr.send(s.data);
+ } catch(e) {
+ jQuery.handleError(s, xhr, null, e);
+ }
+
+ // firefox 1.5 doesn't fire statechange for sync requests
+ if ( !s.async )
+ onreadystatechange();
+
+ function success(){
+ // If a local callback was specified, fire it and pass it the data
+ if ( s.success )
+ s.success( data, status );
+
+ // Fire the global callback
+ if ( s.global )
+ jQuery.event.trigger( "ajaxSuccess", [xhr, s] );
+ }
+
+ function complete(){
+ // Process result
+ if ( s.complete )
+ s.complete(xhr, status);
+
+ // The request was completed
+ if ( s.global )
+ jQuery.event.trigger( "ajaxComplete", [xhr, s] );
+
+ // Handle the global AJAX counter
+ if ( s.global && ! --jQuery.active )
+ jQuery.event.trigger( "ajaxStop" );
+ }
+
+ // return XMLHttpRequest to allow aborting the request etc.
+ return xhr;
+ },
+
+ handleError: function( s, xhr, status, e ) {
+ // If a local callback was specified, fire it
+ if ( s.error ) s.error( xhr, status, e );
+
+ // Fire the global callback
+ if ( s.global )
+ jQuery.event.trigger( "ajaxError", [xhr, s, e] );
+ },
+
+ // Counter for holding the number of active queries
+ active: 0,
+
+ // Determines if an XMLHttpRequest was successful or not
+ httpSuccess: function( xhr ) {
+ try {
+ // IE error sometimes returns 1223 when it should be 204 so treat it as success, see #1450
+ return !xhr.status && location.protocol == "file:" ||
+ ( xhr.status >= 200 && xhr.status < 300 ) || xhr.status == 304 || xhr.status == 1223;
+ } catch(e){}
+ return false;
+ },
+
+ // Determines if an XMLHttpRequest returns NotModified
+ httpNotModified: function( xhr, url ) {
+ try {
+ var xhrRes = xhr.getResponseHeader("Last-Modified");
+
+ // Firefox always returns 200. check Last-Modified date
+ return xhr.status == 304 || xhrRes == jQuery.lastModified[url];
+ } catch(e){}
+ return false;
+ },
+
+ httpData: function( xhr, type, s ) {
+ var ct = xhr.getResponseHeader("content-type"),
+ xml = type == "xml" || !type && ct && ct.indexOf("xml") >= 0,
+ data = xml ? xhr.responseXML : xhr.responseText;
+
+ if ( xml && data.documentElement.tagName == "parsererror" )
+ throw "parsererror";
+
+ // Allow a pre-filtering function to sanitize the response
+ // s != null is checked to keep backwards compatibility
+ if( s && s.dataFilter )
+ data = s.dataFilter( data, type );
+
+ // The filter can actually parse the response
+ if( typeof data === "string" ){
+
+ // If the type is "script", eval it in global context
+ if ( type == "script" )
+ jQuery.globalEval( data );
+
+ // Get the JavaScript object, if JSON is used.
+ if ( type == "json" )
+ data = window["eval"]("(" + data + ")");
+ }
+
+ return data;
+ },
+
+ // Serialize an array of form elements or a set of
+ // key/values into a query string
+ param: function( a ) {
+ var s = [ ];
+
+ function add( key, value ){
+ s[ s.length ] = encodeURIComponent(key) + '=' + encodeURIComponent(value);
+ };
+
+ // If an array was passed in, assume that it is an array
+ // of form elements
+ if ( jQuery.isArray(a) || a.jquery )
+ // Serialize the form elements
+ jQuery.each( a, function(){
+ add( this.name, this.value );
+ });
+
+ // Otherwise, assume that it's an object of key/value pairs
+ else
+ // Serialize the key/values
+ for ( var j in a )
+ // If the value is an array then the key names need to be repeated
+ if ( jQuery.isArray(a[j]) )
+ jQuery.each( a[j], function(){
+ add( j, this );
+ });
+ else
+ add( j, jQuery.isFunction(a[j]) ? a[j]() : a[j] );
+
+ // Return the resulting serialization
+ return s.join("&").replace(/%20/g, "+");
+ }
+
+});
+var elemdisplay = {},
+ timerId,
+ fxAttrs = [
+ // height animations
+ [ "height", "marginTop", "marginBottom", "paddingTop", "paddingBottom" ],
+ // width animations
+ [ "width", "marginLeft", "marginRight", "paddingLeft", "paddingRight" ],
+ // opacity animations
+ [ "opacity" ]
+ ];
+
+function genFx( type, num ){
+ var obj = {};
+ jQuery.each( fxAttrs.concat.apply([], fxAttrs.slice(0,num)), function(){
+ obj[ this ] = type;
+ });
+ return obj;
+}
+
+jQuery.fn.extend({
+ show: function(speed,callback){
+ if ( speed ) {
+ return this.animate( genFx("show", 3), speed, callback);
+ } else {
+ for ( var i = 0, l = this.length; i < l; i++ ){
+ var old = jQuery.data(this[i], "olddisplay");
+
+ this[i].style.display = old || "";
+
+ if ( jQuery.css(this[i], "display") === "none" ) {
+ var tagName = this[i].tagName, display;
+
+ if ( elemdisplay[ tagName ] ) {
+ display = elemdisplay[ tagName ];
+ } else {
+ var elem = jQuery("<" + tagName + " />").appendTo("body");
+
+ display = elem.css("display");
+ if ( display === "none" )
+ display = "block";
+
+ elem.remove();
+
+ elemdisplay[ tagName ] = display;
+ }
+
+ jQuery.data(this[i], "olddisplay", display);
+ }
+ }
+
+ // Set the display of the elements in a second loop
+ // to avoid the constant reflow
+ for ( var i = 0, l = this.length; i < l; i++ ){
+ this[i].style.display = jQuery.data(this[i], "olddisplay") || "";
+ }
+
+ return this;
+ }
+ },
+
+ hide: function(speed,callback){
+ if ( speed ) {
+ return this.animate( genFx("hide", 3), speed, callback);
+ } else {
+ for ( var i = 0, l = this.length; i < l; i++ ){
+ var old = jQuery.data(this[i], "olddisplay");
+ if ( !old && old !== "none" )
+ jQuery.data(this[i], "olddisplay", jQuery.css(this[i], "display"));
+ }
+
+ // Set the display of the elements in a second loop
+ // to avoid the constant reflow
+ for ( var i = 0, l = this.length; i < l; i++ ){
+ this[i].style.display = "none";
+ }
+
+ return this;
+ }
+ },
+
+ // Save the old toggle function
+ _toggle: jQuery.fn.toggle,
+
+ toggle: function( fn, fn2 ){
+ var bool = typeof fn === "boolean";
+
+ return jQuery.isFunction(fn) && jQuery.isFunction(fn2) ?
+ this._toggle.apply( this, arguments ) :
+ fn == null || bool ?
+ this.each(function(){
+ var state = bool ? fn : jQuery(this).is(":hidden");
+ jQuery(this)[ state ? "show" : "hide" ]();
+ }) :
+ this.animate(genFx("toggle", 3), fn, fn2);
+ },
+
+ fadeTo: function(speed,to,callback){
+ return this.animate({opacity: to}, speed, callback);
+ },
+
+ animate: function( prop, speed, easing, callback ) {
+ var optall = jQuery.speed(speed, easing, callback);
+
+ return this[ optall.queue === false ? "each" : "queue" ](function(){
+
+ var opt = jQuery.extend({}, optall), p,
+ hidden = this.nodeType == 1 && jQuery(this).is(":hidden"),
+ self = this;
+
+ for ( p in prop ) {
+ if ( prop[p] == "hide" && hidden || prop[p] == "show" && !hidden )
+ return opt.complete.call(this);
+
+ if ( ( p == "height" || p == "width" ) && this.style ) {
+ // Store display property
+ opt.display = jQuery.css(this, "display");
+
+ // Make sure that nothing sneaks out
+ opt.overflow = this.style.overflow;
+ }
+ }
+
+ if ( opt.overflow != null )
+ this.style.overflow = "hidden";
+
+ opt.curAnim = jQuery.extend({}, prop);
+
+ jQuery.each( prop, function(name, val){
+ var e = new jQuery.fx( self, opt, name );
+
+ if ( /toggle|show|hide/.test(val) )
+ e[ val == "toggle" ? hidden ? "show" : "hide" : val ]( prop );
+ else {
+ var parts = val.toString().match(/^([+-]=)?([\d+-.]+)(.*)$/),
+ start = e.cur(true) || 0;
+
+ if ( parts ) {
+ var end = parseFloat(parts[2]),
+ unit = parts[3] || "px";
+
+ // We need to compute starting value
+ if ( unit != "px" ) {
+ self.style[ name ] = (end || 1) + unit;
+ start = ((end || 1) / e.cur(true)) * start;
+ self.style[ name ] = start + unit;
+ }
+
+ // If a +=/-= token was provided, we're doing a relative animation
+ if ( parts[1] )
+ end = ((parts[1] == "-=" ? -1 : 1) * end) + start;
+
+ e.custom( start, end, unit );
+ } else
+ e.custom( start, val, "" );
+ }
+ });
+
+ // For JS strict compliance
+ return true;
+ });
+ },
+
+ stop: function(clearQueue, gotoEnd){
+ var timers = jQuery.timers;
+
+ if (clearQueue)
+ this.queue([]);
+
+ this.each(function(){
+ // go in reverse order so anything added to the queue during the loop is ignored
+ for ( var i = timers.length - 1; i >= 0; i-- )
+ if ( timers[i].elem == this ) {
+ if (gotoEnd)
+ // force the next step to be the last
+ timers[i](true);
+ timers.splice(i, 1);
+ }
+ });
+
+ // start the next in the queue if the last step wasn't forced
+ if (!gotoEnd)
+ this.dequeue();
+
+ return this;
+ }
+
+});
+
+// Generate shortcuts for custom animations
+jQuery.each({
+ slideDown: genFx("show", 1),
+ slideUp: genFx("hide", 1),
+ slideToggle: genFx("toggle", 1),
+ fadeIn: { opacity: "show" },
+ fadeOut: { opacity: "hide" }
+}, function( name, props ){
+ jQuery.fn[ name ] = function( speed, callback ){
+ return this.animate( props, speed, callback );
+ };
+});
+
+jQuery.extend({
+
+ speed: function(speed, easing, fn) {
+ var opt = typeof speed === "object" ? speed : {
+ complete: fn || !fn && easing ||
+ jQuery.isFunction( speed ) && speed,
+ duration: speed,
+ easing: fn && easing || easing && !jQuery.isFunction(easing) && easing
+ };
+
+ opt.duration = jQuery.fx.off ? 0 : typeof opt.duration === "number" ? opt.duration :
+ jQuery.fx.speeds[opt.duration] || jQuery.fx.speeds._default;
+
+ // Queueing
+ opt.old = opt.complete;
+ opt.complete = function(){
+ if ( opt.queue !== false )
+ jQuery(this).dequeue();
+ if ( jQuery.isFunction( opt.old ) )
+ opt.old.call( this );
+ };
+
+ return opt;
+ },
+
+ easing: {
+ linear: function( p, n, firstNum, diff ) {
+ return firstNum + diff * p;
+ },
+ swing: function( p, n, firstNum, diff ) {
+ return ((-Math.cos(p*Math.PI)/2) + 0.5) * diff + firstNum;
+ }
+ },
+
+ timers: [],
+
+ fx: function( elem, options, prop ){
+ this.options = options;
+ this.elem = elem;
+ this.prop = prop;
+
+ if ( !options.orig )
+ options.orig = {};
+ }
+
+});
+
+jQuery.fx.prototype = {
+
+ // Simple function for setting a style value
+ update: function(){
+ if ( this.options.step )
+ this.options.step.call( this.elem, this.now, this );
+
+ (jQuery.fx.step[this.prop] || jQuery.fx.step._default)( this );
+
+ // Set display property to block for height/width animations
+ if ( ( this.prop == "height" || this.prop == "width" ) && this.elem.style )
+ this.elem.style.display = "block";
+ },
+
+ // Get the current size
+ cur: function(force){
+ if ( this.elem[this.prop] != null && (!this.elem.style || this.elem.style[this.prop] == null) )
+ return this.elem[ this.prop ];
+
+ var r = parseFloat(jQuery.css(this.elem, this.prop, force));
+ return r && r > -10000 ? r : parseFloat(jQuery.curCSS(this.elem, this.prop)) || 0;
+ },
+
+ // Start an animation from one number to another
+ custom: function(from, to, unit){
+ this.startTime = now();
+ this.start = from;
+ this.end = to;
+ this.unit = unit || this.unit || "px";
+ this.now = this.start;
+ this.pos = this.state = 0;
+
+ var self = this;
+ function t(gotoEnd){
+ return self.step(gotoEnd);
+ }
+
+ t.elem = this.elem;
+
+ if ( t() && jQuery.timers.push(t) && !timerId ) {
+ timerId = setInterval(function(){
+ var timers = jQuery.timers;
+
+ for ( var i = 0; i < timers.length; i++ )
+ if ( !timers[i]() )
+ timers.splice(i--, 1);
+
+ if ( !timers.length ) {
+ clearInterval( timerId );
+ timerId = undefined;
+ }
+ }, 13);
+ }
+ },
+
+ // Simple 'show' function
+ show: function(){
+ // Remember where we started, so that we can go back to it later
+ this.options.orig[this.prop] = jQuery.attr( this.elem.style, this.prop );
+ this.options.show = true;
+
+ // Begin the animation
+ // Make sure that we start at a small width/height to avoid any
+ // flash of content
+ this.custom(this.prop == "width" || this.prop == "height" ? 1 : 0, this.cur());
+
+ // Start by showing the element
+ jQuery(this.elem).show();
+ },
+
+ // Simple 'hide' function
+ hide: function(){
+ // Remember where we started, so that we can go back to it later
+ this.options.orig[this.prop] = jQuery.attr( this.elem.style, this.prop );
+ this.options.hide = true;
+
+ // Begin the animation
+ this.custom(this.cur(), 0);
+ },
+
+ // Each step of an animation
+ step: function(gotoEnd){
+ var t = now();
+
+ if ( gotoEnd || t >= this.options.duration + this.startTime ) {
+ this.now = this.end;
+ this.pos = this.state = 1;
+ this.update();
+
+ this.options.curAnim[ this.prop ] = true;
+
+ var done = true;
+ for ( var i in this.options.curAnim )
+ if ( this.options.curAnim[i] !== true )
+ done = false;
+
+ if ( done ) {
+ if ( this.options.display != null ) {
+ // Reset the overflow
+ this.elem.style.overflow = this.options.overflow;
+
+ // Reset the display
+ this.elem.style.display = this.options.display;
+ if ( jQuery.css(this.elem, "display") == "none" )
+ this.elem.style.display = "block";
+ }
+
+ // Hide the element if the "hide" operation was done
+ if ( this.options.hide )
+ jQuery(this.elem).hide();
+
+ // Reset the properties, if the item has been hidden or shown
+ if ( this.options.hide || this.options.show )
+ for ( var p in this.options.curAnim )
+ jQuery.attr(this.elem.style, p, this.options.orig[p]);
+
+ // Execute the complete function
+ this.options.complete.call( this.elem );
+ }
+
+ return false;
+ } else {
+ var n = t - this.startTime;
+ this.state = n / this.options.duration;
+
+ // Perform the easing function, defaults to swing
+ this.pos = jQuery.easing[this.options.easing || (jQuery.easing.swing ? "swing" : "linear")](this.state, n, 0, 1, this.options.duration);
+ this.now = this.start + ((this.end - this.start) * this.pos);
+
+ // Perform the next step of the animation
+ this.update();
+ }
+
+ return true;
+ }
+
+};
+
+jQuery.extend( jQuery.fx, {
+ speeds:{
+ slow: 600,
+ fast: 200,
+ // Default speed
+ _default: 400
+ },
+ step: {
+
+ opacity: function(fx){
+ jQuery.attr(fx.elem.style, "opacity", fx.now);
+ },
+
+ _default: function(fx){
+ if ( fx.elem.style && fx.elem.style[ fx.prop ] != null )
+ fx.elem.style[ fx.prop ] = fx.now + fx.unit;
+ else
+ fx.elem[ fx.prop ] = fx.now;
+ }
+ }
+});
+if ( document.documentElement["getBoundingClientRect"] )
+ jQuery.fn.offset = function() {
+ if ( !this[0] ) return { top: 0, left: 0 };
+ if ( this[0] === this[0].ownerDocument.body ) return jQuery.offset.bodyOffset( this[0] );
+ var box = this[0].getBoundingClientRect(), doc = this[0].ownerDocument, body = doc.body, docElem = doc.documentElement,
+ clientTop = docElem.clientTop || body.clientTop || 0, clientLeft = docElem.clientLeft || body.clientLeft || 0,
+ top = box.top + (self.pageYOffset || jQuery.boxModel && docElem.scrollTop || body.scrollTop ) - clientTop,
+ left = box.left + (self.pageXOffset || jQuery.boxModel && docElem.scrollLeft || body.scrollLeft) - clientLeft;
+ return { top: top, left: left };
+ };
+else
+ jQuery.fn.offset = function() {
+ if ( !this[0] ) return { top: 0, left: 0 };
+ if ( this[0] === this[0].ownerDocument.body ) return jQuery.offset.bodyOffset( this[0] );
+ jQuery.offset.initialized || jQuery.offset.initialize();
+
+ var elem = this[0], offsetParent = elem.offsetParent, prevOffsetParent = elem,
+ doc = elem.ownerDocument, computedStyle, docElem = doc.documentElement,
+ body = doc.body, defaultView = doc.defaultView,
+ prevComputedStyle = defaultView.getComputedStyle(elem, null),
+ top = elem.offsetTop, left = elem.offsetLeft;
+
+ while ( (elem = elem.parentNode) && elem !== body && elem !== docElem ) {
+ computedStyle = defaultView.getComputedStyle(elem, null);
+ top -= elem.scrollTop, left -= elem.scrollLeft;
+ if ( elem === offsetParent ) {
+ top += elem.offsetTop, left += elem.offsetLeft;
+ if ( jQuery.offset.doesNotAddBorder && !(jQuery.offset.doesAddBorderForTableAndCells && /^t(able|d|h)$/i.test(elem.tagName)) )
+ top += parseInt( computedStyle.borderTopWidth, 10) || 0,
+ left += parseInt( computedStyle.borderLeftWidth, 10) || 0;
+ prevOffsetParent = offsetParent, offsetParent = elem.offsetParent;
+ }
+ if ( jQuery.offset.subtractsBorderForOverflowNotVisible && computedStyle.overflow !== "visible" )
+ top += parseInt( computedStyle.borderTopWidth, 10) || 0,
+ left += parseInt( computedStyle.borderLeftWidth, 10) || 0;
+ prevComputedStyle = computedStyle;
+ }
+
+ if ( prevComputedStyle.position === "relative" || prevComputedStyle.position === "static" )
+ top += body.offsetTop,
+ left += body.offsetLeft;
+
+ if ( prevComputedStyle.position === "fixed" )
+ top += Math.max(docElem.scrollTop, body.scrollTop),
+ left += Math.max(docElem.scrollLeft, body.scrollLeft);
+
+ return { top: top, left: left };
+ };
+
+jQuery.offset = {
+ initialize: function() {
+ if ( this.initialized ) return;
+ var body = document.body, container = document.createElement('div'), innerDiv, checkDiv, table, td, rules, prop, bodyMarginTop = body.style.marginTop,
+ html = '<div style="position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;"><div></div></div><table style="position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;" cellpadding="0" cellspacing="0"><tr><td></td></tr></table>';
+
+ rules = { position: 'absolute', top: 0, left: 0, margin: 0, border: 0, width: '1px', height: '1px', visibility: 'hidden' };
+ for ( prop in rules ) container.style[prop] = rules[prop];
+
+ container.innerHTML = html;
+ body.insertBefore(container, body.firstChild);
+ innerDiv = container.firstChild, checkDiv = innerDiv.firstChild, td = innerDiv.nextSibling.firstChild.firstChild;
+
+ this.doesNotAddBorder = (checkDiv.offsetTop !== 5);
+ this.doesAddBorderForTableAndCells = (td.offsetTop === 5);
+
+ innerDiv.style.overflow = 'hidden', innerDiv.style.position = 'relative';
+ this.subtractsBorderForOverflowNotVisible = (checkDiv.offsetTop === -5);
+
+ body.style.marginTop = '1px';
+ this.doesNotIncludeMarginInBodyOffset = (body.offsetTop === 0);
+ body.style.marginTop = bodyMarginTop;
+
+ body.removeChild(container);
+ this.initialized = true;
+ },
+
+ bodyOffset: function(body) {
+ jQuery.offset.initialized || jQuery.offset.initialize();
+ var top = body.offsetTop, left = body.offsetLeft;
+ if ( jQuery.offset.doesNotIncludeMarginInBodyOffset )
+ top += parseInt( jQuery.curCSS(body, 'marginTop', true), 10 ) || 0,
+ left += parseInt( jQuery.curCSS(body, 'marginLeft', true), 10 ) || 0;
+ return { top: top, left: left };
+ }
+};
+
+
+jQuery.fn.extend({
+ position: function() {
+ var left = 0, top = 0, results;
+
+ if ( this[0] ) {
+ // Get *real* offsetParent
+ var offsetParent = this.offsetParent(),
+
+ // Get correct offsets
+ offset = this.offset(),
+ parentOffset = /^body|html$/i.test(offsetParent[0].tagName) ? { top: 0, left: 0 } : offsetParent.offset();
+
+ // Subtract element margins
+ // note: when an element has margin: auto the offsetLeft and marginLeft
+ // are the same in Safari causing offset.left to incorrectly be 0
+ offset.top -= num( this, 'marginTop' );
+ offset.left -= num( this, 'marginLeft' );
+
+ // Add offsetParent borders
+ parentOffset.top += num( offsetParent, 'borderTopWidth' );
+ parentOffset.left += num( offsetParent, 'borderLeftWidth' );
+
+ // Subtract the two offsets
+ results = {
+ top: offset.top - parentOffset.top,
+ left: offset.left - parentOffset.left
+ };
+ }
+
+ return results;
+ },
+
+ offsetParent: function() {
+ var offsetParent = this[0].offsetParent || document.body;
+ while ( offsetParent && (!/^body|html$/i.test(offsetParent.tagName) && jQuery.css(offsetParent, 'position') == 'static') )
+ offsetParent = offsetParent.offsetParent;
+ return jQuery(offsetParent);
+ }
+});
+
+
+// Create scrollLeft and scrollTop methods
+jQuery.each( ['Left', 'Top'], function(i, name) {
+ var method = 'scroll' + name;
+
+ jQuery.fn[ method ] = function(val) {
+ if (!this[0]) return null;
+
+ return val !== undefined ?
+
+ // Set the scroll offset
+ this.each(function() {
+ this == window || this == document ?
+ window.scrollTo(
+ !i ? val : jQuery(window).scrollLeft(),
+ i ? val : jQuery(window).scrollTop()
+ ) :
+ this[ method ] = val;
+ }) :
+
+ // Return the scroll offset
+ this[0] == window || this[0] == document ?
+ self[ i ? 'pageYOffset' : 'pageXOffset' ] ||
+ jQuery.boxModel && document.documentElement[ method ] ||
+ document.body[ method ] :
+ this[0][ method ];
+ };
+});
+// Create innerHeight, innerWidth, outerHeight and outerWidth methods
+jQuery.each([ "Height", "Width" ], function(i, name){
+
+ var tl = i ? "Left" : "Top", // top or left
+ br = i ? "Right" : "Bottom", // bottom or right
+ lower = name.toLowerCase();
+
+ // innerHeight and innerWidth
+ jQuery.fn["inner" + name] = function(){
+ return this[0] ?
+ jQuery.css( this[0], lower, false, "padding" ) :
+ null;
+ };
+
+ // outerHeight and outerWidth
+ jQuery.fn["outer" + name] = function(margin) {
+ return this[0] ?
+ jQuery.css( this[0], lower, false, margin ? "margin" : "border" ) :
+ null;
+ };
+
+ var type = name.toLowerCase();
+
+ jQuery.fn[ type ] = function( size ) {
+ // Get window width or height
+ return this[0] == window ?
+ // Everyone else use document.documentElement or document.body depending on Quirks vs Standards mode
+ document.compatMode == "CSS1Compat" && document.documentElement[ "client" + name ] ||
+ document.body[ "client" + name ] :
+
+ // Get document width or height
+ this[0] == document ?
+ // Either scroll[Width/Height] or offset[Width/Height], whichever is greater
+ Math.max(
+ document.documentElement["client" + name],
+ document.body["scroll" + name], document.documentElement["scroll" + name],
+ document.body["offset" + name], document.documentElement["offset" + name]
+ ) :
+
+ // Get or set width or height on the element
+ size === undefined ?
+ // Get width or height on the element
+ (this.length ? jQuery.css( this[0], type ) : null) :
+
+ // Set the width or height on the element (default to pixels if value is unitless)
+ this.css( type, typeof size === "string" ? size : size + "px" );
+ };
+
+});
+})(); \ No newline at end of file
diff --git a/bug/bug/jquery-validation-1.8.1/lib/jquery.metadata.js b/bug/bug/jquery-validation-1.8.1/lib/jquery.metadata.js
new file mode 100644
index 0000000..ad8bfba
--- /dev/null
+++ b/bug/bug/jquery-validation-1.8.1/lib/jquery.metadata.js
@@ -0,0 +1,122 @@
+/*
+ * Metadata - jQuery plugin for parsing metadata from elements
+ *
+ * Copyright (c) 2006 John Resig, Yehuda Katz, J�örn Zaefferer, Paul McLanahan
+ *
+ * Dual licensed under the MIT and GPL licenses:
+ * http://www.opensource.org/licenses/mit-license.php
+ * http://www.gnu.org/licenses/gpl.html
+ *
+ * Revision: $Id: jquery.metadata.js 4187 2007-12-16 17:15:27Z joern.zaefferer $
+ *
+ */
+
+/**
+ * Sets the type of metadata to use. Metadata is encoded in JSON, and each property
+ * in the JSON will become a property of the element itself.
+ *
+ * There are three supported types of metadata storage:
+ *
+ * attr: Inside an attribute. The name parameter indicates *which* attribute.
+ *
+ * class: Inside the class attribute, wrapped in curly braces: { }
+ *
+ * elem: Inside a child element (e.g. a script tag). The
+ * name parameter indicates *which* element.
+ *
+ * The metadata for an element is loaded the first time the element is accessed via jQuery.
+ *
+ * As a result, you can define the metadata type, use $(expr) to load the metadata into the elements
+ * matched by expr, then redefine the metadata type and run another $(expr) for other elements.
+ *
+ * @name $.metadata.setType
+ *
+ * @example <p id="one" class="some_class {item_id: 1, item_label: 'Label'}">This is a p</p>
+ * @before $.metadata.setType("class")
+ * @after $("#one").metadata().item_id == 1; $("#one").metadata().item_label == "Label"
+ * @desc Reads metadata from the class attribute
+ *
+ * @example <p id="one" class="some_class" data="{item_id: 1, item_label: 'Label'}">This is a p</p>
+ * @before $.metadata.setType("attr", "data")
+ * @after $("#one").metadata().item_id == 1; $("#one").metadata().item_label == "Label"
+ * @desc Reads metadata from a "data" attribute
+ *
+ * @example <p id="one" class="some_class"><script>{item_id: 1, item_label: 'Label'}</script>This is a p</p>
+ * @before $.metadata.setType("elem", "script")
+ * @after $("#one").metadata().item_id == 1; $("#one").metadata().item_label == "Label"
+ * @desc Reads metadata from a nested script element
+ *
+ * @param String type The encoding type
+ * @param String name The name of the attribute to be used to get metadata (optional)
+ * @cat Plugins/Metadata
+ * @descr Sets the type of encoding to be used when loading metadata for the first time
+ * @type undefined
+ * @see metadata()
+ */
+
+(function($) {
+
+$.extend({
+ metadata : {
+ defaults : {
+ type: 'class',
+ name: 'metadata',
+ cre: /({.*})/,
+ single: 'metadata'
+ },
+ setType: function( type, name ){
+ this.defaults.type = type;
+ this.defaults.name = name;
+ },
+ get: function( elem, opts ){
+ var settings = $.extend({},this.defaults,opts);
+ // check for empty string in single property
+ if ( !settings.single.length ) settings.single = 'metadata';
+
+ var data = $.data(elem, settings.single);
+ // returned cached data if it already exists
+ if ( data ) return data;
+
+ data = "{}";
+
+ if ( settings.type == "class" ) {
+ var m = settings.cre.exec( elem.className );
+ if ( m )
+ data = m[1];
+ } else if ( settings.type == "elem" ) {
+ if( !elem.getElementsByTagName )
+ return undefined;
+ var e = elem.getElementsByTagName(settings.name);
+ if ( e.length )
+ data = $.trim(e[0].innerHTML);
+ } else if ( elem.getAttribute != undefined ) {
+ var attr = elem.getAttribute( settings.name );
+ if ( attr )
+ data = attr;
+ }
+
+ if ( data.indexOf( '{' ) <0 )
+ data = "{" + data + "}";
+
+ data = eval("(" + data + ")");
+
+ $.data( elem, settings.single, data );
+ return data;
+ }
+ }
+});
+
+/**
+ * Returns the metadata object for the first member of the jQuery object.
+ *
+ * @name metadata
+ * @descr Returns element's metadata object
+ * @param Object opts An object contianing settings to override the defaults
+ * @type jQuery
+ * @cat Plugins/Metadata
+ */
+$.fn.metadata = function( opts ){
+ return $.metadata.get( this[0], opts );
+};
+
+})(jQuery); \ No newline at end of file
diff --git a/bug/bug/jquery-validation-1.8.1/lib/jquery.mockjax.js b/bug/bug/jquery-validation-1.8.1/lib/jquery.mockjax.js
new file mode 100644
index 0000000..50ace60
--- /dev/null
+++ b/bug/bug/jquery-validation-1.8.1/lib/jquery.mockjax.js
@@ -0,0 +1,382 @@
+/*!
+ * MockJax - jQuery Plugin to Mock Ajax requests
+ *
+ * Version: 1.4.0
+ * Released: 2011-02-04
+ * Source: http://github.com/appendto/jquery-mockjax
+ * Docs: http://enterprisejquery.com/2010/07/mock-your-ajax-requests-with-mockjax-for-rapid-development
+ * Plugin: mockjax
+ * Author: Jonathan Sharp (http://jdsharp.com)
+ * License: MIT,GPL
+ *
+ * Copyright (c) 2010 appendTo LLC.
+ * Dual licensed under the MIT or GPL licenses.
+ * http://appendto.com/open-source-licenses
+ */
+(function($) {
+ var _ajax = $.ajax,
+ mockHandlers = [];
+
+ function parseXML(xml) {
+ if ( window['DOMParser'] == undefined && window.ActiveXObject ) {
+ DOMParser = function() { };
+ DOMParser.prototype.parseFromString = function( xmlString ) {
+ var doc = new ActiveXObject('Microsoft.XMLDOM');
+ doc.async = 'false';
+ doc.loadXML( xmlString );
+ return doc;
+ };
+ }
+
+ try {
+ var xmlDoc = ( new DOMParser() ).parseFromString( xml, 'text/xml' );
+ if ( $.isXMLDoc( xmlDoc ) ) {
+ var err = $('parsererror', xmlDoc);
+ if ( err.length == 1 ) {
+ throw('Error: ' + $(xmlDoc).text() );
+ }
+ } else {
+ throw('Unable to parse XML');
+ }
+ } catch( e ) {
+ var msg = ( e.name == undefined ? e : e.name + ': ' + e.message );
+ $(document).trigger('xmlParseError', [ msg ]);
+ return undefined;
+ }
+ return xmlDoc;
+ }
+
+ $.extend({
+ ajax: function(origSettings) {
+ var s = jQuery.extend(true, {}, jQuery.ajaxSettings, origSettings),
+ mock = false;
+ // Iterate over our mock handlers (in registration order) until we find
+ // one that is willing to intercept the request
+ $.each(mockHandlers, function(k, v) {
+ if ( !mockHandlers[k] ) {
+ return;
+ }
+ var m = null;
+ // If the mock was registered with a function, let the function decide if we
+ // want to mock this request
+ if ( $.isFunction(mockHandlers[k]) ) {
+ m = mockHandlers[k](s);
+ } else {
+ m = mockHandlers[k];
+ // Inspect the URL of the request and check if the mock handler's url
+ // matches the url for this ajax request
+ if ( $.isFunction(m.url.test) ) {
+ // The user provided a regex for the url, test it
+ if ( !m.url.test( s.url ) ) {
+ m = null;
+ }
+ } else {
+ // Look for a simple wildcard '*' or a direct URL match
+ var star = m.url.indexOf('*');
+ if ( ( m.url != '*' && m.url != s.url && star == -1 ) ||
+ ( star > -1 && m.url.substr(0, star) != s.url.substr(0, star) ) ) {
+ // The url we tested did not match the wildcard *
+ m = null;
+ }
+ }
+ if ( m ) {
+ // Inspect the data submitted in the request (either POST body or GET query string)
+ if ( m.data && s.data ) {
+ var identical = false;
+ // Deep inspect the identity of the objects
+ (function ident(mock, live) {
+ // Test for situations where the data is a querystring (not an object)
+ if (typeof live === 'string') {
+ // Querystring may be a regex
+ identical = $.isFunction( mock.test ) ? mock.test(live) : mock == live;
+ return identical;
+ }
+ $.each(mock, function(k, v) {
+ if ( live[k] === undefined ) {
+ identical = false;
+ return false;
+ } else {
+ identical = true;
+ if ( typeof live[k] == 'object' ) {
+ return ident(mock[k], live[k]);
+ } else {
+ if ( $.isFunction( mock[k].test ) ) {
+ identical = mock[k].test(live[k]);
+ } else {
+ identical = ( mock[k] == live[k] );
+ }
+ return identical;
+ }
+ }
+ });
+ })(m.data, s.data);
+ // They're not identical, do not mock this request
+ if ( identical == false ) {
+ m = null;
+ }
+ }
+ // Inspect the request type
+ if ( m && m.type && m.type != s.type ) {
+ // The request type doesn't match (GET vs. POST)
+ m = null;
+ }
+ }
+ }
+ if ( m ) {
+ mock = true;
+
+ // Handle console logging
+ var c = $.extend({}, $.mockjaxSettings, m);
+ if ( c.log && $.isFunction(c.log) ) {
+ c.log('MOCK ' + s.type.toUpperCase() + ': ' + s.url, $.extend({}, s));
+ }
+
+ var jsre = /=\?(&|$)/, jsc = (new Date()).getTime();
+
+ // Handle JSONP Parameter Callbacks, we need to replicate some of the jQuery core here
+ // because there isn't an easy hook for the cross domain script tag of jsonp
+ if ( s.dataType === "jsonp" ) {
+ if ( s.type.toUpperCase() === "GET" ) {
+ if ( !jsre.test( s.url ) ) {
+ s.url += (rquery.test( s.url ) ? "&" : "?") + (s.jsonp || "callback") + "=?";
+ }
+ } else if ( !s.data || !jsre.test(s.data) ) {
+ s.data = (s.data ? s.data + "&" : "") + (s.jsonp || "callback") + "=?";
+ }
+ s.dataType = "json";
+ }
+
+ // Build temporary JSONP function
+ if ( s.dataType === "json" && (s.data && jsre.test(s.data) || jsre.test(s.url)) ) {
+ jsonp = s.jsonpCallback || ("jsonp" + jsc++);
+
+ // Replace the =? sequence both in the query string and the data
+ if ( s.data ) {
+ s.data = (s.data + "").replace(jsre, "=" + jsonp + "$1");
+ }
+
+ s.url = s.url.replace(jsre, "=" + jsonp + "$1");
+
+ // We need to make sure
+ // that a JSONP style response is executed properly
+ s.dataType = "script";
+
+ // Handle JSONP-style loading
+ window[ jsonp ] = window[ jsonp ] || function( tmp ) {
+ data = tmp;
+ success();
+ complete();
+ // Garbage collect
+ window[ jsonp ] = undefined;
+
+ try {
+ delete window[ jsonp ];
+ } catch(e) {}
+
+ if ( head ) {
+ head.removeChild( script );
+ }
+ };
+ }
+
+ var rurl = /^(\w+:)?\/\/([^\/?#]+)/,
+ parts = rurl.exec( s.url ),
+ remote = parts && (parts[1] && parts[1] !== location.protocol || parts[2] !== location.host);
+
+ // Test if we are going to create a script tag (if so, intercept & mock)
+ if ( s.dataType === "script" && s.type.toUpperCase() === "GET" && remote ) {
+ // Synthesize the mock request for adding a script tag
+ var callbackContext = origSettings && origSettings.context || s;
+
+ function success() {
+ // If a local callback was specified, fire it and pass it the data
+ if ( s.success ) {
+ s.success.call( callbackContext, ( m.response ? m.response.toString() : m.responseText || ''), status, {} );
+ }
+
+ // Fire the global callback
+ if ( s.global ) {
+ trigger( "ajaxSuccess", [{}, s] );
+ }
+ }
+
+ function complete() {
+ // Process result
+ if ( s.complete ) {
+ s.complete.call( callbackContext, {} , status );
+ }
+
+ // The request was completed
+ if ( s.global ) {
+ trigger( "ajaxComplete", [{}, s] );
+ }
+
+ // Handle the global AJAX counter
+ if ( s.global && ! --jQuery.active ) {
+ jQuery.event.trigger( "ajaxStop" );
+ }
+ }
+
+ function trigger(type, args) {
+ (s.context ? jQuery(s.context) : jQuery.event).trigger(type, args);
+ }
+
+ if ( m.response && $.isFunction(m.response) ) {
+ m.response(origSettings);
+ } else {
+ $.globalEval(m.responseText);
+ }
+ success();
+ complete();
+ return false;
+ }
+ mock = _ajax.call($, $.extend(true, {}, origSettings, {
+ // Mock the XHR object
+ xhr: function() {
+ // Extend with our default mockjax settings
+ m = $.extend({}, $.mockjaxSettings, m);
+
+ if ( m.contentType ) {
+ m.headers['content-type'] = m.contentType;
+ }
+
+ // Return our mock xhr object
+ return {
+ status: m.status,
+ readyState: 1,
+ open: function() { },
+ send: function() {
+ // This is a substitute for < 1.4 which lacks $.proxy
+ var process = (function(that) {
+ return function() {
+ return (function() {
+ // The request has returned
+ this.status = m.status;
+ this.readyState = 4;
+
+ // We have an executable function, call it to give
+ // the mock handler a chance to update it's data
+ if ( $.isFunction(m.response) ) {
+ m.response(origSettings);
+ }
+ // Copy over our mock to our xhr object before passing control back to
+ // jQuery's onreadystatechange callback
+ if ( s.dataType == 'json' && ( typeof m.responseText == 'object' ) ) {
+ this.responseText = JSON.stringify(m.responseText);
+ } else if ( s.dataType == 'xml' ) {
+ if ( typeof m.responseXML == 'string' ) {
+ this.responseXML = parseXML(m.responseXML);
+ } else {
+ this.responseXML = m.responseXML;
+ }
+ } else {
+ this.responseText = m.responseText;
+ }
+ // jQuery < 1.4 doesn't have onreadystate change for xhr
+ if ( $.isFunction(this.onreadystatechange) ) {
+ this.onreadystatechange( m.isTimeout ? 'timeout' : undefined );
+ }
+ }).apply(that);
+ };
+ })(this);
+
+ if ( m.proxy ) {
+ // We're proxying this request and loading in an external file instead
+ _ajax({
+ global: false,
+ url: m.proxy,
+ type: m.proxyType,
+ data: m.data,
+ dataType: s.dataType,
+ complete: function(xhr, txt) {
+ m.responseXML = xhr.responseXML;
+ m.responseText = xhr.responseText;
+ this.responseTimer = setTimeout(process, m.responseTime || 0);
+ }
+ });
+ } else {
+ // type == 'POST' || 'GET' || 'DELETE'
+ if ( s.async === false ) {
+ // TODO: Blocking delay
+ process();
+ } else {
+ this.responseTimer = setTimeout(process, m.responseTime || 50);
+ }
+ }
+ },
+ abort: function() {
+ clearTimeout(this.responseTimer);
+ },
+ setRequestHeader: function() { },
+ getResponseHeader: function(header) {
+ // 'Last-modified', 'Etag', 'content-type' are all checked by jQuery
+ if ( m.headers && m.headers[header] ) {
+ // Return arbitrary headers
+ return m.headers[header];
+ } else if ( header.toLowerCase() == 'last-modified' ) {
+ return m.lastModified || (new Date()).toString();
+ } else if ( header.toLowerCase() == 'etag' ) {
+ return m.etag || '';
+ } else if ( header.toLowerCase() == 'content-type' ) {
+ return m.contentType || 'text/plain';
+ }
+ },
+ getAllResponseHeaders: function() {
+ var headers = '';
+ $.each(m.headers, function(k, v) {
+ headers += k + ': ' + v + "\n";
+ });
+ return headers;
+ }
+ };
+ }
+ }));
+ return false;
+ }
+ });
+ // We don't have a mock request, trigger a normal request
+ if ( !mock ) {
+ return _ajax.apply($, arguments);
+ } else {
+ return mock;
+ }
+ }
+ });
+
+ $.mockjaxSettings = {
+ //url: null,
+ //type: 'GET',
+ log: function(msg) {
+ window['console'] && window.console.log && window.console.log(msg);
+ },
+ status: 200,
+ responseTime: 500,
+ isTimeout: false,
+ contentType: 'text/plain',
+ response: '',
+ responseText: '',
+ responseXML: '',
+ proxy: '',
+ proxyType: 'GET',
+
+ lastModified: null,
+ etag: '',
+ headers: {
+ etag: 'IJF@H#@923uf8023hFO@I#H#',
+ 'content-type' : 'text/plain'
+ }
+ };
+
+ $.mockjax = function(settings) {
+ var i = mockHandlers.length;
+ mockHandlers[i] = settings;
+ return i;
+ };
+ $.mockjaxClear = function(i) {
+ if ( arguments.length == 1 ) {
+ mockHandlers[i] = null;
+ } else {
+ mockHandlers = [];
+ }
+ };
+})(jQuery); \ No newline at end of file
diff --git a/bug/bug/jquery-validation-1.8.1/localization/messages_ar.js b/bug/bug/jquery-validation-1.8.1/localization/messages_ar.js
new file mode 100644
index 0000000..71e97a8
--- /dev/null
+++ b/bug/bug/jquery-validation-1.8.1/localization/messages_ar.js
@@ -0,0 +1,24 @@
+/*
+ * Translated default messages for the jQuery validation plugin into arabic.
+ * Locale: AR
+ */
+jQuery.extend(jQuery.validator.messages, {
+ required: "هذا الحقل إلزامي",
+ remote: "يرجى تصحيح هذا الحقل للمتابعة",
+ email: "رجاء إدخال عنوان بريد إلكتروني صحيح",
+ url: "رجاء إدخال عنوان موقع إلكتروني صحيح",
+ date: "رجاء إدخال تاريخ صحيح",
+ dateISO: "رجاء إدخال تاريخ صحيح (ISO)",
+ number: "رجاء إدخال عدد بطريقة صحيحة",
+ digits: "رجاء إدخال أرقام فقط",
+ creditcard: "رجاء إدخال رقم بطاقة ائتمان صحيح",
+ equalTo: "رجاء إدخال نفس القيمة",
+ accept: "رجاء إدخال ملف بامتداد موافق عليه",
+ maxlength: jQuery.validator.format("الحد الأقصى لعدد الحروف هو {0}"),
+ minlength: jQuery.validator.format("الحد الأدنى لعدد الحروف هو {0}"),
+ rangelength: jQuery.validator.format("عدد الحروف يجب أن يكون بين {0} و {1}"),
+ range: jQuery.validator.format("رجاء إدخال عدد قيمته بين {0} و {1}"),
+ max: jQuery.validator.format("رجاء إدخال عدد أقل من أو يساوي (0}"),
+ min: jQuery.validator.format("رجاء إدخال عدد أكبر من أو يساوي (0}")
+});
+
diff --git a/bug/bug/jquery-validation-1.8.1/localization/messages_bg.js b/bug/bug/jquery-validation-1.8.1/localization/messages_bg.js
new file mode 100644
index 0000000..9232f72
--- /dev/null
+++ b/bug/bug/jquery-validation-1.8.1/localization/messages_bg.js
@@ -0,0 +1,23 @@
+/*
+ * Translated default messages for the jQuery validation plugin.
+ * Locale: BG
+ */
+jQuery.extend(jQuery.validator.messages, {
+ required: "Полето е задължително.",
+ remote: "Моля, въведете правилната стойност.",
+ email: "Моля, въведете валиден email.",
+ url: "Моля, въведете валидно URL.",
+ date: "Моля, въведете валидна дата.",
+ dateISO: "Моля, въведете валидна дата (ISO).",
+ number: "Моля, въведете валиден номер.",
+ digits: "Моля, въведете само цифри",
+ creditcard: "Моля, въведете валиден номер на кредитна карта.",
+ equalTo: "Моля, въведете същата стойност отново.",
+ accept: "Моля, въведете стойност с валидно разширение.",
+ maxlength: $.validator.format("Моля, въведете повече от {0} символа."),
+ minlength: $.validator.format("Моля, въведете поне {0} символа."),
+ rangelength: $.validator.format("Моля, въведете стойност с дължина между {0} и {1} символа."),
+ range: $.validator.format("Моля, въведете стойност между {0} и {1}."),
+ max: $.validator.format("Моля, въведете стойност по-малка или равна на {0}."),
+ min: $.validator.format("Моля, въведете стойност по-голяма или равна на {0}.")
+}); \ No newline at end of file
diff --git a/bug/bug/jquery-validation-1.8.1/localization/messages_ca.js b/bug/bug/jquery-validation-1.8.1/localization/messages_ca.js
new file mode 100644
index 0000000..f823534
--- /dev/null
+++ b/bug/bug/jquery-validation-1.8.1/localization/messages_ca.js
@@ -0,0 +1,23 @@
+/*
+ * Translated default messages for the jQuery validation plugin.
+ * Locale: CA
+ */
+jQuery.extend(jQuery.validator.messages, {
+ required: "Aquest camp és obligatori.",
+ remote: "Si us plau, omple aquest camp.",
+ email: "Si us plau, escriu una adreça de correu-e vàlida",
+ url: "Si us plau, escriu una URL vàlida.",
+ date: "Si us plau, escriu una data vàlida.",
+ dateISO: "Si us plau, escriu una data (ISO) vàlida.",
+ number: "Si us plau, escriu un número enter vàlid.",
+ digits: "Si us plau, escriu només dígits.",
+ creditcard: "Si us plau, escriu un número de tarjeta vàlid.",
+ equalTo: "Si us plau, escriu el maateix valor de nou.",
+ accept: "Si us plau, escriu un valor amb una extensió acceptada.",
+ maxlength: jQuery.validator.format("Si us plau, no escriguis més de {0} caracters."),
+ minlength: jQuery.validator.format("Si us plau, no escriguis menys de {0} caracters."),
+ rangelength: jQuery.validator.format("Si us plau, escriu un valor entre {0} i {1} caracters."),
+ range: jQuery.validator.format("Si us plau, escriu un valor entre {0} i {1}."),
+ max: jQuery.validator.format("Si us plau, escriu un valor menor o igual a {0}."),
+ min: jQuery.validator.format("Si us plau, escriu un valor major o igual a {0}.")
+}); \ No newline at end of file
diff --git a/bug/bug/jquery-validation-1.8.1/localization/messages_cn.js b/bug/bug/jquery-validation-1.8.1/localization/messages_cn.js
new file mode 100644
index 0000000..8415f4a
--- /dev/null
+++ b/bug/bug/jquery-validation-1.8.1/localization/messages_cn.js
@@ -0,0 +1,23 @@
+/*
+ * Translated default messages for the jQuery validation plugin.
+ * Locale: CN
+ */
+jQuery.extend(jQuery.validator.messages, {
+ required: "必选字段",
+ remote: "请修正该字段",
+ email: "请输入正确格式的电子邮件",
+ url: "请输入合法的网址",
+ date: "请输入合法的日期",
+ dateISO: "请输入合法的日期 (ISO).",
+ number: "请输入合法的数字",
+ digits: "只能输入整数",
+ creditcard: "请输入合法的信用卡号",
+ equalTo: "请再次输入相同的值",
+ accept: "请输入拥有合法后缀名的字符串",
+ maxlength: jQuery.validator.format("请输入一个长度最多是 {0} 的字符串"),
+ minlength: jQuery.validator.format("请输入一个长度最少是 {0} 的字符串"),
+ rangelength: jQuery.validator.format("请输入一个长度介于 {0} 和 {1} 之间的字符串"),
+ range: jQuery.validator.format("请输入一个介于 {0} 和 {1} 之间的值"),
+ max: jQuery.validator.format("请输入一个最大为 {0} 的值"),
+ min: jQuery.validator.format("请输入一个最小为 {0} 的值")
+}); \ No newline at end of file
diff --git a/bug/bug/jquery-validation-1.8.1/localization/messages_cs.js b/bug/bug/jquery-validation-1.8.1/localization/messages_cs.js
new file mode 100644
index 0000000..ab99819
--- /dev/null
+++ b/bug/bug/jquery-validation-1.8.1/localization/messages_cs.js
@@ -0,0 +1,23 @@
+/*
+ * Translated default messages for the jQuery validation plugin.
+ * Locale: CS
+ */
+jQuery.extend(jQuery.validator.messages, {
+ required: "Tento údaj je povinný.",
+ remote: "Prosím, opravte tento údaj.",
+ email: "Prosím, zadejte platný e-mail.",
+ url: "Prosím, zadejte platné URL.",
+ date: "Prosím, zadejte platné datum.",
+ dateISO: "Prosím, zadejte platné datum (ISO).",
+ number: "Prosím, zadejte číslo.",
+ digits: "Prosím, zadávejte pouze číslice.",
+ creditcard: "Prosím, zadejte číslo kreditní karty.",
+ equalTo: "Prosím, zadejte znovu stejnou hodnotu.",
+ accept: "Prosím, zadejte soubor se správnou příponou.",
+ maxlength: jQuery.validator.format("Prosím, zadejte nejvíce {0} znaků."),
+ minlength: jQuery.validator.format("Prosím, zadejte nejméně {0} znaků."),
+ rangelength: jQuery.validator.format("Prosím, zadejte od {0} do {1} znaků."),
+ range: jQuery.validator.format("Prosím, zadejte hodnotu od {0} do {1}."),
+ max: jQuery.validator.format("Prosím, zadejte hodnotu menší nebo rovnu {0}."),
+ min: jQuery.validator.format("Prosím, zadejte hodnotu větší nebo rovnu {0}.")
+});
diff --git a/bug/bug/jquery-validation-1.8.1/localization/messages_da.js b/bug/bug/jquery-validation-1.8.1/localization/messages_da.js
new file mode 100644
index 0000000..1f729e0
--- /dev/null
+++ b/bug/bug/jquery-validation-1.8.1/localization/messages_da.js
@@ -0,0 +1,20 @@
+/*
+ * Translated default messages for the jQuery validation plugin.
+ * Locale: DA
+ */
+jQuery.extend(jQuery.validator.messages, {
+ required: "Dette felt er påkrævet.",
+ maxlength: jQuery.validator.format("Indtast højst {0} tegn."),
+ minlength: jQuery.validator.format("Indtast mindst {0} tegn."),
+ rangelength: jQuery.validator.format("Indtast mindst {0} og højst {1} tegn."),
+ email: "Indtast en gyldig email-adresse.",
+ url: "Indtast en gyldig URL.",
+ date: "Indtast en gyldig dato.",
+ number: "Indtast et tal.",
+ digits: "Indtast kun cifre.",
+ equalTo: "Indtast den samme værdi igen.",
+ range: jQuery.validator.format("Angiv en værdi mellem {0} og {1}."),
+ max: jQuery.validator.format("Angiv en værdi der højst er {0}."),
+ min: jQuery.validator.format("Angiv en værdi der mindst er {0}."),
+ creditcard: "Indtast et gyldigt kreditkortnummer."
+});
diff --git a/bug/bug/jquery-validation-1.8.1/localization/messages_de.js b/bug/bug/jquery-validation-1.8.1/localization/messages_de.js
new file mode 100644
index 0000000..0c03e30
--- /dev/null
+++ b/bug/bug/jquery-validation-1.8.1/localization/messages_de.js
@@ -0,0 +1,20 @@
+/*
+ * Translated default messages for the jQuery validation plugin.
+ * Locale: DE
+ */
+jQuery.extend(jQuery.validator.messages, {
+ required: "Dieses Feld ist ein Pflichtfeld.",
+ maxlength: jQuery.validator.format("Geben Sie bitte maximal {0} Zeichen ein."),
+ minlength: jQuery.validator.format("Geben Sie bitte mindestens {0} Zeichen ein."),
+ rangelength: jQuery.validator.format("Geben Sie bitte mindestens {0} und maximal {1} Zeichen ein."),
+ email: "Geben Sie bitte eine gültige E-Mail Adresse ein.",
+ url: "Geben Sie bitte eine gültige URL ein.",
+ date: "Bitte geben Sie ein gültiges Datum ein.",
+ number: "Geben Sie bitte eine Nummer ein.",
+ digits: "Geben Sie bitte nur Ziffern ein.",
+ equalTo: "Bitte denselben Wert wiederholen.",
+ range: jQuery.validator.format("Geben Sie bitten einen Wert zwischen {0} und {1}."),
+ max: jQuery.validator.format("Geben Sie bitte einen Wert kleiner oder gleich {0} ein."),
+ min: jQuery.validator.format("Geben Sie bitte einen Wert größer oder gleich {0} ein."),
+ creditcard: "Geben Sie bitte ein gültige Kreditkarten-Nummer ein."
+}); \ No newline at end of file
diff --git a/bug/bug/jquery-validation-1.8.1/localization/messages_el.js b/bug/bug/jquery-validation-1.8.1/localization/messages_el.js
new file mode 100644
index 0000000..52607a5
--- /dev/null
+++ b/bug/bug/jquery-validation-1.8.1/localization/messages_el.js
@@ -0,0 +1,24 @@
+/*
+ * Translated default messages for the jQuery validation plugin.
+ * Locale: EL
+ */
+jQuery.extend(jQuery.validator.messages, {
+ required: "Αυτό το πεδίο είναι υποχρεωτικό.",
+ remote: "Παρακαλώ διορθώστε αυτό το πεδίο.",
+ email: "Παρακαλώ εισάγετε μια έγκυρη διεύθυνση email.",
+ url: "Παρακαλώ εισάγετε ένα έγκυρο URL.",
+ date: "Παρακαλώ εισάγετε μια έγκυρη ημερομηνία.",
+ dateISO: "Παρακαλώ εισάγετε μια έγκυρη ημερομηνία (ISO).",
+ number: "Παρακαλώ εισάγετε έναν έγκυρο αριθμό.",
+ digits: "Παρακαλώ εισάγετε μόνο αριθμητικά ψηφία.",
+ creditcard: "Παρακαλώ εισάγετε έναν έγκυρο αριθμό πιστωτικής κάρτας.",
+ equalTo: "Παρακαλώ εισάγετε την ίδια τιμή ξανά.",
+ accept: "Παρακαλώ εισάγετε μια τιμή με έγκυρη επέκταση αρχείου.",
+ maxlength: $.validator.format("Παρακαλώ εισάγετε μέχρι και {0} χαρακτήρες."),
+ minlength: $.validator.format("Παρακαλώ εισάγετε τουλάχιστον {0} χαρακτήρες."),
+ rangelength: $.validator.format("Παρακαλώ εισάγετε μια τιμή με μήκος μεταξύ {0} και {1} χαρακτήρων."),
+ range: $.validator.format("Παρακαλώ εισάγετε μια τιμή μεταξύ {0} και {1}."),
+ max: $.validator.format("Παρακαλώ εισάγετε μια τιμή μικρότερη ή ίση του {0}."),
+ min: $.validator.format("Παρακαλώ εισάγετε μια τιμή μεγαλύτερη ή ίση του {0}.")
+});
+
diff --git a/bug/bug/jquery-validation-1.8.1/localization/messages_es.js b/bug/bug/jquery-validation-1.8.1/localization/messages_es.js
new file mode 100644
index 0000000..b9a2414
--- /dev/null
+++ b/bug/bug/jquery-validation-1.8.1/localization/messages_es.js
@@ -0,0 +1,23 @@
+/*
+ * Translated default messages for the jQuery validation plugin.
+ * Locale: ES
+ */
+jQuery.extend(jQuery.validator.messages, {
+ required: "Este campo es obligatorio.",
+ remote: "Por favor, rellena este campo.",
+ email: "Por favor, escribe una dirección de correo válida",
+ url: "Por favor, escribe una URL válida.",
+ date: "Por favor, escribe una fecha válida.",
+ dateISO: "Por favor, escribe una fecha (ISO) válida.",
+ number: "Por favor, escribe un número entero válido.",
+ digits: "Por favor, escribe sólo dígitos.",
+ creditcard: "Por favor, escribe un número de tarjeta válido.",
+ equalTo: "Por favor, escribe el mismo valor de nuevo.",
+ accept: "Por favor, escribe un valor con una extensión aceptada.",
+ maxlength: jQuery.validator.format("Por favor, no escribas más de {0} caracteres."),
+ minlength: jQuery.validator.format("Por favor, no escribas menos de {0} caracteres."),
+ rangelength: jQuery.validator.format("Por favor, escribe un valor entre {0} y {1} caracteres."),
+ range: jQuery.validator.format("Por favor, escribe un valor entre {0} y {1}."),
+ max: jQuery.validator.format("Por favor, escribe un valor menor o igual a {0}."),
+ min: jQuery.validator.format("Por favor, escribe un valor mayor o igual a {0}.")
+}); \ No newline at end of file
diff --git a/bug/bug/jquery-validation-1.8.1/localization/messages_fa.js b/bug/bug/jquery-validation-1.8.1/localization/messages_fa.js
new file mode 100644
index 0000000..1ea531e
--- /dev/null
+++ b/bug/bug/jquery-validation-1.8.1/localization/messages_fa.js
@@ -0,0 +1,23 @@
+/*
+ * Translated default messages for the jQuery validation plugin.
+ * Locale: FA
+ */
+jQuery.extend(jQuery.validator.messages, {
+ required: "تکمیل این فیلد اجباری است.",
+ remote: "لطفا این فیلد را تصحیح کنید.",
+ email: ".لطفا یک ایمیل صحیح وارد کنید",
+ url: "لطفا آدرس صحیح وارد کنید.",
+ date: "لطفا یک تاریخ صحیح وارد کنید",
+ dateISO: "لطفا تاریخ صحیح وارد کنید (ISO).",
+ number: "لطفا عدد صحیح وارد کنید.",
+ digits: "لطفا تنها رقم وارد کنید",
+ creditcard: "لطفا کریدیت کارت صحیح وارد کنید.",
+ equalTo: "لطفا مقدار برابری وارد کنید",
+ accept: "لطفا مقداری وارد کنید که ",
+ maxlength: jQuery.validator.format("لطفا بیشتر از {0} حرف وارد نکنید."),
+ minlength: jQuery.validator.format("لطفا کمتر از {0} حرف وارد نکنید."),
+ rangelength: jQuery.validator.format("لطفا مقداری بین {0} تا {1} حرف وارد کنید."),
+ range: jQuery.validator.format("لطفا مقداری بین {0} تا {1} حرف وارد کنید."),
+ max: jQuery.validator.format("لطفا مقداری کمتر از {0} حرف وارد کنید."),
+ min: jQuery.validator.format("لطفا مقداری بیشتر از {0} حرف وارد کنید.")
+});
diff --git a/bug/bug/jquery-validation-1.8.1/localization/messages_fi.js b/bug/bug/jquery-validation-1.8.1/localization/messages_fi.js
new file mode 100644
index 0000000..eb47369
--- /dev/null
+++ b/bug/bug/jquery-validation-1.8.1/localization/messages_fi.js
@@ -0,0 +1,21 @@
+/*
+ * Translated default messages for the jQuery validation plugin.
+ * Locale: FI
+ */
+jQuery.extend(jQuery.validator.messages, {
+ required: "T&auml;m&auml; kentt&auml; on pakollinen.",
+ maxlength: jQuery.validator.format("Voit sy&ouml;tt&auml;&auml; enint&auml;&auml;n {0} merkki&auml;."),
+ minlength: jQuery.validator.format("V&auml;hint&auml;&auml;n {0} merkki&auml;."),
+ rangelength: jQuery.validator.format("Sy&ouml;t&auml; v&auml;hint&auml;&auml;n {0} ja enint&auml;&auml;n {1} merkki&auml;."),
+ email: "Sy&ouml:t&auml; oikea s&auml;hk&ouml;postiosoite.",
+ url: "Sy&ouml;t&auml; oikea URL osoite.",
+ date: "Sy&ouml;t&auml; oike p&auml;iv&auml;m&auml;&auml;r&auml;.",
+ dateISO: "Sy&ouml;t&auml; oike p&auml;iv&auml;m&auml;&auml;r&auml; (VVVV-MM-DD).",
+ number: "Sy&ouml;t&auml; numero.",
+ digits: "Sy&ouml;t&auml; pelk&auml;st&auml;&auml;n numeroita.",
+ equalTo: "Sy&ouml;t&auml; sama arvo uudestaan.",
+ range: jQuery.validator.format("Sy&ouml;t&auml; arvo {0} ja {1} v&auml;lilt&auml;."),
+ max: jQuery.validator.format("Sy&ouml;t&auml; arvo joka on yht&auml; suuri tai suurempi kuin {0}."),
+ min: jQuery.validator.format("Sy&ouml;t&auml; arvo joka on pienempi tai yht&auml; suuri kuin {0}."),
+ creditcard: "Sy&ouml;t&auml; voimassa oleva luottokorttinumero."
+}); \ No newline at end of file
diff --git a/bug/bug/jquery-validation-1.8.1/localization/messages_fr.js b/bug/bug/jquery-validation-1.8.1/localization/messages_fr.js
new file mode 100644
index 0000000..f9e1340
--- /dev/null
+++ b/bug/bug/jquery-validation-1.8.1/localization/messages_fr.js
@@ -0,0 +1,23 @@
+/*
+ * Translated default messages for the jQuery validation plugin.
+ * Locale: FR
+ */
+jQuery.extend(jQuery.validator.messages, {
+ required: "Ce champ est requis.",
+ remote: "Veuillez remplir ce champ pour continuer.",
+ email: "Veuillez entrer une adresse email valide.",
+ url: "Veuillez entrer une URL valide.",
+ date: "Veuillez entrer une date valide.",
+ dateISO: "Veuillez entrer une date valide (ISO).",
+ number: "Veuillez entrer un nombre valide.",
+ digits: "Veuillez entrer (seulement) une valeur numérique.",
+ creditcard: "Veuillez entrer un numéro de carte de crédit valide.",
+ equalTo: "Veuillez entrer une nouvelle fois la même valeur.",
+ accept: "Veuillez entrer une valeur avec une extension valide.",
+ maxlength: jQuery.validator.format("Veuillez ne pas entrer plus de {0} caractères."),
+ minlength: jQuery.validator.format("Veuillez entrer au moins {0} caractères."),
+ rangelength: jQuery.validator.format("Veuillez entrer entre {0} et {1} caractères."),
+ range: jQuery.validator.format("Veuillez entrer une valeur entre {0} et {1}."),
+ max: jQuery.validator.format("Veuillez entrer une valeur inférieure ou égale à {0}."),
+ min: jQuery.validator.format("Veuillez entrer une valeur supérieure ou égale à {0}.")
+}); \ No newline at end of file
diff --git a/bug/bug/jquery-validation-1.8.1/localization/messages_ge.js b/bug/bug/jquery-validation-1.8.1/localization/messages_ge.js
new file mode 100644
index 0000000..5c3ee68
--- /dev/null
+++ b/bug/bug/jquery-validation-1.8.1/localization/messages_ge.js
@@ -0,0 +1,23 @@
+/*
+ * Translated default messages for the jQuery validation plugin.
+ * Locale: GE
+ */
+jQuery.extend(jQuery.validator.messages, {
+ required: "ამ ველის შევსება აუცილებელია.",
+ remote: "გთხოვთ მიუთითოთ სწორი მნიშვნელობა.",
+ email: "გთხოვთ მიუთითოთ ელ-ფოსტის კორექტული მისამართი.",
+ url: "გთხოვთ მიუთითოთ კორექტული URL.",
+ date: "გთხოვთ მიუთითოთ კორექტული თარიღი.",
+ dateISO: "გთხოვთ მიუთითოთ კორექტული თარიღი ISO ფორმატში.",
+ number: "გთხოვთ მიუთითოთ ციფრი.",
+ digits: "გთხოვთ მიუთითოთ მხოლოდ ციფრები.",
+ creditcard: "გთხოვთ მიუთითოთ საკრედიტო ბარათის კორექტული ნომერი.",
+ equalTo: "გთხოვთ მიუთითოთ ასეთივე მნიშვნელობა კიდევ ერთხელ.",
+ accept: "გთხოვთ აირჩიოთ ფაილი კორექტული გაფართოებით.",
+ maxlength: jQuery.validator.format("დასაშვებია არაუმეტეს {0} სიმბოლო."),
+ minlength: jQuery.validator.format("აუცილებელია შეიყვანოთ მინიმუმ {0} სიმბოლო."),
+ rangelength: jQuery.validator.format("ტექსტში სიმბოლოების რაოდენობა უნდა იყოს {0}-დან {1}-მდე."),
+ range: jQuery.validator.format("გთხოვთ შეიყვანოთ ციფრი {0}-დან {1}-მდე."),
+ max: jQuery.validator.format("გთხოვთ შეიყვანოთ ციფრი რომელიც ნაკლებია ან უდრის {0}-ს."),
+ min: jQuery.validator.format("გთხოვთ შეიყვანოთ ციფრი რომელიც მეტია ან უდრის {0}-ს.")
+}); \ No newline at end of file
diff --git a/bug/bug/jquery-validation-1.8.1/localization/messages_he.js b/bug/bug/jquery-validation-1.8.1/localization/messages_he.js
new file mode 100644
index 0000000..c89eafe
--- /dev/null
+++ b/bug/bug/jquery-validation-1.8.1/localization/messages_he.js
@@ -0,0 +1,23 @@
+/*
+ * Translated default messages for the jQuery validation plugin.
+ * Locale: HE
+ */
+jQuery.extend(jQuery.validator.messages, {
+ required: ".השדה הזה הינו שדה חובה",
+ remote: "נא לתקן שדה זה.",
+ email: "נא למלא כתובת דוא\"ל חוקית",
+ url: "נא למלא כתובת אינטרנט חוקית.",
+ date: "נא למלא תאריך חוקי",
+ dateISO: "נא למלא תאריך חוקי (ISO).",
+ number: "נא למלא מספר.",
+ digits: ".נא למלא רק מספרים",
+ creditcard: "נא למלא מספר כרטיס אשראי חוקי.",
+ equalTo: "נא למלא את אותו ערך שוב.",
+ accept: "נא למלא ערך עם סיומת חוקית.",
+ maxlength: jQuery.validator.format(".נא לא למלא יותר מ- {0} תווים"),
+ minlength: jQuery.validator.format("נא למלא לפחות {0} תווים."),
+ rangelength: jQuery.validator.format("נא למלא ערך בין {0} ל- {1} תווים."),
+ range: jQuery.validator.format("נא למלא ערך בין {0} ל- {1}."),
+ max: jQuery.validator.format("נא למלא ערך קטן או שווה ל- {0}."),
+ min: jQuery.validator.format("נא למלא ערך גדול או שווה ל- {0}.")
+});
diff --git a/bug/bug/jquery-validation-1.8.1/localization/messages_hu.js b/bug/bug/jquery-validation-1.8.1/localization/messages_hu.js
new file mode 100644
index 0000000..086222a
--- /dev/null
+++ b/bug/bug/jquery-validation-1.8.1/localization/messages_hu.js
@@ -0,0 +1,20 @@
+/*
+ * Translated default messages for the jQuery validation plugin.
+ * Locale: HU
+ */
+jQuery.extend(jQuery.validator.messages, {
+ required: "Kötelező megadni.",
+ maxlength: jQuery.validator.format("Legfeljebb {0} karakter hosszú legyen."),
+ minlength: jQuery.validator.format("Legalább {0} karakter hosszú legyen."),
+ rangelength: jQuery.validator.format("Legalább {0} és legfeljebb {1} karakter hosszú legyen."),
+ email: "Érvényes e-mail címnek kell lennie.",
+ url: "Érvényes URL-nek kell lennie.",
+ date: "Dátumnak kell lennie.",
+ number: "Számnak kell lennie.",
+ digits: "Csak számjegyek lehetnek.",
+ equalTo: "Meg kell egyeznie a két értéknek.",
+ range: jQuery.validator.format("{0} és {1} közé kell esnie."),
+ max: jQuery.validator.format("Nem lehet nagyobb, mint {0}."),
+ min: jQuery.validator.format("Nem lehet kisebb, mint {0}."),
+ creditcard: "Érvényes hitelkártyaszámnak kell lennie."
+});
diff --git a/bug/bug/jquery-validation-1.8.1/localization/messages_it.js b/bug/bug/jquery-validation-1.8.1/localization/messages_it.js
new file mode 100644
index 0000000..ec44bca
--- /dev/null
+++ b/bug/bug/jquery-validation-1.8.1/localization/messages_it.js
@@ -0,0 +1,23 @@
+/*
+ * Translated default messages for the jQuery validation plugin.
+ * Locale: IT
+ */
+jQuery.extend(jQuery.validator.messages, {
+ required: "Campo obbligatorio.",
+ remote: "Controlla questo campo.",
+ email: "Inserisci un indirizzo email valido.",
+ url: "Inserisci un indirizzo web valido.",
+ date: "Inserisci una data valida.",
+ dateISO: "Inserisci una data valida (ISO).",
+ number: "Inserisci un numero valido.",
+ digits: "Inserisci solo numeri.",
+ creditcard: "Inserisci un numero di carta di credito valido.",
+ equalTo: "Il valore non corrisponde.",
+ accept: "Inserisci un valore con un&apos;estensione valida.",
+ maxlength: jQuery.validator.format("Non inserire pi&ugrave; di {0} caratteri."),
+ minlength: jQuery.validator.format("Inserisci almeno {0} caratteri."),
+ rangelength: jQuery.validator.format("Inserisci un valore compreso tra {0} e {1} caratteri."),
+ range: jQuery.validator.format("Inserisci un valore compreso tra {0} e {1}."),
+ max: jQuery.validator.format("Inserisci un valore minore o uguale a {0}."),
+ min: jQuery.validator.format("Inserisci un valore maggiore o uguale a {0}.")
+}); \ No newline at end of file
diff --git a/bug/bug/jquery-validation-1.8.1/localization/messages_ja.js b/bug/bug/jquery-validation-1.8.1/localization/messages_ja.js
new file mode 100644
index 0000000..62fc567
--- /dev/null
+++ b/bug/bug/jquery-validation-1.8.1/localization/messages_ja.js
@@ -0,0 +1,23 @@
+/*
+ * Translated default messages for the jQuery validation plugin.
+ * Locale: JA (Japanese)
+ */
+jQuery.extend(jQuery.validator.messages, {
+ required: "このフィールドは必須です。",
+ remote: "このフィールドを修正してください。",
+ email: "有効なEメールアドレスを入力してください。",
+ url: "有効なURLを入力してください。",
+ date: "有効な日付を入力してください。",
+ dateISO: "有効な日付(ISO)を入力してください。",
+ number: "有効な数字を入力してください。",
+ digits: "数字のみを入力してください。",
+ creditcard: "有効なクレジットカード番号を入力してください。",
+ equalTo: "同じ値をもう一度入力してください。",
+ accept: "有効な拡張子を含む値を入力してください。",
+ maxlength: jQuery.format("{0} 文字以内で入力してください。"),
+ minlength: jQuery.format("{0} 文字以上で入力してください。"),
+ rangelength: jQuery.format("{0} 文字から {1} 文字までの値を入力してください。"),
+ range: jQuery.format("{0} から {1} までの値を入力してください。"),
+ max: jQuery.format("{0} 以下の値を入力してください。"),
+ min: jQuery.format("{1} 以上の値を入力してください。")
+}); \ No newline at end of file
diff --git a/bug/bug/jquery-validation-1.8.1/localization/messages_kk.js b/bug/bug/jquery-validation-1.8.1/localization/messages_kk.js
new file mode 100644
index 0000000..b377894
--- /dev/null
+++ b/bug/bug/jquery-validation-1.8.1/localization/messages_kk.js
@@ -0,0 +1,23 @@
+/*
+ * Translated default messages for the jQuery validation plugin.
+ * Locale: KK
+ */
+jQuery.extend(jQuery.validator.messages, {
+ required: "Бұл өрісті міндетті түрде толтырыңыз.",
+ remote: "Дұрыс мағына енгізуіңізді сұраймыз.",
+ email: "Нақты электронды поштаңызды енгізуіңізді сұраймыз.",
+ url: "Нақты URL-ды енгізуіңізді сұраймыз.",
+ date: "Нақты URL-ды енгізуіңізді сұраймыз.",
+ dateISO: "Нақты ISO форматымен сәйкес датасын енгізуіңізді сұраймыз.",
+ number: "Күнді енгізуіңізді сұраймыз.",
+ digits: "Тек қана сандарды енгізуіңізді сұраймыз.",
+ creditcard: "Несие картасының нөмірін дұрыс енгізуіңізді сұраймыз.",
+ equalTo: "Осы мәнді қайта енгізуіңізді сұраймыз.",
+ accept: "Файлдың кеңейтуін дұрыс таңдаңыз.",
+ maxlength: jQuery.format("Ұзындығы {0} символдан көр болмасын."),
+ minlength: jQuery.format("Ұзындығы {0} символдан аз болмасын."),
+ rangelength: jQuery.format("Ұзындығы {0}-{1} дейін мән енгізуіңізді сұраймыз."),
+ range: jQuery.format("Пожалуйста, введите число от {0} до {1}. - {0} - {1} санын енгізуіңізді сұраймыз."),
+ max: jQuery.format("{0} аз немесе тең санын енгізуіңіді сұраймыз."),
+ min: jQuery.format("{0} көп немесе тең санын енгізуіңізді сұраймыз.")
+}); \ No newline at end of file
diff --git a/bug/bug/jquery-validation-1.8.1/localization/messages_lt.js b/bug/bug/jquery-validation-1.8.1/localization/messages_lt.js
new file mode 100644
index 0000000..a890dbe
--- /dev/null
+++ b/bug/bug/jquery-validation-1.8.1/localization/messages_lt.js
@@ -0,0 +1,23 @@
+/*
+ * Translated default messages for the jQuery validation plugin in lithuanian.
+ * Locale: LT
+ */
+jQuery.extend(jQuery.validator.messages, {
+ required: "Šis laukas yra privalomas.",
+ remote: "Prašau pataisyti šį lauką.",
+ email: "Prašau įvesti teisingą elektroninio pašto adresą.",
+ url: "Prašau įvesti teisingą URL.",
+ date: "Prašau įvesti teisingą datą.",
+ dateISO: "Prašau įvesti teisingą datą (ISO).",
+ number: "Prašau įvesti teisingą skaičių.",
+ digits: "Prašau naudoti tik skaitmenis.",
+ creditcard: "Prašau įvesti teisingą kreditinės kortelės numerį.",
+ equalTo: "Prašau įvestį tą pačią reikšmę dar kartą.",
+ accept: "Prašau įvesti reikšmę su teisingu plėtiniu.",
+ maxlength: $.format("Prašau įvesti ne daugiau kaip {0} simbolių."),
+ minlength: $.format("Prašau įvesti bent {0} simbolius."),
+ rangelength: $.format("Prašau įvesti reikšmes, kurių ilgis nuo {0} iki {1} simbolių."),
+ range: $.format("Prašau įvesti reikšmę intervale nuo {0} iki {1}."),
+ max: $.format("Prašau įvesti reikšmę mažesnę arba lygią {0}."),
+ min: $.format("Prašau įvesti reikšmę didesnę arba lygią {0}.")
+}); \ No newline at end of file
diff --git a/bug/bug/jquery-validation-1.8.1/localization/messages_lv.js b/bug/bug/jquery-validation-1.8.1/localization/messages_lv.js
new file mode 100644
index 0000000..944e918
--- /dev/null
+++ b/bug/bug/jquery-validation-1.8.1/localization/messages_lv.js
@@ -0,0 +1,23 @@
+/*
+ * Translated default messages for the jQuery validation plugin.
+ * Locale: LV
+ */
+jQuery.extend(jQuery.validator.messages, {
+ required: "Šis lauks ir obligāts.",
+ remote: "Lūdzu, pārbaudiet šo lauku.",
+ email: "Lūdzu, ievadiet derīgu e-pasta adresi.",
+ url: "Lūdzu, ievadiet derīgu URL adresi.",
+ date: "Lūdzu, ievadiet derīgu datumu.",
+ dateISO: "Lūdzu, ievadiet derīgu datumu (ISO).",
+ number: "Lūdzu, ievadiet derīgu numuru.",
+ digits: "Lūdzu, ievadiet tikai ciparus.",
+ creditcard: "Lūdzu, ievadiet derīgu kredītkartes numuru.",
+ equalTo: "Lūdzu, ievadiet to pašu vēlreiz.",
+ accept: "Lūdzu, ievadiet vērtību ar derīgu paplašinājumu.",
+ maxlength: jQuery.validator.format("Lūdzu, ievadiet ne vairāk kā {0} rakstzīmes."),
+ minlength: jQuery.validator.format("Lūdzu, ievadiet vismaz {0} rakstzīmes."),
+ rangelength: jQuery.validator.format("Lūdzu ievadiet {0} līdz {1} rakstzīmes."),
+ range: jQuery.validator.format("Lūdzu, ievadiet skaitli no {0} līdz {1}."),
+ max: jQuery.validator.format("Lūdzu, ievadiet skaitli, kurš ir mazāks vai vienāds ar {0}."),
+ min: jQuery.validator.format("Lūdzu, ievadiet skaitli, kurš ir lielāks vai vienāds ar {0}.")
+}); \ No newline at end of file
diff --git a/bug/bug/jquery-validation-1.8.1/localization/messages_nl.js b/bug/bug/jquery-validation-1.8.1/localization/messages_nl.js
new file mode 100644
index 0000000..e266158
--- /dev/null
+++ b/bug/bug/jquery-validation-1.8.1/localization/messages_nl.js
@@ -0,0 +1,23 @@
+/*
+ * Translated default messages for the jQuery validation plugin.
+ * Locale: NL
+ */
+jQuery.extend(jQuery.validator.messages, {
+ required: "Dit is een verplicht veld.",
+ remote: "Controleer dit veld.",
+ email: "Vul hier een geldig e-mailadres in.",
+ url: "Vul hier een geldige URL in.",
+ date: "Vul hier een geldige datum in.",
+ dateISO: "Vul hier een geldige datum in (ISO-formaat).",
+ number: "Vul hier een geldig getal in.",
+ digits: "Vul hier alleen getallen in.",
+ creditcard: "Vul hier een geldig creditcardnummer in.",
+ equalTo: "Vul hier dezelfde waarde in.",
+ accept: "Vul hier een waarde in met een geldige extensie.",
+ maxlength: jQuery.validator.format("Vul hier maximaal {0} tekens in."),
+ minlength: jQuery.validator.format("Vul hier minimaal {0} tekens in."),
+ rangelength: jQuery.validator.format("Vul hier een waarde in van minimaal {0} en maximaal {1} tekens."),
+ range: jQuery.validator.format("Vul hier een waarde in van minimaal {0} en maximaal {1}."),
+ max: jQuery.validator.format("Vul hier een waarde in kleiner dan of gelijk aan {0}."),
+ min: jQuery.validator.format("Vul hier een waarde in groter dan of gelijk aan {0}.")
+}); \ No newline at end of file
diff --git a/bug/bug/jquery-validation-1.8.1/localization/messages_no.js b/bug/bug/jquery-validation-1.8.1/localization/messages_no.js
new file mode 100644
index 0000000..89706fc
--- /dev/null
+++ b/bug/bug/jquery-validation-1.8.1/localization/messages_no.js
@@ -0,0 +1,23 @@
+/*
+ * Translated default messages for the jQuery validation plugin.
+ * Locale: NO (Norwegian)
+ */
+jQuery.extend(jQuery.validator.messages, {
+ required: "Dette feltet er obligatorisk.",
+ maxlength: jQuery.validator.format("Maksimalt {0} tegn."),
+ minlength: jQuery.validator.format("Minimum {0} tegn."),
+ rangelength: jQuery.validator.format("Angi minimum {0} og maksimum {1} tegn."),
+ email: "Oppgi en gyldig epostadresse.",
+ url: "Angi en gyldig URL.",
+ date: "Angi en gyldig dato.",
+ dateISO: "Angi en gyldig dato (&ARING;&ARING;&ARING;&ARING;-MM-DD).",
+ dateSE: "Angi en gyldig dato.",
+ number: "Angi et gyldig nummer.",
+ numberSE: "Angi et gyldig nummer.",
+ digits: "Skriv kun tall.",
+ equalTo: "Skriv samme verdi igjen.",
+ range: jQuery.validator.format("Angi en verdi mellom {0} og {1}."),
+ max: jQuery.validator.format("Angi en verdi som er st&oslash;rre eller lik {0}."),
+ min: jQuery.validator.format("Angi en verdi som er mindre eller lik {0}."),
+ creditcard: "Angi et gyldig kredittkortnummer."
+}); \ No newline at end of file
diff --git a/bug/bug/jquery-validation-1.8.1/localization/messages_pl.js b/bug/bug/jquery-validation-1.8.1/localization/messages_pl.js
new file mode 100644
index 0000000..27190d8
--- /dev/null
+++ b/bug/bug/jquery-validation-1.8.1/localization/messages_pl.js
@@ -0,0 +1,23 @@
+/*
+ * Translated default messages for the jQuery validation plugin.
+ * Locale: PL
+ */
+jQuery.extend(jQuery.validator.messages, {
+ required: "To pole jest wymagane.",
+ remote: "Proszę o wypełnienie tego pola.",
+ email: "Proszę o podanie prawidłowego adresu email.",
+ url: "Proszę o podanie prawidłowego URL.",
+ date: "Proszę o podanie prawidłowej daty.",
+ dateISO: "Proszę o podanie prawidłowej daty (ISO).",
+ number: "Proszę o podanie prawidłowej liczby.",
+ digits: "Proszę o podanie samych cyfr.",
+ creditcard: "Proszę o podanie prawidłowej karty kredytowej.",
+ equalTo: "Proszę o podanie tej samej wartości ponownie.",
+ accept: "Proszę o podanie wartości z prawidłowym rozszerzeniem.",
+ maxlength: jQuery.validator.format("Proszę o podanie nie więcej niż {0} znaków."),
+ minlength: jQuery.validator.format("Proszę o podanie przynajmniej {0} znaków."),
+ rangelength: jQuery.validator.format("Proszę o podanie wartości o długości od {0} do {1} znaków."),
+ range: jQuery.validator.format("Proszę o podanie wartości z przedziału od {0} do {1}."),
+ max: jQuery.validator.format("Proszę o podanie wartości mniejszej bądź równej {0}."),
+ min: jQuery.validator.format("Proszę o podanie wartości większej bądź równej {0}.")
+}); \ No newline at end of file
diff --git a/bug/bug/jquery-validation-1.8.1/localization/messages_ptbr.js b/bug/bug/jquery-validation-1.8.1/localization/messages_ptbr.js
new file mode 100644
index 0000000..0711857
--- /dev/null
+++ b/bug/bug/jquery-validation-1.8.1/localization/messages_ptbr.js
@@ -0,0 +1,23 @@
+/*
+ * Translated default messages for the jQuery validation plugin.
+ * Locale: PT_BR
+ */
+jQuery.extend(jQuery.validator.messages, {
+ required: "Este campo &eacute; requerido.",
+ remote: "Por favor, corrija este campo.",
+ email: "Por favor, forne&ccedil;a um endere&ccedil;o eletr&ocirc;nico v&aacute;lido.",
+ url: "Por favor, forne&ccedil;a uma URL v&aacute;lida.",
+ date: "Por favor, forne&ccedil;a uma data v&aacute;lida.",
+ dateISO: "Por favor, forne&ccedil;a uma data v&aacute;lida (ISO).",
+ number: "Por favor, forne&ccedil;a um n&uacute;mero v&aacute;lida.",
+ digits: "Por favor, forne&ccedil;a somente d&iacute;gitos.",
+ creditcard: "Por favor, forne&ccedil;a um cart&atilde;o de cr&eacute;dito v&aacute;lido.",
+ equalTo: "Por favor, forne&ccedil;a o mesmo valor novamente.",
+ accept: "Por favor, forne&ccedil;a um valor com uma extens&atilde;o v&aacute;lida.",
+ maxlength: jQuery.validator.format("Por favor, forne&ccedil;a n&atilde;o mais que {0} caracteres."),
+ minlength: jQuery.validator.format("Por favor, forne&ccedil;a ao menos {0} caracteres."),
+ rangelength: jQuery.validator.format("Por favor, forne&ccedil;a um valor entre {0} e {1} caracteres de comprimento."),
+ range: jQuery.validator.format("Por favor, forne&ccedil;a um valor entre {0} e {1}."),
+ max: jQuery.validator.format("Por favor, forne&ccedil;a um valor menor ou igual a {0}."),
+ min: jQuery.validator.format("Por favor, forne&ccedil;a um valor maior ou igual a {0}.")
+});
diff --git a/bug/bug/jquery-validation-1.8.1/localization/messages_ptpt.js b/bug/bug/jquery-validation-1.8.1/localization/messages_ptpt.js
new file mode 100644
index 0000000..1e3fea2
--- /dev/null
+++ b/bug/bug/jquery-validation-1.8.1/localization/messages_ptpt.js
@@ -0,0 +1,23 @@
+/**
+ * Translated default messages for the jQuery validation plugin.
+ * Locale: PT_PT
+ */
+jQuery.extend(jQuery.validator.messages, {
+ required: "Campo de preenchimento obrigat&oacute;rio.",
+ remote: "Por favor, corrija este campo.",
+ email: "Por favor, introduza um endere&ccedil;o eletr&oacute;nico v&aacute;lido.",
+ url: "Por favor, introduza um URL v&aacute;lido.",
+ date: "Por favor, introduza uma data v&aacute;lida.",
+ dateISO: "Por favor, introduza uma data v&aacute;lida (ISO).",
+ number: "Por favor, introduza um n&uacute;mero v&aacute;lido.",
+ digits: "Por favor, introduza apenas d&iacute;gitos.",
+ creditcard: "Por favor, introduza um n&uacute;mero de cart&atilde;o de cr&eacute;dito v&aacute;lido.",
+ equalTo: "Por favor, introduza de novo o mesmo valor.",
+ accept: "Por favor, introduza um ficheiro com uma extens&atilde;o v&aacute;lida.",
+ maxlength: jQuery.validator.format("Por favor, n&atilde;o introduza mais do que {0} caracteres."),
+ minlength: jQuery.validator.format("Por favor, introduza pelo menos {0} caracteres."),
+ rangelength: jQuery.validator.format("Por favor, introduza entre {0} e {1} caracteres."),
+ range: jQuery.validator.format("Por favor, introduza um valor entre {0} e {1}."),
+ max: jQuery.validator.format("Por favor, introduza um valor menor ou igual a {0}."),
+ min: jQuery.validator.format("Por favor, introduza um valor maior ou igual a {0}.")
+});
diff --git a/bug/bug/jquery-validation-1.8.1/localization/messages_ro.js b/bug/bug/jquery-validation-1.8.1/localization/messages_ro.js
new file mode 100644
index 0000000..ae9a67c
--- /dev/null
+++ b/bug/bug/jquery-validation-1.8.1/localization/messages_ro.js
@@ -0,0 +1,23 @@
+/*
+ * Translated default messages for the jQuery validation plugin.
+ * Locale: RO
+ */
+jQuery.extend(jQuery.validator.messages, {
+ required: "Acest câmp este obligatoriu.",
+ remote: "Te rugăm să completezi acest câmp.",
+ email: "Te rugăm să introduci o adresă de email validă",
+ url: "Te rugăm sa introduci o adresă URL validă.",
+ date: "Te rugăm să introduci o dată corectă.",
+ dateISO: "Te rugăm să introduci o dată (ISO) corectă.",
+ number: "Te rugăm să introduci un număr întreg valid.",
+ digits: "Te rugăm să introduci doar cifre.",
+ creditcard: "Te rugăm să introduci un numar de carte de credit valid.",
+ equalTo: "Te rugăm să reintroduci valoarea.",
+ accept: "Te rugăm să introduci o valoare cu o extensie validă.",
+ maxlength: jQuery.validator.format("Te rugăm să nu introduci mai mult de {0} caractere."),
+ minlength: jQuery.validator.format("Te rugăm să introduci cel puțin {0} caractere."),
+ rangelength: jQuery.validator.format("Te rugăm să introduci o valoare între {0} și {1} caractere."),
+ range: jQuery.validator.format("Te rugăm să introduci o valoare între {0} și {1}."),
+ max: jQuery.validator.format("Te rugăm să introduci o valoare egal sau mai mică decât {0}."),
+ min: jQuery.validator.format("Te rugăm să introduci o valoare egal sau mai mare decât {0}.")
+}); \ No newline at end of file
diff --git a/bug/bug/jquery-validation-1.8.1/localization/messages_ru.js b/bug/bug/jquery-validation-1.8.1/localization/messages_ru.js
new file mode 100644
index 0000000..419ac24
--- /dev/null
+++ b/bug/bug/jquery-validation-1.8.1/localization/messages_ru.js
@@ -0,0 +1,23 @@
+/*
+ * Translated default messages for the jQuery validation plugin.
+ * Locale: RU
+ */
+jQuery.extend(jQuery.validator.messages, {
+ required: "Это поле необходимо заполнить.",
+ remote: "Пожалуйста, введите правильное значение.",
+ email: "Пожалуйста, введите корретный адрес электронной почты.",
+ url: "Пожалуйста, введите корректный URL.",
+ date: "Пожалуйста, введите корректную дату.",
+ dateISO: "Пожалуйста, введите корректную дату в формате ISO.",
+ number: "Пожалуйста, введите число.",
+ digits: "Пожалуйста, вводите только цифры.",
+ creditcard: "Пожалуйста, введите правильный номер кредитной карты.",
+ equalTo: "Пожалуйста, введите такое же значение ещё раз.",
+ accept: "Пожалуйста, выберите файл с правильным расширением.",
+ maxlength: jQuery.validator.format("Пожалуйста, введите не больше {0} символов."),
+ minlength: jQuery.validator.format("Пожалуйста, введите не меньше {0} символов."),
+ rangelength: jQuery.validator.format("Пожалуйста, введите значение длиной от {0} до {1} символов."),
+ range: jQuery.validator.format("Пожалуйста, введите число от {0} до {1}."),
+ max: jQuery.validator.format("Пожалуйста, введите число, меньшее или равное {0}."),
+ min: jQuery.validator.format("Пожалуйста, введите число, большее или равное {0}.")
+}); \ No newline at end of file
diff --git a/bug/bug/jquery-validation-1.8.1/localization/messages_se.js b/bug/bug/jquery-validation-1.8.1/localization/messages_se.js
new file mode 100644
index 0000000..3dee369
--- /dev/null
+++ b/bug/bug/jquery-validation-1.8.1/localization/messages_se.js
@@ -0,0 +1,21 @@
+/*
+ * Translated default messages for the jQuery validation plugin.
+ * Locale: SE
+ */
+jQuery.extend(jQuery.validator.messages, {
+ required: "Detta f&auml;lt &auml;r obligatoriskt.",
+ maxlength: jQuery.validator.format("Du f&aring;r ange h&ouml;gst {0} tecken."),
+ minlength: jQuery.validator.format("Du m&aring;ste ange minst {0} tecken."),
+ rangelength: jQuery.validator.format("Ange minst {0} och max {1} tecken."),
+ email: "Ange en korrekt e-postadress.",
+ url: "Ange en korrekt URL.",
+ date: "Ange ett korrekt datum.",
+ dateISO: "Ange ett korrekt datum (&ARING;&ARING;&ARING;&ARING;-MM-DD).",
+ number: "Ange ett korrekt nummer.",
+ digits: "Ange endast siffror.",
+ equalTo: "Ange samma v&auml;rde igen.",
+ range: jQuery.validator.format("Ange ett v&auml;rde mellan {0} och {1}."),
+ max: jQuery.validator.format("Ange ett v&auml;rde som &auml;r st&ouml;rre eller lika med {0}."),
+ min: jQuery.validator.format("Ange ett v&auml;rde som &auml;r mindre eller lika med {0}."),
+ creditcard: "Ange ett korrekt kreditkortsnummer."
+}); \ No newline at end of file
diff --git a/bug/bug/jquery-validation-1.8.1/localization/messages_si.js b/bug/bug/jquery-validation-1.8.1/localization/messages_si.js
new file mode 100644
index 0000000..b8d8d7d
--- /dev/null
+++ b/bug/bug/jquery-validation-1.8.1/localization/messages_si.js
@@ -0,0 +1,23 @@
+/*
+ * Translated default messages for the jQuery validation plugin.
+ * Locale: SI (Slovenian)
+ */
+jQuery.extend(jQuery.validator.messages, {
+ required: "To polje je obvezno.",
+ remote: "Vpis v tem polju ni v pravi obliki.",
+ email: "Prosimo, vnesite pravi email naslov.",
+ url: "Prosimo, vnesite pravi URL.",
+ date: "Prosimo, vnesite pravi datum.",
+ dateISO: "Prosimo, vnesite pravi datum (ISO).",
+ number: "Prosimo, vnesite pravo številko.",
+ digits: "Prosimo, vnesite samo številke.",
+ creditcard: "Prosimo, vnesite pravo številko kreditne kartice.",
+ equalTo: "Prosimo, ponovno vnesite enako vsebino.",
+ accept: "Prosimo, vnesite vsebino z pravo končnico.",
+ maxlength: $.validator.format("Prosimo, da ne vnašate več kot {0} znakov."),
+ minlength: $.validator.format("Prosimo, vnesite vsaj {0} znakov."),
+ rangelength: $.validator.format("Prosimo, vnesite od {0} do {1} znakov."),
+ range: $.validator.format("Prosimo, vnesite vrednost med {0} in {1}."),
+ max: $.validator.format("Prosimo, vnesite vrednost manjšo ali enako {0}."),
+ min: $.validator.format("Prosimo, vnesite vrednost večjo ali enako {0}.")
+});
diff --git a/bug/bug/jquery-validation-1.8.1/localization/messages_sk.js b/bug/bug/jquery-validation-1.8.1/localization/messages_sk.js
new file mode 100644
index 0000000..442d31d
--- /dev/null
+++ b/bug/bug/jquery-validation-1.8.1/localization/messages_sk.js
@@ -0,0 +1,20 @@
+/*
+ * Translated default messages for the jQuery validation plugin.
+ * Locale: SK
+ */
+jQuery.extend(jQuery.validator.messages, {
+ required: "Povinné zadať.",
+ maxlength: jQuery.validator.format("Maximálne {0} znakov."),
+ minlength: jQuery.validator.format("Minimálne {0} znakov."),
+ rangelength: jQuery.validator.format("Minimálne {0} a Maximálne {0} znakov."),
+ email: "E-mailová adresa musí byť platná.",
+ url: "URL musí byť platný.",
+ date: "Musí byť dátum.",
+ number: "Musí byť číslo.",
+ digits: "Môže obsahovať iba číslice.",
+ equalTo: "Dva hodnoty sa musia rovnať.",
+ range: jQuery.validator.format("Musí byť medzi {0} a {1}."),
+ max: jQuery.validator.format("Nemôže byť viac ako{0}."),
+ min: jQuery.validator.format("Nemôže byť menej ako{0}."),
+ creditcard: "Číslo platobnej karty musí byť platné."
+});
diff --git a/bug/bug/jquery-validation-1.8.1/localization/messages_sr.js b/bug/bug/jquery-validation-1.8.1/localization/messages_sr.js
new file mode 100644
index 0000000..1a89174
--- /dev/null
+++ b/bug/bug/jquery-validation-1.8.1/localization/messages_sr.js
@@ -0,0 +1,23 @@
+/*
+ * Translated default messages for the jQuery validation plugin.
+ * Locale: SR
+ */
+jQuery.extend(jQuery.validator.messages, {
+ required: "Поље је обавезно.",
+ remote: "Средите ово поље.",
+ email: "Унесите исправну и-мејл адресу",
+ url: "Унесите исправан URL.",
+ date: "Унесите исправан датум.",
+ dateISO: "Унесите исправан датум (ISO).",
+ number: "Унесите исправан број.",
+ digits: "Унесите само цифе.",
+ creditcard: "Унесите исправан број кредитне картице.",
+ equalTo: "Унесите исту вредност поново.",
+ accept: "Унесите вредност са одговарајућом екстензијом.",
+ maxlength: $.validator.format("Унесите мање од {0}карактера."),
+ minlength: $.validator.format("Унесите барем {0} карактера."),
+ rangelength: $.validator.format("Унесите вредност дугачку између {0} и {1} карактера."),
+ range: $.validator.format("Унесите вредност између {0} и {1}."),
+ max: $.validator.format("Унесите вредност мању или једнаку {0}."),
+ min: $.validator.format("Унесите вредност већу или једнаку {0}.")
+});
diff --git a/bug/bug/jquery-validation-1.8.1/localization/messages_th.js b/bug/bug/jquery-validation-1.8.1/localization/messages_th.js
new file mode 100644
index 0000000..e40fb67
--- /dev/null
+++ b/bug/bug/jquery-validation-1.8.1/localization/messages_th.js
@@ -0,0 +1,23 @@
+/*
+ * Translated default messages for the jQuery validation plugin.
+ * Locale: TH (Thai)
+ */
+jQuery.extend(jQuery.validator.messages, {
+ required: "โปรดระบุ",
+ remote: "โปรดแก้ไขให้ถูกต้อง",
+ email: "โปรดระบุที่อยู่อีเมล์ที่ถูกต้อง",
+ url: "โปรดระบุ URL ที่ถูกต้อง",
+ date: "โปรดระบุวันที่ ที่ถูกต้อง",
+ dateISO: "โปรดระบุวันที่ ที่ถูกต้อง (ระบบ ISO).",
+ number: "โปรดระบุทศนิยมที่ถูกต้อง",
+ digits: "โปรดระบุจำนวนเต็มที่ถูกต้อง",
+ creditcard: "โปรดระบุรหัสบัตรเครดิตที่ถูกต้อง",
+ equalTo: "โปรดระบุค่าเดิมอีกครั้ง",
+ accept: "โปรดระบุค่าที่มีส่วนขยายที่ถูกต้อง",
+ maxlength: jQuery.validator.format("โปรดอย่าระบุค่าที่ยาวกว่า {0} อักขระ"),
+ minlength: jQuery.validator.format("โปรดอย่าระบุค่าที่สั้นกว่า {0} อักขระ"),
+ rangelength: jQuery.validator.format("โปรดอย่าระบุค่าความยาวระหว่าง {0} ถึง {1} อักขระ"),
+ range: jQuery.validator.format("โปรดระบุค่าระหว่าง {0} และ {1}"),
+ max: jQuery.validator.format("โปรดระบุค่าน้อยกว่าหรือเท่ากับ {0}"),
+ min: jQuery.validator.format("โปรดระบุค่ามากกว่าหรือเท่ากับ {0}")
+});
diff --git a/bug/bug/jquery-validation-1.8.1/localization/messages_tr.js b/bug/bug/jquery-validation-1.8.1/localization/messages_tr.js
new file mode 100644
index 0000000..9df81e4
--- /dev/null
+++ b/bug/bug/jquery-validation-1.8.1/localization/messages_tr.js
@@ -0,0 +1,23 @@
+/*
+ * Translated default messages for the jQuery validation plugin.
+ * Locale: TR
+ */
+jQuery.extend(jQuery.validator.messages, {
+ required: "Bu alanın doldurulması zorunludur.",
+ remote: "Lütfen bu alanı düzeltin.",
+ email: "Lütfen geçerli bir e-posta adresi giriniz.",
+ url: "Lütfen geçerli bir web adresi (URL) giriniz.",
+ date: "Lütfen geçerli bir tarih giriniz.",
+ dateISO: "Lütfen geçerli bir tarih giriniz(ISO formatında)",
+ number: "Lütfen geçerli bir sayı giriniz.",
+ digits: "Lütfen sadece sayısal karakterler giriniz.",
+ creditcard: "Lütfen geçerli bir kredi kartı giriniz.",
+ equalTo: "Lütfen aynı değeri tekrar giriniz.",
+ accept: "Lütfen geçerli uzantıya sahip bir değer giriniz.",
+ maxlength: jQuery.validator.format("Lütfen en fazla {0} karakter uzunluğunda bir değer giriniz."),
+ minlength: jQuery.validator.format("Lütfen en az {0} karakter uzunluğunda bir değer giriniz."),
+ rangelength: jQuery.validator.format("Lütfen en az {0} ve en fazla {1} uzunluğunda bir değer giriniz."),
+ range: jQuery.validator.format("Lütfen {0} ile {1} arasında bir değer giriniz."),
+ max: jQuery.validator.format("Lütfen {0} değerine eşit ya da daha küçük bir değer giriniz."),
+ min: jQuery.validator.format("Lütfen {0} değerine eşit ya da daha büyük bir değer giriniz.")
+}); \ No newline at end of file
diff --git a/bug/bug/jquery-validation-1.8.1/localization/messages_tw.js b/bug/bug/jquery-validation-1.8.1/localization/messages_tw.js
new file mode 100644
index 0000000..2481535
--- /dev/null
+++ b/bug/bug/jquery-validation-1.8.1/localization/messages_tw.js
@@ -0,0 +1,23 @@
+/*
+ * Translated default messages for the jQuery validation plugin.
+ * Locale: TW (Taiwan - Traditional Chinese)
+ */
+jQuery.extend(jQuery.validator.messages, {
+ required: "必填",
+ remote: "請修正此欄位",
+ email: "請輸入正確的電子信箱",
+ url: "請輸入合法的URL",
+ date: "請輸入合法的日期",
+ dateISO: "請輸入合法的日期 (ISO).",
+ number: "請輸入數字",
+ digits: "請輸入整數",
+ creditcard: "請輸入合法的信用卡號碼",
+ equalTo: "請重複輸入一次",
+ accept: "請輸入有效的後缀字串",
+ maxlength: jQuery.validator.format("請輸入長度不大於{0} 的字串"),
+ minlength: jQuery.validator.format("請輸入長度不小於 {0} 的字串"),
+ rangelength: jQuery.validator.format("請輸入長度介於 {0} 和 {1} 之間的字串"),
+ range: jQuery.validator.format("請輸入介於 {0} 和 {1} 之間的數值"),
+ max: jQuery.validator.format("請輸入不大於 {0} 的數值"),
+ min: jQuery.validator.format("請輸入不小於 {0} 的數值")
+}); \ No newline at end of file
diff --git a/bug/bug/jquery-validation-1.8.1/localization/messages_ua.js b/bug/bug/jquery-validation-1.8.1/localization/messages_ua.js
new file mode 100644
index 0000000..25434a6
--- /dev/null
+++ b/bug/bug/jquery-validation-1.8.1/localization/messages_ua.js
@@ -0,0 +1,23 @@
+/*
+ * Translated default messages for the jQuery validation plugin.
+ * Locale: UA (Ukrainian)
+ */
+jQuery.extend(jQuery.validator.messages, {
+ required: "Це поле необхідно заповнити.",
+ remote: "Будь ласка, введіть правильне значення.",
+ email: "Будь ласка, введіть коректну адресу електронної пошти.",
+ url: "Будь ласка, введіть коректний URL.",
+ date: "Будь ласка, введіть коректну дату.",
+ dateISO: "Будь ласка, введіть коректну дату у форматі ISO.",
+ number: "Будь ласка, введіть число.",
+ digits: "Вводите потрібно лише цифри.",
+ creditcard: "Будь ласка, введіть правильний номер кредитної карти.",
+ equalTo: "Будь ласка, введіть таке ж значення ще раз.",
+ accept: "Будь ласка, виберіть файл з правильним розширенням.",
+ maxlength: jQuery.validator.format("Будь ласка, введіть не більше {0} символів."),
+ minlength: jQuery.validator.format("Будь ласка, введіть не менше {0} символів."),
+ rangelength: jQuery.validator.format("Будь ласка, введіть значення довжиною від {0} до {1} символів."),
+ range: jQuery.validator.format("Будь ласка, введіть число від {0} до {1}."),
+ max: jQuery.validator.format("Будь ласка, введіть число, менше або рівно {0}."),
+ min: jQuery.validator.format("Будь ласка, введіть число, більше або рівно {0}.")
+});
diff --git a/bug/bug/jquery-validation-1.8.1/localization/messages_vi.js b/bug/bug/jquery-validation-1.8.1/localization/messages_vi.js
new file mode 100644
index 0000000..9170547
--- /dev/null
+++ b/bug/bug/jquery-validation-1.8.1/localization/messages_vi.js
@@ -0,0 +1,23 @@
+/*
+ * Translated default messages for the jQuery validation plugin.
+ * Locale: VI (Vietnamese)
+ */
+jQuery.extend(jQuery.validator.messages, {
+ required: "Hãy nhập.",
+ remote: "Hãy sửa cho đúng.",
+ email: "Hãy nhập email.",
+ url: "Hãy nhập URL.",
+ date: "Hãy nhập ngày.",
+ dateISO: "Hãy nhập ngày (ISO).",
+ number: "Hãy nhập số.",
+ digits: "Hãy nhập chữ số.",
+ creditcard: "Hãy nhập số thẻ tín dụng.",
+ equalTo: "Hãy nhập thêm lần nữa.",
+ accept: "Phần mở rộng không đúng.",
+ maxlength: jQuery.format("Hãy nhập từ {0} kí tự trở xuống."),
+ minlength: jQuery.format("Hãy nhập từ {0} kí tự trở lên."),
+ rangelength: jQuery.format("Hãy nhập từ {0} đến {1} kí tự."),
+ range: jQuery.format("Hãy nhập từ {0} đến {1}."),
+ max: jQuery.format("Hãy nhập từ {0} trở xuống."),
+ min: jQuery.format("Hãy nhập từ {1} trở lên.")
+}); \ No newline at end of file
diff --git a/bug/bug/jquery-validation-1.8.1/localization/methods_de.js b/bug/bug/jquery-validation-1.8.1/localization/methods_de.js
new file mode 100644
index 0000000..3e8ac84
--- /dev/null
+++ b/bug/bug/jquery-validation-1.8.1/localization/methods_de.js
@@ -0,0 +1,12 @@
+/*
+ * Localized default methods for the jQuery validation plugin.
+ * Locale: DE
+ */
+jQuery.extend(jQuery.validator.methods, {
+ date: function(value, element) {
+ return this.optional(element) || /^\d\d?\.\d\d?\.\d\d\d?\d?$/.test(value);
+ },
+ number: function(value, element) {
+ return this.optional(element) || /^-?(?:\d+|\d{1,3}(?:\.\d{3})+)(?:,\d+)?$/.test(value);
+ }
+}); \ No newline at end of file
diff --git a/bug/bug/jquery-validation-1.8.1/localization/methods_nl.js b/bug/bug/jquery-validation-1.8.1/localization/methods_nl.js
new file mode 100644
index 0000000..152e94d
--- /dev/null
+++ b/bug/bug/jquery-validation-1.8.1/localization/methods_nl.js
@@ -0,0 +1,9 @@
+/*
+ * Localized default methods for the jQuery validation plugin.
+ * Locale: NL
+ */
+jQuery.extend(jQuery.validator.methods, {
+ date: function(value, element) {
+ return this.optional(element) || /^\d\d?[\.\/-]\d\d?[\.\/-]\d\d\d?\d?$/.test(value);
+ }
+}); \ No newline at end of file
diff --git a/bug/bug/jquery-validation-1.8.1/localization/methods_pt.js b/bug/bug/jquery-validation-1.8.1/localization/methods_pt.js
new file mode 100644
index 0000000..21879d3
--- /dev/null
+++ b/bug/bug/jquery-validation-1.8.1/localization/methods_pt.js
@@ -0,0 +1,9 @@
+/*
+ * Localized default methods for the jQuery validation plugin.
+ * Locale: PT_BR
+ */
+jQuery.extend(jQuery.validator.methods, {
+ date: function(value, element) {
+ return this.optional(element) || /^\d\d?\/\d\d?\/\d\d\d?\d?$/.test(value);
+ }
+}); \ No newline at end of file
diff --git a/bug/bug/jquery-validation-1.8.1/test/events.html b/bug/bug/jquery-validation-1.8.1/test/events.html
new file mode 100644
index 0000000..a651519
--- /dev/null
+++ b/bug/bug/jquery-validation-1.8.1/test/events.html
@@ -0,0 +1,71 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+<title>Test for jQuery validate() plugin</title>
+
+<link rel="stylesheet" type="text/css" media="screen" href="css/screen.css" />
+<script src="../lib/jquery.js" type="text/javascript"></script>
+<script src="firebug/firebug.js" type="text/javascript"></script>
+
+<script type="text/javascript">
+$().ready(function() {
+ var handler = {
+ focusin: function() {
+ $(this).addClass("focus");
+ },
+ focusout: function() {
+ $(this).removeClass("focus");
+ }
+ }
+ $("#commentForm").delegate("focusin focusout", ":text, textarea", function(event) {
+ /*
+ this.addClass("focus").one("blur", function() {
+ $(this).removeClass("focus");
+ });
+ */
+ handler[event.type].call(this, arguments);
+ });
+ $("#remove").click(function() {
+ $("#commentForm").unbind("focusin");
+ })
+});
+</script>
+
+<style type="text/css">
+#commentForm { width: 500px; }
+#commentForm label { width: 250px; display: block; float: left; }
+#commentForm label.error, #commentForm input.submit { margin-left: 253px; }
+.focus { background-color: red; }
+</style>
+
+</head>
+<body>
+<form class="cmxform" id="commentForm" method="get" action="">
+ <fieldset>
+ <legend>A simple comment form with submit validation and default messages</legend>
+ <p>
+ <label for="cname">Name (required, at least 2 characters)</label>
+ <input id="cname" name="name" class="some other styles {required:true,minLength:2}" />
+ <p>
+ <label for="cemail">E-Mail (required)</label>
+ <input id="cemail" name="email" class="{required:true,email:true}" />
+ </p>
+ <p>
+ <label for="curl">URL (optional)</label>
+ <input id="curl" name="url" class="{url:true}" value="" />
+ </p>
+ <p>
+ <label for="ccomment">Your comment (required)</label>
+ <textarea id="ccomment" name="comment" class="{required:true}"></textarea>
+ </p>
+ <p>
+ <input class="submit" type="submit" value="Submit"/>
+ </p>
+ </fieldset>
+</form>
+
+<button id="remove">Remove focus handler</button>
+
+</body>
+</html> \ No newline at end of file
diff --git a/bug/bug/jquery-validation-1.8.1/test/firebug/errorIcon.png b/bug/bug/jquery-validation-1.8.1/test/firebug/errorIcon.png
new file mode 100644
index 0000000..2d75261
--- /dev/null
+++ b/bug/bug/jquery-validation-1.8.1/test/firebug/errorIcon.png
Binary files differ
diff --git a/bug/bug/jquery-validation-1.8.1/test/firebug/firebug.css b/bug/bug/jquery-validation-1.8.1/test/firebug/firebug.css
new file mode 100644
index 0000000..1f041c4
--- /dev/null
+++ b/bug/bug/jquery-validation-1.8.1/test/firebug/firebug.css
@@ -0,0 +1,209 @@
+
+html, body {
+ margin: 0;
+ background: #FFFFFF;
+ font-family: Lucida Grande, Tahoma, sans-serif;
+ font-size: 11px;
+ overflow: hidden;
+}
+
+a {
+ text-decoration: none;
+}
+
+a:hover {
+ text-decoration: underline;
+}
+
+.toolbar {
+ height: 14px;
+ border-top: 1px solid ThreeDHighlight;
+ border-bottom: 1px solid ThreeDShadow;
+ padding: 2px 6px;
+ background: ThreeDFace;
+}
+
+.toolbarRight {
+ position: absolute;
+ top: 4px;
+ right: 6px;
+}
+
+#log {
+ overflow: auto;
+ position: absolute;
+ left: 0;
+ width: 100%;
+}
+
+#commandLine {
+ position: absolute;
+ bottom: 0;
+ left: 0;
+ width: 100%;
+ height: 18px;
+ border: none;
+ border-top: 1px solid ThreeDShadow;
+}
+
+/************************************************************************************************/
+
+.logRow {
+ position: relative;
+ border-bottom: 1px solid #D7D7D7;
+ padding: 2px 4px 1px 6px;
+ background-color: #FFFFFF;
+}
+
+.logRow-command {
+ font-family: Monaco, monospace;
+ color: blue;
+}
+
+.objectBox-null {
+ padding: 0 2px;
+ border: 1px solid #666666;
+ background-color: #888888;
+ color: #FFFFFF;
+}
+
+.objectBox-string {
+ font-family: Monaco, monospace;
+ color: red;
+ white-space: pre;
+}
+
+.objectBox-number {
+ color: #000088;
+}
+
+.objectBox-function {
+ font-family: Monaco, monospace;
+ color: DarkGreen;
+}
+
+.objectBox-object {
+ color: DarkGreen;
+ font-weight: bold;
+}
+
+/************************************************************************************************/
+
+.logRow-info,
+.logRow-error,
+.logRow-warning {
+ background: #FFFFFF no-repeat 2px 2px;
+ padding-left: 20px;
+ padding-bottom: 3px;
+}
+
+.logRow-info {
+ background-image: url(infoIcon.png);
+}
+
+.logRow-warning {
+ background-color: cyan;
+ background-image: url(warningIcon.png);
+}
+
+.logRow-error {
+ background-color: LightYellow;
+ background-image: url(errorIcon.png);
+}
+
+.errorMessage {
+ vertical-align: top;
+ color: #FF0000;
+}
+
+.objectBox-sourceLink {
+ position: absolute;
+ right: 4px;
+ top: 2px;
+ padding-left: 8px;
+ font-family: Lucida Grande, sans-serif;
+ font-weight: bold;
+ color: #0000FF;
+}
+
+/************************************************************************************************/
+
+.logRow-group {
+ background: #EEEEEE;
+ border-bottom: none;
+}
+
+.logGroup {
+ background: #EEEEEE;
+}
+
+.logGroupBox {
+ margin-left: 24px;
+ border-top: 1px solid #D7D7D7;
+ border-left: 1px solid #D7D7D7;
+}
+
+/************************************************************************************************/
+
+.selectorTag,
+.selectorId,
+.selectorClass {
+ font-family: Monaco, monospace;
+ font-weight: normal;
+}
+
+.selectorTag {
+ color: #0000FF;
+}
+
+.selectorId {
+ color: DarkBlue;
+}
+
+.selectorClass {
+ color: red;
+}
+
+/************************************************************************************************/
+
+.objectBox-element {
+ font-family: Monaco, monospace;
+ color: #000088;
+}
+
+.nodeChildren {
+ margin-left: 16px;
+}
+
+.nodeTag {
+ color: blue;
+}
+
+.nodeValue {
+ color: #FF0000;
+ font-weight: normal;
+}
+
+.nodeText,
+.nodeComment {
+ margin: 0 2px;
+ vertical-align: top;
+}
+
+.nodeText {
+ color: #333333;
+}
+
+.nodeComment {
+ color: DarkGreen;
+}
+
+/************************************************************************************************/
+
+.propertyNameCell {
+ vertical-align: top;
+}
+
+.propertyName {
+ font-weight: bold;
+}
diff --git a/bug/bug/jquery-validation-1.8.1/test/firebug/firebug.html b/bug/bug/jquery-validation-1.8.1/test/firebug/firebug.html
new file mode 100644
index 0000000..861e639
--- /dev/null
+++ b/bug/bug/jquery-validation-1.8.1/test/firebug/firebug.html
@@ -0,0 +1,23 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<head>
+ <title>Firebug</title>
+ <link rel="stylesheet" type="text/css" href="firebug.css">
+</head>
+
+<body>
+ <div id="toolbar" class="toolbar">
+ <a href="#" onclick="parent.console.clear()">Clear</a>
+ <span class="toolbarRight">
+ <a href="#" onclick="parent.console.close()">Close</a>
+ </span>
+ </div>
+ <div id="log"></div>
+ <input type="text" id="commandLine">
+
+ <script>parent.onFirebugReady(document);</script>
+</body>
+</html>
diff --git a/bug/bug/jquery-validation-1.8.1/test/firebug/firebug.js b/bug/bug/jquery-validation-1.8.1/test/firebug/firebug.js
new file mode 100644
index 0000000..eb853b8
--- /dev/null
+++ b/bug/bug/jquery-validation-1.8.1/test/firebug/firebug.js
@@ -0,0 +1,672 @@
+
+if (!("console" in window) || !("firebug" in console)) {
+(function()
+{
+ window.console =
+ {
+ log: function()
+ {
+ logFormatted(arguments, "");
+ },
+
+ debug: function()
+ {
+ logFormatted(arguments, "debug");
+ },
+
+ info: function()
+ {
+ logFormatted(arguments, "info");
+ },
+
+ warn: function()
+ {
+ logFormatted(arguments, "warning");
+ },
+
+ error: function()
+ {
+ logFormatted(arguments, "error");
+ },
+
+ assert: function(truth, message)
+ {
+ if (!truth)
+ {
+ var args = [];
+ for (var i = 1; i < arguments.length; ++i)
+ args.push(arguments[i]);
+
+ logFormatted(args.length ? args : ["Assertion Failure"], "error");
+ throw message ? message : "Assertion Failure";
+ }
+ },
+
+ dir: function(object)
+ {
+ var html = [];
+
+ var pairs = [];
+ for (var name in object)
+ {
+ try
+ {
+ pairs.push([name, object[name]]);
+ }
+ catch (exc)
+ {
+ }
+ }
+
+ pairs.sort(function(a, b) { return a[0] < b[0] ? -1 : 1; });
+
+ html.push('<table>');
+ for (var i = 0; i < pairs.length; ++i)
+ {
+ var name = pairs[i][0], value = pairs[i][1];
+
+ html.push('<tr>',
+ '<td class="propertyNameCell"><span class="propertyName">',
+ escapeHTML(name), '</span></td>', '<td><span class="propertyValue">');
+ appendObject(value, html);
+ html.push('</span></td></tr>');
+ }
+ html.push('</table>');
+
+ logRow(html, "dir");
+ },
+
+ dirxml: function(node)
+ {
+ var html = [];
+
+ appendNode(node, html);
+ logRow(html, "dirxml");
+ },
+
+ group: function()
+ {
+ logRow(arguments, "group", pushGroup);
+ },
+
+ groupEnd: function()
+ {
+ logRow(arguments, "", popGroup);
+ },
+
+ time: function(name)
+ {
+ timeMap[name] = (new Date()).getTime();
+ },
+
+ timeEnd: function(name)
+ {
+ if (name in timeMap)
+ {
+ var delta = (new Date()).getTime() - timeMap[name];
+ logFormatted([name+ ":", delta+"ms"]);
+ delete timeMap[name];
+ }
+ },
+
+ count: function()
+ {
+ this.warn(["count() not supported."]);
+ },
+
+ trace: function()
+ {
+ this.warn(["trace() not supported."]);
+ },
+
+ profile: function()
+ {
+ this.warn(["profile() not supported."]);
+ },
+
+ profileEnd: function()
+ {
+ },
+
+ clear: function()
+ {
+ consoleBody.innerHTML = "";
+ },
+
+ open: function()
+ {
+ toggleConsole(true);
+ },
+
+ close: function()
+ {
+ if (frameVisible)
+ toggleConsole();
+ }
+ };
+
+ // ********************************************************************************************
+
+ var consoleFrame = null;
+ var consoleBody = null;
+ var commandLine = null;
+
+ var frameVisible = false;
+ var messageQueue = [];
+ var groupStack = [];
+ var timeMap = {};
+
+ var clPrefix = ">>> ";
+
+ var isFirefox = navigator.userAgent.indexOf("Firefox") != -1;
+ var isIE = navigator.userAgent.indexOf("MSIE") != -1;
+ var isOpera = navigator.userAgent.indexOf("Opera") != -1;
+ var isSafari = navigator.userAgent.indexOf("AppleWebKit") != -1;
+
+ // ********************************************************************************************
+
+ function toggleConsole(forceOpen)
+ {
+ frameVisible = forceOpen || !frameVisible;
+ if (consoleFrame)
+ consoleFrame.style.visibility = frameVisible ? "visible" : "hidden";
+ else
+ waitForBody();
+ }
+
+ function focusCommandLine()
+ {
+ toggleConsole(true);
+ if (commandLine)
+ commandLine.focus();
+ }
+
+ function waitForBody()
+ {
+ if (document.body)
+ createFrame();
+ else
+ setTimeout(waitForBody, 200);
+ }
+
+ function createFrame()
+ {
+ if (consoleFrame)
+ return;
+
+ window.onFirebugReady = function(doc)
+ {
+ window.onFirebugReady = null;
+
+ var toolbar = doc.getElementById("toolbar");
+ toolbar.onmousedown = onSplitterMouseDown;
+
+ commandLine = doc.getElementById("commandLine");
+ addEvent(commandLine, "keydown", onCommandLineKeyDown);
+
+ addEvent(doc, isIE || isSafari ? "keydown" : "keypress", onKeyDown);
+
+ consoleBody = doc.getElementById("log");
+ layout();
+ flush();
+ }
+
+ var baseURL = getFirebugURL();
+
+ consoleFrame = document.createElement("iframe");
+ consoleFrame.setAttribute("src", baseURL+"/firebug.html");
+ consoleFrame.setAttribute("frameBorder", "0");
+ consoleFrame.style.visibility = (frameVisible ? "visible" : "hidden");
+ consoleFrame.style.zIndex = "2147483647";
+ consoleFrame.style.position = "fixed";
+ consoleFrame.style.width = "100%";
+ consoleFrame.style.left = "0";
+ consoleFrame.style.bottom = "0";
+ consoleFrame.style.height = "200px";
+ document.body.appendChild(consoleFrame);
+ }
+
+ function getFirebugURL()
+ {
+ var scripts = document.getElementsByTagName("script");
+ for (var i = 0; i < scripts.length; ++i)
+ {
+ if (scripts[i].src.indexOf("firebug.js") != -1)
+ {
+ var lastSlash = scripts[i].src.lastIndexOf("/");
+ return scripts[i].src.substr(0, lastSlash);
+ }
+ }
+ }
+
+ function evalCommandLine()
+ {
+ var text = commandLine.value;
+ commandLine.value = "";
+
+ logRow([clPrefix, text], "command");
+
+ var value;
+ try
+ {
+ value = eval(text);
+ }
+ catch (exc)
+ {
+ }
+
+ console.log(value);
+ }
+
+ function layout()
+ {
+ var toolbar = consoleBody.ownerDocument.getElementById("toolbar");
+ var height = consoleFrame.offsetHeight - (toolbar.offsetHeight + commandLine.offsetHeight);
+ consoleBody.style.top = toolbar.offsetHeight + "px";
+ consoleBody.style.height = height + "px";
+
+ commandLine.style.top = (consoleFrame.offsetHeight - commandLine.offsetHeight) + "px";
+ }
+
+ function logRow(message, className, handler)
+ {
+ if (consoleBody)
+ writeMessage(message, className, handler);
+ else
+ {
+ messageQueue.push([message, className, handler]);
+ waitForBody();
+ }
+ }
+
+ function flush()
+ {
+ var queue = messageQueue;
+ messageQueue = [];
+
+ for (var i = 0; i < queue.length; ++i)
+ writeMessage(queue[i][0], queue[i][1], queue[i][2]);
+ }
+
+ function writeMessage(message, className, handler)
+ {
+ var isScrolledToBottom =
+ consoleBody.scrollTop + consoleBody.offsetHeight >= consoleBody.scrollHeight;
+
+ if (!handler)
+ handler = writeRow;
+
+ handler(message, className);
+
+ if (isScrolledToBottom)
+ consoleBody.scrollTop = consoleBody.scrollHeight - consoleBody.offsetHeight;
+ }
+
+ function appendRow(row)
+ {
+ var container = groupStack.length ? groupStack[groupStack.length-1] : consoleBody;
+ container.appendChild(row);
+ }
+
+ function writeRow(message, className)
+ {
+ var row = consoleBody.ownerDocument.createElement("div");
+ row.className = "logRow" + (className ? " logRow-"+className : "");
+ row.innerHTML = message.join("");
+ appendRow(row);
+ }
+
+ function pushGroup(message, className)
+ {
+ logFormatted(message, className);
+
+ var groupRow = consoleBody.ownerDocument.createElement("div");
+ groupRow.className = "logGroup";
+ var groupRowBox = consoleBody.ownerDocument.createElement("div");
+ groupRowBox.className = "logGroupBox";
+ groupRow.appendChild(groupRowBox);
+ appendRow(groupRowBox);
+ groupStack.push(groupRowBox);
+ }
+
+ function popGroup()
+ {
+ groupStack.pop();
+ }
+
+ // ********************************************************************************************
+
+ function logFormatted(objects, className)
+ {
+ var html = [];
+
+ var format = objects[0];
+ var objIndex = 0;
+
+ if (typeof(format) != "string")
+ {
+ format = "";
+ objIndex = -1;
+ }
+
+ var parts = parseFormat(format);
+ for (var i = 0; i < parts.length; ++i)
+ {
+ var part = parts[i];
+ if (part && typeof(part) == "object")
+ {
+ var object = objects[++objIndex];
+ part.appender(object, html);
+ }
+ else
+ appendText(part, html);
+ }
+
+ for (var i = objIndex+1; i < objects.length; ++i)
+ {
+ appendText(" ", html);
+
+ var object = objects[i];
+ if (typeof(object) == "string")
+ appendText(object, html);
+ else
+ appendObject(object, html);
+ }
+
+ logRow(html, className);
+ }
+
+ function parseFormat(format)
+ {
+ var parts = [];
+
+ var reg = /((^%|[^\\]%)(\d+)?(\.)([a-zA-Z]))|((^%|[^\\]%)([a-zA-Z]))/;
+ var appenderMap = {s: appendText, d: appendInteger, i: appendInteger, f: appendFloat};
+
+ for (var m = reg.exec(format); m; m = reg.exec(format))
+ {
+ var type = m[8] ? m[8] : m[5];
+ var appender = type in appenderMap ? appenderMap[type] : appendObject;
+ var precision = m[3] ? parseInt(m[3]) : (m[4] == "." ? -1 : 0);
+
+ parts.push(format.substr(0, m[0][0] == "%" ? m.index : m.index+1));
+ parts.push({appender: appender, precision: precision});
+
+ format = format.substr(m.index+m[0].length);
+ }
+
+ parts.push(format);
+
+ return parts;
+ }
+
+ function escapeHTML(value)
+ {
+ function replaceChars(ch)
+ {
+ switch (ch)
+ {
+ case "<":
+ return "&lt;";
+ case ">":
+ return "&gt;";
+ case "&":
+ return "&amp;";
+ case "'":
+ return "&#39;";
+ case '"':
+ return "&quot;";
+ }
+ return "?";
+ };
+ return String(value).replace(/[<>&"']/g, replaceChars);
+ }
+
+ function objectToString(object)
+ {
+ try
+ {
+ return object+"";
+ }
+ catch (exc)
+ {
+ return null;
+ }
+ }
+
+ // ********************************************************************************************
+
+ function appendText(object, html)
+ {
+ html.push(escapeHTML(objectToString(object)));
+ }
+
+ function appendNull(object, html)
+ {
+ html.push('<span class="objectBox-null">', escapeHTML(objectToString(object)), '</span>');
+ }
+
+ function appendString(object, html)
+ {
+ html.push('<span class="objectBox-string">&quot;', escapeHTML(objectToString(object)),
+ '&quot;</span>');
+ }
+
+ function appendInteger(object, html)
+ {
+ html.push('<span class="objectBox-number">', escapeHTML(objectToString(object)), '</span>');
+ }
+
+ function appendFloat(object, html)
+ {
+ html.push('<span class="objectBox-number">', escapeHTML(objectToString(object)), '</span>');
+ }
+
+ function appendFunction(object, html)
+ {
+ var reName = /function ?(.*?)\(/;
+ var m = reName.exec(objectToString(object));
+ var name = m ? m[1] : "function";
+ html.push('<span class="objectBox-function">', escapeHTML(name), '()</span>');
+ }
+
+ function appendObject(object, html)
+ {
+ try
+ {
+ if (object == undefined)
+ appendNull("undefined", html);
+ else if (object == null)
+ appendNull("null", html);
+ else if (typeof object == "string")
+ appendString(object, html);
+ else if (typeof object == "number")
+ appendInteger(object, html);
+ else if (typeof object == "function")
+ appendFunction(object, html);
+ else if (object.nodeType == 1)
+ appendSelector(object, html);
+ else if (typeof object == "object")
+ appendObjectFormatted(object, html);
+ else
+ appendText(object, html);
+ }
+ catch (exc)
+ {
+ }
+ }
+
+ function appendObjectFormatted(object, html)
+ {
+ var text = objectToString(object);
+ var reObject = /\[object (.*?)\]/;
+
+ var m = reObject.exec(text);
+ html.push('<span class="objectBox-object">', m ? m[1] : text, '</span>')
+ }
+
+ function appendSelector(object, html)
+ {
+ html.push('<span class="objectBox-selector">');
+
+ html.push('<span class="selectorTag">', escapeHTML(object.nodeName.toLowerCase()), '</span>');
+ if (object.id)
+ html.push('<span class="selectorId">#', escapeHTML(object.id), '</span>');
+ if (object.className)
+ html.push('<span class="selectorClass">.', escapeHTML(object.className), '</span>');
+
+ html.push('</span>');
+ }
+
+ function appendNode(node, html)
+ {
+ if (node.nodeType == 1)
+ {
+ html.push(
+ '<div class="objectBox-element">',
+ '&lt;<span class="nodeTag">', node.nodeName.toLowerCase(), '</span>');
+
+ for (var i = 0; i < node.attributes.length; ++i)
+ {
+ var attr = node.attributes[i];
+ if (!attr.specified)
+ continue;
+
+ html.push('&nbsp;<span class="nodeName">', attr.nodeName.toLowerCase(),
+ '</span>=&quot;<span class="nodeValue">', escapeHTML(attr.nodeValue),
+ '</span>&quot;')
+ }
+
+ if (node.firstChild)
+ {
+ html.push('&gt;</div><div class="nodeChildren">');
+
+ for (var child = node.firstChild; child; child = child.nextSibling)
+ appendNode(child, html);
+
+ html.push('</div><div class="objectBox-element">&lt;/<span class="nodeTag">',
+ node.nodeName.toLowerCase(), '&gt;</span></div>');
+ }
+ else
+ html.push('/&gt;</div>');
+ }
+ else if (node.nodeType == 3)
+ {
+ html.push('<div class="nodeText">', escapeHTML(node.nodeValue),
+ '</div>');
+ }
+ }
+
+ // ********************************************************************************************
+
+ function addEvent(object, name, handler)
+ {
+ if (document.all)
+ object.attachEvent("on"+name, handler);
+ else
+ object.addEventListener(name, handler, false);
+ }
+
+ function removeEvent(object, name, handler)
+ {
+ if (document.all)
+ object.detachEvent("on"+name, handler);
+ else
+ object.removeEventListener(name, handler, false);
+ }
+
+ function cancelEvent(event)
+ {
+ if (document.all)
+ event.cancelBubble = true;
+ else
+ event.stopPropagation();
+ }
+
+ function onError(msg, href, lineNo)
+ {
+ var html = [];
+
+ var lastSlash = href.lastIndexOf("/");
+ var fileName = lastSlash == -1 ? href : href.substr(lastSlash+1);
+
+ html.push(
+ '<span class="errorMessage">', msg, '</span>',
+ '<div class="objectBox-sourceLink">', fileName, ' (line ', lineNo, ')</div>'
+ );
+
+ logRow(html, "error");
+ };
+
+ function onKeyDown(event)
+ {
+ if (event.keyCode == 123)
+ toggleConsole();
+ else if ((event.keyCode == 108 || event.keyCode == 76) && event.shiftKey
+ && (event.metaKey || event.ctrlKey))
+ focusCommandLine();
+ else
+ return;
+
+ cancelEvent(event);
+ }
+
+ function onSplitterMouseDown(event)
+ {
+ if (isSafari || isOpera)
+ return;
+
+ addEvent(document, "mousemove", onSplitterMouseMove);
+ addEvent(document, "mouseup", onSplitterMouseUp);
+
+ for (var i = 0; i < frames.length; ++i)
+ {
+ addEvent(frames[i].document, "mousemove", onSplitterMouseMove);
+ addEvent(frames[i].document, "mouseup", onSplitterMouseUp);
+ }
+ }
+
+ function onSplitterMouseMove(event)
+ {
+ var win = document.all
+ ? event.srcElement.ownerDocument.parentWindow
+ : event.target.ownerDocument.defaultView;
+
+ var clientY = event.clientY;
+ if (win != win.parent)
+ clientY += win.frameElement ? win.frameElement.offsetTop : 0;
+
+ var height = consoleFrame.offsetTop + consoleFrame.clientHeight;
+ var y = height - clientY;
+
+ consoleFrame.style.height = y + "px";
+ layout();
+ }
+
+ function onSplitterMouseUp(event)
+ {
+ removeEvent(document, "mousemove", onSplitterMouseMove);
+ removeEvent(document, "mouseup", onSplitterMouseUp);
+
+ for (var i = 0; i < frames.length; ++i)
+ {
+ removeEvent(frames[i].document, "mousemove", onSplitterMouseMove);
+ removeEvent(frames[i].document, "mouseup", onSplitterMouseUp);
+ }
+ }
+
+ function onCommandLineKeyDown(event)
+ {
+ if (event.keyCode == 13)
+ evalCommandLine();
+ else if (event.keyCode == 27)
+ commandLine.value = "";
+ }
+
+ window.onerror = onError;
+ addEvent(document, isIE || isSafari ? "keydown" : "keypress", onKeyDown);
+
+ if (document.documentElement.getAttribute("debug") == "true")
+ toggleConsole(true);
+})();
+}
diff --git a/bug/bug/jquery-validation-1.8.1/test/firebug/firebugx.js b/bug/bug/jquery-validation-1.8.1/test/firebug/firebugx.js
new file mode 100644
index 0000000..5a467fc
--- /dev/null
+++ b/bug/bug/jquery-validation-1.8.1/test/firebug/firebugx.js
@@ -0,0 +1,10 @@
+
+if (!("console" in window) || !("firebug" in console))
+{
+ var names = ["log", "debug", "info", "warn", "error", "assert", "dir", "dirxml",
+ "group", "groupEnd", "time", "timeEnd", "count", "trace", "profile", "profileEnd"];
+
+ window.console = {};
+ for (var i = 0; i < names.length; ++i)
+ window.console[names[i]] = function() {}
+} \ No newline at end of file
diff --git a/bug/bug/jquery-validation-1.8.1/test/firebug/infoIcon.png b/bug/bug/jquery-validation-1.8.1/test/firebug/infoIcon.png
new file mode 100644
index 0000000..da1e533
--- /dev/null
+++ b/bug/bug/jquery-validation-1.8.1/test/firebug/infoIcon.png
Binary files differ
diff --git a/bug/bug/jquery-validation-1.8.1/test/firebug/warningIcon.png b/bug/bug/jquery-validation-1.8.1/test/firebug/warningIcon.png
new file mode 100644
index 0000000..de51084
--- /dev/null
+++ b/bug/bug/jquery-validation-1.8.1/test/firebug/warningIcon.png
Binary files differ
diff --git a/bug/bug/jquery-validation-1.8.1/test/index.html b/bug/bug/jquery-validation-1.8.1/test/index.html
new file mode 100644
index 0000000..0d82ae8
--- /dev/null
+++ b/bug/bug/jquery-validation-1.8.1/test/index.html
@@ -0,0 +1,277 @@
+<!DOCTYPE html>
+<html id="html">
+<head>
+ <title>jQuery - Validation Test Suite</title>
+ <link rel="Stylesheet" media="screen" href="qunit/qunit.css" />
+ <script type="text/javascript" src="jquery.js"></script>
+ <script type="text/javascript" src="../lib/jquery.form.js"></script>
+ <script type="text/javascript" src="qunit/qunit.js"></script>
+ <script type="text/javascript" src="../lib/jquery.metadata.js"></script>
+ <script type="text/javascript" src="../lib/jquery.mockjax.js"></script>
+ <script type="text/javascript" src="../jquery.validate.js"></script>
+ <script type="text/javascript" src="../additional-methods.js"></script>
+ <script type="text/javascript" src="test.js"></script>
+ <script type="text/javascript" src="rules.js"></script>
+ <script type="text/javascript" src="messages.js"></script>
+ <script type="text/javascript" src="methods.js"></script>
+</head>
+<body id="body">
+ <h1 id="qunit-header">
+ <a href="http://bassistance.de/jquery-plugins/jquery-plugin-validation/">jQuery Validation Plugin</a> Test Suite
+ <a href="?jquery=1.3.2">jQuery 1.3.2</a>
+ <a href="?jquery=1.4.2">jQuery 1.4.2</a>
+ <a href="?jquery=1.4.4">jQuery 1.4.4</a>
+ <a href="?jquery=1.5.2">jQuery 1.5.2</a>
+ <a href="?jquery=1.6.1">jQuery 1.6.1</a>
+ <a href="?jquery=git">jQuery Latest (git)</a>
+ </h1>
+ <div>
+ </div>
+ <h2 id="qunit-banner"></h2>
+ <div id="qunit-testrunner-toolbar"></div>
+ <h2 id="qunit-userAgent"></h2>
+ <ol id="qunit-tests"></ol>
+
+ <!-- Test HTML -->
+ <div id="other" style="display:none;">
+ <input type="password" name="pw1" id="pw1" value="engfeh" />
+ <input type="password" name="pw2" id="pw2" value="" />
+ </div>
+ <div id="qunit-fixture">
+ <p id="firstp">See <a id="simon1" href="http://simon.incutio.com/archive/2003/03/25/#getElementsBySelector" rel="bookmark">this blog entry</a> for more information.</p>
+ <p id="ap">
+ Here are some links in a normal paragraph: <a id="google" href="http://www.google.com/" title="Google!">Google</a>,
+ <a id="groups" href="http://groups.google.com/">Google Groups</a>.
+ This link has <code><a href="#" id="anchor1">class="blog"</a></code>:
+ <a href="http://diveintomark.org/" class="blog" hreflang="en" id="mark">diveintomark</a>
+
+ </p>
+ <div id="foo">
+ <p id="sndp">Everything inside the red border is inside a div with <code>id="foo"</code>.</p>
+ <p lang="en" id="en">This is a normal link: <a id="yahoo" href="http://www.yahoo.com/" class="blogTest">Yahoo</a></p>
+ <p id="sap">This link has <code><a href="#2" id="anchor2">class="blog"</a></code>: <a href="http://simon.incutio.com/" class="blog link" id="simon">Simon Willison's Weblog</a></p>
+
+ </div>
+ <p id="first">Try them out:</p>
+ <ul id="firstUL"></ul>
+ <ol id="empty"></ol>
+
+ <form id="testForm1">
+ <input type="text" class="{required:true,minlength:2}" title="buga" name="firstname" id="firstname" />
+ <label id="errorFirstname" for="firstname" class="error">error for firstname</label>
+ <input type="text" class="{required:true}" title="buga" name="lastname" id="lastname" />
+ <input type="text" class="{required:true}" title="something" name="something" id="something" value="something" />
+ </form>
+
+ <form id="testForm1clean">
+ <input title="buga" name="firstname" id="firstnamec" />
+ <label id="errorFirstname" for="firstname" class="error">error for firstname</label>
+ <input title="buga" name="lastname" id="lastnamec" />
+ <input name="username" id="usernamec" />
+ </form>
+
+ <form id="userForm">
+ <input type="text" class="{required:true}" name="username" id="username" />
+ <input type="submit" name="submitButton" value="submitButtonValue" />
+ </form>
+
+ <form id="signupForm" action="form.php">
+ <input id="user" name="user" title="Please enter your username (at least 3 characters)" class="{required:true,minlength:3}" />
+ <input type="password" name="password" id="password" class="{required:true,minlength:5}" />
+ </form>
+
+ <form id="testForm2">
+ <input class="{required:true}" type="radio" name="agree" id="agb" />
+ <label for="agree" id="agreeLabel" class="xerror">error for agb</label>
+ </form>
+
+ <form id="testForm3">
+ <select class="{required:true}" name="meal" id="meal" >
+ <option value="">Please select...</option>
+ <option value="1">Food</option>
+ <option value="2">Milk</option>
+ </select>
+ </form>
+ <div class="error" id="errorContainer">
+ <ul>
+ <li class="error" id="errorWrapper">
+ <label for="meal" id="mealLabel" class="error">error for meal</label>
+ </li>
+ </ul>
+ </div>
+
+ <form id="testForm4">
+ <input class="{foo:true}" name="f1" id="f1" />
+ <input class="{bar:true}" name="f2" id="f2" />
+ </form>
+
+ <form id="testForm5">
+ <input class="{equalTo:'#x2'}" value="x" name="x1" id="x1" />
+ <input class="{equalTo:'#x1'}" value="y" name="x2" id="x2" />
+ </form>
+
+ <form id="testForm6">
+ <input class="{required:true,minlength:2}" type="checkbox" name="check" id="form6check1" />
+ <input type="checkbox" name="check" id="form6check2" />
+ </form>
+
+ <form id="testForm7">
+ <select class="{required:true,minlength:2}" name="selectf7" id="selectf7" multiple="multiple">
+ <option id="optionxa" value="0">0</option>
+ <option id="optionxb" value="1">1</option>
+ <option id="optionxc" value="2">2</option>
+ <option id="optionxd" value="3">3</option>
+ </select>
+ </form>
+
+ <form id="dateRangeForm">
+ <input id="fromDate" name="fromDate" class="requiredDateRange" value="x" />
+ <input id="toDate" name="toDate" class="requiredDateRange" value="y" />
+ <span class="errorContainer"></span>
+ </form>
+
+ <form id="testForm8">
+ <input id="form8input" class="{required:true,number:true,rangelength:[2,8]}" name="abc" />
+ <input type="radio" name="radio1"/>
+ </form>
+
+ <form id="testForm9">
+ <input id="testEmail9" class="{required:true,email:true,messages:{required:'required',email:'email'}}" />
+ </form>
+
+ <form id="testForm10">
+ <input type="radio" name="testForm10Radio" value="1" id="testForm10Radio1" />
+ <input type="radio" name="testForm10Radio" value="2" id="testForm10Radio2" />
+ </form>
+
+ <div id="simplecontainer">
+ <h3></h3>
+ </div>
+
+ <div id="container"></div>
+
+ <ol id="labelcontainer"></ol>
+
+ <form id="elementsOrder">
+ <select class="required" name="order1" id="order1"><option value="">none</option></select>
+ <input class="required" name="order2" id="order2"/>
+ <input class="required" name="order3" type="checkbox" id="order3"/>
+ <input class="required" name="order4" id="order4"/>
+ <input class="required" name="order5" type="radio" id="order5"/>
+ <input class="required" name="order6" id="order6"/>
+ <ul id="orderContainer">
+ </ul>
+ </form>
+
+ <form id="form" action="formaction">
+ <input type="text" name="action" value="Test" id="text1"/>
+ <input type="text" name="text2" value=" " id="text1b"/>
+ <input type="text" name="text2" value="T " id="text1c"/>
+ <input type="text" name="text2" value="T" id="text2"/>
+ <input type="text" name="text2" value="TestTestTest" id="text3"/>
+
+ <input type="text" name="action" value="0" id="value1"/>
+ <input type="text" name="text2" value="10" id="value2"/>
+ <input type="text" name="text2" value="1000" id="value3"/>
+
+ <input type="radio" name="radio1" id="radio1"/>
+ <input type="radio" name="radio1" id="radio1a"/>
+ <input type="radio" name="radio2" id="radio2" checked="checked"/>
+ <input type="radio" name="radio" id="radio3"/>
+ <input type="radio" name="radio" id="radio4" checked="checked"/>
+
+ <input type="checkbox" name="check" id="check1" checked="checked"/>
+ <input type="checkbox" name="check" id="check1b" />
+
+ <input type="checkbox" name="check2" id="check2"/>
+
+ <input type="checkbox" name="check3" id="check3" checked="checked"/>
+ <input type="checkbox" name="check3" checked="checked"/>
+ <input type="checkbox" name="check3" checked="checked"/>
+ <input type="checkbox" name="check3" checked="checked"/>
+ <input type="checkbox" name="check3" checked="checked"/>
+
+ <input type="hidden" name="hidden" id="hidden1"/>
+ <input type="text" style="display:none;" name="foo[bar]" id="hidden2"/>
+
+ <input type="text" readonly="readonly" id="name" name="name" value="name" />
+
+ <button name="button">Button</button>
+
+ <textarea id="area1" name="area1"">foobar</textarea>
+
+
+ <textarea id="area2" name="area2"></textarea>
+
+ <select name="select1" id="select1">
+ <option id="option1a" value="">Nothing</option>
+ <option id="option1b" value="1">1</option>
+ <option id="option1c" value="2">2</option>
+ <option id="option1d" value="3">3</option>
+ </select>
+ <select name="select2" id="select2">
+ <option id="option2a" value="">Nothing</option>
+ <option id="option2b" value="1">1</option>
+ <option id="option2c" value="2">2</option>
+ <option id="option2d" selected="selected" value="3">3</option>
+ </select>
+ <select name="select3" id="select3" multiple="multiple">
+ <option id="option3a" value="">Nothing</option>
+ <option id="option3b" selected="selected" value="1">1</option>
+ <option id="option3c" selected="selected" value="2">2</option>
+ <option id="option3d" value="3">3</option>
+ </select>
+ <select name="select4" id="select4" multiple="multiple">
+ <option id="option4a" selected="selected" value="1">1</option>
+ <option id="option4b" selected="selected" value="2">2</option>
+ <option id="option4c" selected="selected" value="3">3</option>
+ <option id="option4d" selected="selected" value="4">4</option>
+ <option id="option4e" selected="selected" value="5">5</option>
+ </select>
+ <select name="select5" id="select5" multiple="multiple">
+ <option id="option5a" value="0">0</option>
+ <option id="option5b" value="1">1</option>
+ <option id="option5c" value="2">2</option>
+ <option id="option5d" value="3">3</option>
+ </select>
+ </form>
+
+ <form id="v2">
+ <input id="v2-i1" name="v2-i1" class="required" />
+ <input id="v2-i2" name="v2-i2" class="required email" />
+ <input id="v2-i3" name="v2-i3" class="url" />
+ <input id="v2-i4" name="v2-i4" class="required" minlength="2" />
+ <input id="v2-i5" name="v2-i5" class="required" minlength="2" maxlength="5" customMethod1="123" />
+ <input id="v2-i6" name="v2-i6" class="required customMethod2 {maxlength: 5}" minlength="2" />
+ <input id="v2-i7" name="v2-i7" />
+ </form>
+
+ <form id="checkables">
+ <input type="checkbox" id="checkable1" name="checkablesgroup" class="required" />
+ <input type="checkbox" id="checkable2" name="checkablesgroup" />
+ <input type="checkbox" id="checkable3" name="checkablesgroup" />
+ </form>
+
+
+ <form id="subformRequired">
+ <div class="billingAddressControl">
+ <input type="checkbox" id="bill_to_co" name="bill_to_co" class="toggleCheck" checked="checked" style="width: auto;" tabindex="1" />
+ <label for="bill_to_co" style="cursor:pointer">Same as Company Address</label>
+ </div>
+ <div id="subform">
+ <input maxlength="40" class="billingRequired" name="bill_first_name" size="20" type="text" tabindex="2" value="" />
+ </div>
+ <input id="co_name" class="required" maxlength="40" name="co_name" size="20" type="text" tabindex="1" value="" />
+ </form>
+
+ <form id="withTitle">
+ <input class="required" name="hastitle" type="text" title="fromtitle" />
+ </form>
+
+ <form id="ccform" method="get" action="">
+ <input id="cardnumber" name="cardnumber" />
+ </form>
+ </div>
+
+</body>
+</html>
diff --git a/bug/bug/jquery-validation-1.8.1/test/jquery.js b/bug/bug/jquery-validation-1.8.1/test/jquery.js
new file mode 100644
index 0000000..100c446
--- /dev/null
+++ b/bug/bug/jquery-validation-1.8.1/test/jquery.js
@@ -0,0 +1,25 @@
+(function() {
+
+var parts = document.location.search.slice( 1 ).split( "&" ),
+ length = parts.length,
+ i = 0,
+ current,
+ version = "1.3.2",
+ file = "http://code.jquery.com/jquery-git.js";
+
+for ( ; i < length; i++ ) {
+ current = parts[ i ].split( "=" );
+ if ( current[ 0 ] === "jquery" ) {
+ version = current[ 1 ];
+ break;
+ }
+}
+
+if (version != "git") {
+ file = "../lib/jquery-" + version + ".js";
+}
+
+
+document.write( "<script src='" + file + "'></script>" );
+
+})();
diff --git a/bug/bug/jquery-validation-1.8.1/test/large.html b/bug/bug/jquery-validation-1.8.1/test/large.html
new file mode 100644
index 0000000..82c47f1
--- /dev/null
+++ b/bug/bug/jquery-validation-1.8.1/test/large.html
@@ -0,0 +1,188 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+<title>Test for jQuery validate() plugin</title>
+
+<link rel="stylesheet" type="text/css" media="screen" href="css/screen.css" />
+<script src="../lib/jquery.js" type="text/javascript"></script>
+<script src="../lib/jquery.metadata.js" type="text/javascript"></script>
+<script src="../lib/jquery.ajaxQueue.js" type="text/javascript"></script>
+<script src="../jquery.validate.js" type="text/javascript"></script>
+
+<script type="text/javascript">
+$().ready(function() {
+ $("#commentForm").validate();
+});
+</script>
+
+<style type="text/css">
+#commentForm { width: 500px; }
+#commentForm label { width: 250px; display: block; float: left; }
+#commentForm label.error, #commentForm input.submit { margin-left: 253px; }
+.focus { background-color: red; }
+</style>
+
+</head>
+<body>
+<form class="cmxform" id="commentForm" method="get" action="">
+ <fieldset>
+ <legend>A simple comment form with submit validation and default messages</legend>
+ <p>
+ <label for="cname-x0">Name (required, at least 2 characters)</label>
+ <input id="cname-x0" name="name-x0" class="some other styles {required:true,minLength:2}" />
+ <p>
+ <label for="cemail-x0">E-Mail (required)</label>
+ <input id="cemail-x0" name="email-x0" class="{required:true,email:true}" />
+ </p>
+ <p>
+ <label for="curl-x0">URL (optional)</label>
+ <input id="curl-x0" name="url-x0" class="{url:true}" value="" />
+ </p>
+ <p>
+ <label for="ccomment-x0">Your comment (required)</label>
+ <textarea id="ccomment-x0" name="comment-x0" class="{required:true}"></textarea>
+ </p>
+ <p>
+ <label for="cname-x1">Name (required, at least 2 characters)</label>
+ <input class="some other styles {required:true,minLength:2}" name="name-x1" id="cname-x1"/>
+ </p><p>
+ <label for="cemail-x1">E-Mail (required)</label>
+ <input class="{required:true,email:true}" name="email-x1" id="cemail-x1"/>
+ </p>
+ <p>
+ <label for="curl-x1">URL (optional)</label>
+ <input value="" class="{url:true}" name="url-x1" id="curl-x1"/>
+ </p>
+ <p>
+ <label for="ccomment-x1">Your comment (required)</label>
+ <textarea class="{required:true}" name="comment-x1" id="ccomment-x1"></textarea>
+ </p>
+ <p>
+ <label for="cname-x2">Name (required, at least 2 characters)</label>
+ <input class="some other styles {required:true,minLength:2}" name="name-x2" id="cname-x2"/>
+ </p><p>
+ <label for="cemail-x2">E-Mail (required)</label>
+ <input class="{required:true,email:true}" name="email-x2" id="cemail-x2"/>
+ </p>
+ <p>
+ <label for="curl-x2">URL (optional)</label>
+ <input value="" class="{url:true}" name="url-x2" id="curl-x2"/>
+ </p>
+ <p>
+ <label for="ccomment-x2">Your comment (required)</label>
+ <textarea class="{required:true}" name="comment-x2" id="ccomment-x2"></textarea>
+ </p>
+ <p>
+ <label for="cname-x3">Name (required, at least 2 characters)</label>
+ <input class="some other styles {required:true,minLength:2}" name="name-x3" id="cname-x3"/>
+ </p><p>
+ <label for="cemail-x3">E-Mail (required)</label>
+ <input class="{required:true,email:true}" name="email-x3" id="cemail-x3"/>
+ </p>
+ <p>
+ <label for="curl-x3">URL (optional)</label>
+ <input value="" class="{url:true}" name="url-x3" id="curl-x3"/>
+ </p>
+ <p>
+ <label for="ccomment-x3">Your comment (required)</label>
+ <textarea class="{required:true}" name="comment-x3" id="ccomment-x3"></textarea>
+ </p>
+ <p>
+ <label for="cname-x4">Name (required, at least 2 characters)</label>
+ <input class="some other styles {required:true,minLength:2}" name="name-x4" id="cname-x4"/>
+ </p><p>
+ <label for="cemail-x4">E-Mail (required)</label>
+ <input class="{required:true,email:true}" name="email-x4" id="cemail-x4"/>
+ </p>
+ <p>
+ <label for="curl-x4">URL (optional)</label>
+ <input value="" class="{url:true}" name="url-x4" id="curl-x4"/>
+ </p>
+ <p>
+ <label for="ccomment-x4">Your comment (required)</label>
+ <textarea class="{required:true}" name="comment-x4" id="ccomment-x4"></textarea>
+ </p>
+ <p>
+ <label for="cname-x5">Name (required, at least 2 characters)</label>
+ <input class="some other styles {required:true,minLength:2}" name="name-x5" id="cname-x5"/>
+ </p><p>
+ <label for="cemail-x5">E-Mail (required)</label>
+ <input class="{required:true,email:true}" name="email-x5" id="cemail-x5"/>
+ </p>
+ <p>
+ <label for="curl-x5">URL (optional)</label>
+ <input value="" class="{url:true}" name="url-x5" id="curl-x5"/>
+ </p>
+ <p>
+ <label for="ccomment-x5">Your comment (required)</label>
+ <textarea class="{required:true}" name="comment-x5" id="ccomment-x5"></textarea>
+ </p>
+ <p>
+ <label for="cname-x6">Name (required, at least 2 characters)</label>
+ <input class="some other styles {required:true,minLength:2}" name="name-x6" id="cname-x6"/>
+ </p><p>
+ <label for="cemail-x6">E-Mail (required)</label>
+ <input class="{required:true,email:true}" name="email-x6" id="cemail-x6"/>
+ </p>
+ <p>
+ <label for="curl-x6">URL (optional)</label>
+ <input value="" class="{url:true}" name="url-x6" id="curl-x6"/>
+ </p>
+ <p>
+ <label for="ccomment-x6">Your comment (required)</label>
+ <textarea class="{required:true}" name="comment-x6" id="ccomment-x6"></textarea>
+ </p>
+ <p>
+ <label for="cname-x7">Name (required, at least 2 characters)</label>
+ <input class="some other styles {required:true,minLength:2}" name="name-x7" id="cname-x7"/>
+ </p><p>
+ <label for="cemail-x7">E-Mail (required)</label>
+ <input class="{required:true,email:true}" name="email-x7" id="cemail-x7"/>
+ </p>
+ <p>
+ <label for="curl-x7">URL (optional)</label>
+ <input value="" class="{url:true}" name="url-x7" id="curl-x7"/>
+ </p>
+ <p>
+ <label for="ccomment-x7">Your comment (required)</label>
+ <textarea class="{required:true}" name="comment-x7" id="ccomment-x7"></textarea>
+ </p>
+ <p>
+ <label for="cname-x8">Name (required, at least 2 characters)</label>
+ <input class="some other styles {required:true,minLength:2}" name="name-x8" id="cname-x8"/>
+ </p><p>
+ <label for="cemail-x8">E-Mail (required)</label>
+ <input class="{required:true,email:true}" name="email-x8" id="cemail-x8"/>
+ </p>
+ <p>
+ <label for="curl-x8">URL (optional)</label>
+ <input value="" class="{url:true}" name="url-x8" id="curl-x8"/>
+ </p>
+ <p>
+ <label for="ccomment-x8">Your comment (required)</label>
+ <textarea class="{required:true}" name="comment-x8" id="ccomment-x8"></textarea>
+ </p>
+ <p>
+ <label for="cname-x9">Name (required, at least 2 characters)</label>
+ <input class="some other styles {required:true,minLength:2}" name="name-x9" id="cname-x9"/>
+ </p><p>
+ <label for="cemail-x9">E-Mail (required)</label>
+ <input class="{required:true,email:true}" name="email-x9" id="cemail-x9"/>
+ </p>
+ <p>
+ <label for="curl-x9">URL (optional)</label>
+ <input value="" class="{url:true}" name="url-x9" id="curl-x9"/>
+ </p>
+ <p>
+ <label for="ccomment-x9">Your comment (required)</label>
+ <textarea class="{required:true}" name="comment-x9" id="ccomment-x9"></textarea>
+ </p>
+ <p>
+ <input class="submit" type="submit" value="Submit"/>
+ </p>
+ </fieldset>
+</form>
+
+</body>
+</html> \ No newline at end of file
diff --git a/bug/bug/jquery-validation-1.8.1/test/messages.js b/bug/bug/jquery-validation-1.8.1/test/messages.js
new file mode 100644
index 0000000..0faf984
--- /dev/null
+++ b/bug/bug/jquery-validation-1.8.1/test/messages.js
@@ -0,0 +1,62 @@
+module("messages");
+
+test("predefined message not overwritten by addMethod(a, b, undefined)", function() {
+ var message = "my custom message";
+ $.validator.messages.custom = message;
+ $.validator.addMethod("custom", function() {});
+ same(message, $.validator.messages.custom);
+ delete $.validator.messages.custom;
+ delete $.validator.methods.custom;
+});
+
+test("group error messages", function() {
+ $.validator.addClassRules({
+ requiredDateRange: {required:true, date:true, dateRange:true}
+ });
+ $.validator.addMethod("dateRange", function() {
+ return new Date($("#fromDate").val()) < new Date($("#toDate").val());
+ }, "Please specify a correct date range.");
+ var form = $("#dateRangeForm");
+ form.validate({
+ groups: {
+ dateRange: "fromDate toDate"
+ },
+ errorPlacement: function(error) {
+ form.find(".errorContainer").append(error);
+ }
+ });
+ ok( !form.valid() );
+ equals( 1, form.find(".errorContainer *").length );
+ equals( "Please enter a valid date.", form.find(".errorContainer label.error").text() );
+
+ $("#fromDate").val("12/03/2006");
+ $("#toDate").val("12/01/2006");
+ ok( !form.valid() );
+ equals( "Please specify a correct date range.", form.find(".errorContainer label.error").text() );
+
+ $("#toDate").val("12/04/2006");
+ ok( form.valid() );
+ ok( form.find(".errorContainer label.error").is(":hidden") );
+});
+
+test("read messages from metadata", function() {
+ var form = $("#testForm9")
+ form.validate();
+ var e = $("#testEmail9")
+ e.valid();
+ equals( form.find("label").text(), "required" );
+ e.val("bla").valid();
+ equals( form.find("label").text(), "email" );
+});
+
+
+test("read messages from metadata, with meta option specified, but no metadata in there", function() {
+ var form = $("#testForm1clean")
+ form.validate({
+ meta: "validate",
+ rules: {
+ firstname: "required"
+ }
+ });
+ ok(!form.valid(), "not valid");
+}); \ No newline at end of file
diff --git a/bug/bug/jquery-validation-1.8.1/test/methods.js b/bug/bug/jquery-validation-1.8.1/test/methods.js
new file mode 100644
index 0000000..0543b64
--- /dev/null
+++ b/bug/bug/jquery-validation-1.8.1/test/methods.js
@@ -0,0 +1,584 @@
+(function($) {
+
+function methodTest( methodName ) {
+ var v = jQuery("#form").validate();
+ var method = $.validator.methods[methodName];
+ var element = $("#firstname")[0];
+ return function(value, param) {
+ element.value = value;
+ return method.call( v, value, element, param );
+ };
+}
+
+module("methods");
+
+test("default messages", function() {
+ var m = $.validator.methods;
+ $.each(m, function(key) {
+ ok( jQuery.validator.messages[key], key + " has a default message." );
+ });
+});
+
+test("digit", function() {
+ var method = methodTest("digits");
+ ok( method( "123" ), "Valid digits" );
+ ok(!method( "123.000" ), "Invalid digits" );
+ ok(!method( "123.000,00" ), "Invalid digits" );
+ ok(!method( "123.0.0,0" ), "Invalid digits" );
+ ok(!method( "x123" ), "Invalid digits" );
+ ok(!method( "100.100,0,0" ), "Invalid digits" );
+});
+
+test("url", function() {
+ var method = methodTest("url");
+ ok( method( "http://bassistance.de/jquery/plugin.php?bla=blu" ), "Valid url" );
+ ok( method( "https://bassistance.de/jquery/plugin.php?bla=blu" ), "Valid url" );
+ ok( method( "ftp://bassistance.de/jquery/plugin.php?bla=blu" ), "Valid url" );
+ ok( method( "http://www.føtex.dk/" ), "Valid url, danish unicode characters" );
+ ok( method( "http://bösendorfer.de/" ), "Valid url, german unicode characters" );
+ ok( method( "http://192.168.8.5" ), "Valid IP Address" )
+ ok(!method( "http://192.168.8." ), "Invalid IP Address" )
+ ok(!method( "http://bassistance" ), "Invalid url" ); // valid
+ ok(!method( "http://bassistance." ), "Invalid url" ); // valid
+ ok(!method( "http://bassistance,de" ), "Invalid url" );
+ ok(!method( "http://bassistance;de" ), "Invalid url" );
+ ok(!method( "http://.bassistancede" ), "Invalid url" );
+ ok(!method( "bassistance.de" ), "Invalid url" );
+});
+
+test("url2 (tld optional)", function() {
+ var method = methodTest("url2");
+ ok( method( "http://bassistance.de/jquery/plugin.php?bla=blu" ), "Valid url" );
+ ok( method( "https://bassistance.de/jquery/plugin.php?bla=blu" ), "Valid url" );
+ ok( method( "ftp://bassistance.de/jquery/plugin.php?bla=blu" ), "Valid url" );
+ ok( method( "http://www.føtex.dk/" ), "Valid url, danish unicode characters" );
+ ok( method( "http://bösendorfer.de/" ), "Valid url, german unicode characters" );
+ ok( method( "http://192.168.8.5" ), "Valid IP Address" )
+ ok(!method( "http://192.168.8." ), "Invalid IP Address" )
+ ok( method( "http://bassistance" ), "Invalid url" );
+ ok( method( "http://bassistance." ), "Invalid url" );
+ ok(!method( "http://bassistance,de" ), "Invalid url" );
+ ok(!method( "http://bassistance;de" ), "Invalid url" );
+ ok(!method( "http://.bassistancede" ), "Invalid url" );
+ ok(!method( "bassistance.de" ), "Invalid url" );
+});
+
+test("email", function() {
+ var method = methodTest("email");
+ ok( method( "name@domain.tld" ), "Valid email" );
+ ok( method( "name@domain.tl" ), "Valid email" );
+ ok( method( "bart+bart@tokbox.com" ), "Valid email" );
+ ok( method( "bart+bart@tokbox.travel" ), "Valid email" );
+ ok( method( "n@d.tld" ), "Valid email" );
+ ok( method( "ole@føtex.dk"), "Valid email" );
+ ok( method( "jörn@bassistance.de"), "Valid email" );
+ ok( method( "bla.blu@g.mail.com"), "Valid email" );
+ ok( method( "\"Scott Gonzalez\"@example.com" ), "Valid email" );
+ ok( method( "\"Scott González\"@example.com" ), "Valid email" );
+ ok( method( "\"name.\"@domain.tld" ), "Valid email" ); // valid without top label
+ ok( method( "\"name,\"@domain.tld" ), "Valid email" ); // valid without top label
+ ok( method( "\"name;\"@domain.tld" ), "Valid email" ); // valid without top label
+ ok(!method( "name" ), "Invalid email" );
+ ok(!method( "name@" ), "Invalid email" );
+ ok(!method( "name@domain" ), "Invalid email" );
+ ok(!method( "name.@domain.tld" ), "Invalid email" );
+ ok(!method( "name,@domain.tld" ), "Invalid email" );
+ ok(!method( "name;@domain.tld" ), "Invalid email" );
+});
+
+test("email2 (tld optional)", function() {
+ var method = methodTest("email2");
+ ok( method( "name@domain.tld" ), "Valid email" );
+ ok( method( "name@domain.tl" ), "Valid email" );
+ ok( method( "bart+bart@tokbox.com" ), "Valid email" );
+ ok( method( "bart+bart@tokbox.travel" ), "Valid email" );
+ ok( method( "n@d.tld" ), "Valid email" );
+ ok( method( "ole@føtex.dk"), "Valid email" );
+ ok( method( "jörn@bassistance.de"), "Valid email" );
+ ok( method( "bla.blu@g.mail.com"), "Valid email" );
+ ok( method( "\"Scott Gonzalez\"@example.com" ), "Valid email" );
+ ok( method( "\"Scott González\"@example.com" ), "Valid email" );
+ ok( method( "\"name.\"@domain.tld" ), "Valid email" ); // valid without top label
+ ok( method( "\"name,\"@domain.tld" ), "Valid email" ); // valid without top label
+ ok( method( "\"name;\"@domain.tld" ), "Valid email" ); // valid without top label
+ ok(!method( "name" ), "Invalid email" );
+ ok(!method( "name@" ), "Invalid email" );
+ ok( method( "name@domain" ), "Invalid email" );
+ ok(!method( "name.@domain.tld" ), "Invalid email" );
+ ok(!method( "name,@domain.tld" ), "Invalid email" );
+ ok(!method( "name;@domain.tld" ), "Invalid email" );
+});
+
+test("number", function() {
+ var method = methodTest("number");
+ ok( method( "123" ), "Valid number" );
+ ok( method( "-123" ), "Valid number" );
+ ok( method( "123,000" ), "Valid number" );
+ ok( method( "-123,000" ), "Valid number" );
+ ok( method( "123,000.00" ), "Valid number" );
+ ok( method( "-123,000.00" ), "Valid number" );
+ ok(!method( "123.000,00" ), "Invalid number" );
+ ok(!method( "123.0.0,0" ), "Invalid number" );
+ ok(!method( "x123" ), "Invalid number" );
+ ok(!method( "100.100,0,0" ), "Invalid number" );
+
+ ok( method( "" ), "Blank is valid" );
+ ok( method( "123" ), "Valid decimal" );
+ ok( method( "123000" ), "Valid decimal" );
+ ok( method( "123000.12" ), "Valid decimal" );
+ ok( method( "-123000.12" ), "Valid decimal" );
+ ok( method( "123.000" ), "Valid decimal" );
+ ok( method( "123,000.00" ), "Valid decimal" );
+ ok( method( "-123,000.00" ), "Valid decimal" );
+ ok(!method( "1230,000.00" ), "Invalid decimal" );
+ ok(!method( "123.0.0,0" ), "Invalid decimal" );
+ ok(!method( "x123" ), "Invalid decimal" );
+ ok(!method( "100.100,0,0" ), "Invalid decimal" );
+});
+
+/* disabled for now, need to figure out how to test localized methods
+test("numberDE", function() {
+ var method = methodTest("numberDE");
+ ok( method( "123" ), "Valid numberDE" );
+ ok( method( "-123" ), "Valid numberDE" );
+ ok( method( "123.000" ), "Valid numberDE" );
+ ok( method( "-123.000" ), "Valid numberDE" );
+ ok( method( "123.000,00" ), "Valid numberDE" );
+ ok( method( "-123.000,00" ), "Valid numberDE" );
+ ok(!method( "123,000.00" ), "Invalid numberDE" );
+ ok(!method( "123,0,0.0" ), "Invalid numberDE" );
+ ok(!method( "x123" ), "Invalid numberDE" );
+ ok(!method( "100,100.0.0" ), "Invalid numberDE" );
+
+ ok( method( "" ), "Blank is valid" );
+ ok( method( "123" ), "Valid decimalDE" );
+ ok( method( "123000" ), "Valid decimalDE" );
+ ok( method( "123000,12" ), "Valid decimalDE" );
+ ok( method( "-123000,12" ), "Valid decimalDE" );
+ ok( method( "123.000" ), "Valid decimalDE" );
+ ok( method( "123.000,00" ), "Valid decimalDE" );
+ ok( method( "-123.000,00" ), "Valid decimalDE" )
+ ok(!method( "123.0.0,0" ), "Invalid decimalDE" );
+ ok(!method( "x123" ), "Invalid decimalDE" );
+ ok(!method( "100,100.0.0" ), "Invalid decimalDE" );
+});
+*/
+
+test("date", function() {
+ var method = methodTest("date");
+ ok( method( "06/06/1990" ), "Valid date" );
+ ok( method( "6/6/06" ), "Valid date" );
+ ok(!method( "1990x-06-06" ), "Invalid date" );
+});
+
+test("dateISO", function() {
+ var method = methodTest("dateISO");
+ ok( method( "1990-06-06" ), "Valid date" );
+ ok( method( "1990/06/06" ), "Valid date" );
+ ok( method( "1990-6-6" ), "Valid date" );
+ ok( method( "1990/6/6" ), "Valid date" );
+ ok(!method( "1990-106-06" ), "Invalid date" );
+ ok(!method( "190-06-06" ), "Invalid date" );
+});
+
+/* disabled for now, need to figure out how to test localized methods
+test("dateDE", function() {
+ var method = methodTest("dateDE");
+ ok( method( "03.06.1984" ), "Valid dateDE" );
+ ok( method( "3.6.84" ), "Valid dateDE" );
+ ok(!method( "6-6-06" ), "Invalid dateDE" );
+ ok(!method( "1990-06-06" ), "Invalid dateDE" );
+ ok(!method( "06/06/1990" ), "Invalid dateDE" );
+ ok(!method( "6/6/06" ), "Invalid dateDE" );
+});
+*/
+
+test("required", function() {
+ var v = jQuery("#form").validate(),
+ method = $.validator.methods.required,
+ e = $('#text1, #text1b, #hidden2, #select1, #select2');
+ ok( method.call( v, e[0].value, e[0]), "Valid text input" );
+ ok(!method.call( v, e[1].value, e[1]), "Invalid text input" );
+ ok(!method.call( v, e[1].value, e[2]), "Invalid text input" );
+
+ ok(!method.call( v, e[2].value, e[3]), "Invalid select" );
+ ok( method.call( v, e[3].value, e[4]), "Valid select" );
+
+ e = $('#area1, #area2, #pw1, #pw2');
+ ok( method.call( v, e[0].value, e[0]), "Valid textarea" );
+ ok(!method.call( v, e[1].value, e[1]), "Invalid textarea" );
+ ok( method.call( v, e[2].value, e[2]), "Valid password input" );
+ ok(!method.call( v, e[3].value, e[3]), "Invalid password input" );
+
+ e = $('#radio1, #radio2, #radio3');
+ ok(!method.call( v, e[0].value, e[0]), "Invalid radio" );
+ ok( method.call( v, e[1].value, e[1]), "Valid radio" );
+ ok( method.call( v, e[2].value, e[2]), "Valid radio" );
+
+ e = $('#check1, #check2');
+ ok( method.call( v, e[0].value, e[0]), "Valid checkbox" );
+ ok(!method.call( v, e[1].value, e[1]), "Invalid checkbox" );
+
+ e = $('#select1, #select2, #select3, #select4');
+ ok(!method.call( v, e[0].value, e[0]), "Invalid select" );
+ ok( method.call( v, e[1].value, e[1]), "Valid select" );
+ ok( method.call( v, e[2].value, e[2]), "Valid select" );
+ ok( method.call( v, e[3].value, e[3]), "Valid select" );
+});
+
+test("required with dependencies", function() {
+ var v = jQuery("#form").validate(),
+ method = $.validator.methods.required,
+ e = $('#hidden2, #select1, #area2, #radio1, #check2');
+ ok( method.call( v, e[0].value, e[0], "asffsaa"), "Valid text input due to depencie not met" );
+ ok(!method.call( v, e[0].value, e[0], "input"), "Invalid text input" );
+ ok( method.call( v, e[0].value, e[0], function() { return false; }), "Valid text input due to depencie not met" );
+ ok(!method.call( v, e[0].value, e[0], function() { return true; }), "Invalid text input" );
+ ok( method.call( v, e[1].value, e[1], "asfsfa"), "Valid select due to dependency not met" );
+ ok(!method.call( v, e[1].value, e[1], "input"), "Invalid select" );
+ ok( method.call( v, e[2].value, e[2], "asfsafsfa"), "Valid textarea due to dependency not met" );
+ ok(!method.call( v, e[2].value, e[2], "input"), "Invalid textarea" );
+ ok( method.call( v, e[3].value, e[3], "asfsafsfa"), "Valid radio due to dependency not met" );
+ ok(!method.call( v, e[3].value, e[3], "input"), "Invalid radio" );
+ ok( method.call( v, e[4].value, e[4], "asfsafsfa"), "Valid checkbox due to dependency not met" );
+ ok(!method.call( v, e[4].value, e[4], "input"), "Invalid checkbox" );
+});
+
+test("minlength", function() {
+ var v = jQuery("#form").validate(),
+ method = $.validator.methods.minlength,
+ param = 2,
+ e = $('#text1, #text1c, #text2, #text3');
+ ok( method.call( v, e[0].value, e[0], param), "Valid text input" );
+ ok(!method.call( v, e[1].value, e[1], param), "Invalid text input" );
+ ok(!method.call( v, e[2].value, e[2], param), "Invalid text input" );
+ ok( method.call( v, e[3].value, e[3], param), "Valid text input" );
+
+ e = $('#check1, #check2, #check3');
+ ok(!method.call( v, e[0].value, e[0], param), "Valid checkbox" );
+ ok( method.call( v, e[1].value, e[1], param), "Valid checkbox" );
+ ok( method.call( v, e[2].value, e[2], param), "Invalid checkbox" );
+
+ e = $('#select1, #select2, #select3, #select4, #select5');
+ ok(method.call( v, e[0].value, e[0], param), "Valid select " + e[0].id );
+ ok(!method.call( v, e[1].value, e[1], param), "Invalid select " + e[1].id );
+ ok( method.call( v, e[2].value, e[2], param), "Valid select " + e[2].id );
+ ok( method.call( v, e[3].value, e[3], param), "Valid select " + e[3].id );
+ ok( method.call( v, e[4].value, e[4], param), "Valid select " + e[4].id );
+});
+
+test("maxlength", function() {
+ var v = jQuery("#form").validate();
+ var method = $.validator.methods.maxlength,
+ param = 4,
+ e = $('#text1, #text2, #text3');
+ ok( method.call( v, e[0].value, e[0], param), "Valid text input" );
+ ok( method.call( v, e[1].value, e[1], param), "Valid text input" );
+ ok(!method.call( v, e[2].value, e[2], param), "Invalid text input" );
+
+ e = $('#check1, #check2, #check3');
+ ok( method.call( v, e[0].value, e[0], param), "Valid checkbox" );
+ ok( method.call( v, e[1].value, e[1], param), "Invalid checkbox" );
+ ok(!method.call( v, e[2].value, e[2], param), "Invalid checkbox" );
+
+ e = $('#select1, #select2, #select3, #select4');
+ ok( method.call( v, e[0].value, e[0], param), "Valid select" );
+ ok( method.call( v, e[1].value, e[1], param), "Valid select" );
+ ok( method.call( v, e[2].value, e[2], param), "Valid select" );
+ ok(!method.call( v, e[3].value, e[3], param), "Invalid select" );
+});
+
+test("rangelength", function() {
+ var v = jQuery("#form").validate();
+ var method = $.validator.methods.rangelength,
+ param = [2, 4],
+ e = $('#text1, #text2, #text3');
+ ok( method.call( v, e[0].value, e[0], param), "Valid text input" );
+ ok(!method.call( v, e[1].value, e[1], param), "Invalid text input" );
+ ok(!method.call( v, e[2].value, e[2], param), "Invalid text input" );
+});
+
+test("min", function() {
+ var v = jQuery("#form").validate();
+ var method = $.validator.methods.min,
+ param = 8,
+ e = $('#value1, #value2, #value3');
+ ok(!method.call( v, e[0].value, e[0], param), "Invalid text input" );
+ ok( method.call( v, e[1].value, e[1], param), "Valid text input" );
+ ok( method.call( v, e[2].value, e[2], param), "Valid text input" );
+});
+
+test("max", function() {
+ var v = jQuery("#form").validate();
+ var method = $.validator.methods.max,
+ param = 12,
+ e = $('#value1, #value2, #value3');
+ ok( method.call( v, e[0].value, e[0], param), "Valid text input" );
+ ok( method.call( v, e[1].value, e[1], param), "Valid text input" );
+ ok(!method.call( v, e[2].value, e[2], param), "Invalid text input" );
+});
+
+test("range", function() {
+ var v = jQuery("#form").validate();
+ var method = $.validator.methods.range,
+ param = [4,12],
+ e = $('#value1, #value2, #value3');
+ ok(!method.call( v, e[0].value, e[0], param), "Invalid text input" );
+ ok( method.call( v, e[1].value, e[1], param), "Valid text input" );
+ ok(!method.call( v, e[2].value, e[2], param), "Invalid text input" );
+});
+
+test("equalTo", function() {
+ var v = jQuery("#form").validate();
+ var method = $.validator.methods.equalTo,
+ e = $('#text1, #text2');
+ ok( method.call( v, "Test", e[0], "#text1"), "Text input" );
+ ok( method.call( v, "T", e[1], "#text2"), "Another one" );
+});
+
+test("creditcard", function() {
+ var method = methodTest("creditcard");
+ ok( method( "446-667-651" ), "Valid creditcard number" );
+ ok( !method( "asdf" ), "Invalid creditcard number" );
+});
+
+test("accept", function() {
+ var method = methodTest("accept");
+ ok( method( "picture.gif" ), "Valid default accept type" );
+ ok( method( "picture.jpg" ), "Valid default accept type" );
+ ok( method( "picture.jpeg" ), "Valid default accept type" );
+ ok( method( "picture.png" ), "Valid default accept type" );
+ ok( !method( "picture.pgn" ), "Invalid default accept type" );
+
+ var v = jQuery("#form").validate(),
+ method = function(value, param) {
+ return $.validator.methods.accept.call(v, value, $('#text1')[0], param)
+ };
+ ok( method( "picture.doc", "doc"), "Valid custom accept type" );
+ ok( method( "picture.pdf", "doc|pdf"), "Valid custom accept type" );
+ ok( method( "picture.pdf", "pdf|doc"), "Valid custom accept type" );
+ ok( !method( "picture.pdf", "doc"), "Invalid custom accept type" );
+ ok( !method( "picture.doc", "pdf"), "Invalid custom accept type" );
+
+ ok( method( "picture.pdf", "doc,pdf"), "Valid custom accept type, comma seperated" );
+ ok( method( "picture.pdf", "pdf,doc"), "Valid custom accept type, comma seperated" );
+ ok( !method( "picture.pdf", "gop,top"), "Invalid custom accept type, comma seperated" );
+});
+
+test("remote", function() {
+ expect(7);
+ stop();
+ var e = $("#username");
+ var v = $("#userForm").validate({
+ rules: {
+ username: {
+ required: true,
+ remote: "users.php"
+ }
+ },
+ messages: {
+ username: {
+ required: "Please",
+ remote: jQuery.validator.format("{0} in use")
+ }
+ },
+ submitHandler: function() {
+ ok( false, "submitHandler may never be called when validating only elements");
+ }
+ });
+ $(document).ajaxStop(function() {
+ $(document).unbind("ajaxStop");
+ equals( 1, v.size(), "There must be one error" );
+ equals( "Peter in use", v.errorList[0].message );
+
+ $(document).ajaxStop(function() {
+ $(document).unbind("ajaxStop");
+ equals( 1, v.size(), "There must be one error" );
+ equals( "Peter2 in use", v.errorList[0].message );
+ start();
+ });
+ e.val("Peter2");
+ ok( !v.element(e), "new value, new request" );
+ });
+ ok( !v.element(e), "invalid element, nothing entered yet" );
+ e.val("Peter");
+ ok( !v.element(e), "still invalid, because remote validation must block until it returns" );
+});
+
+test("remote, customized ajax options", function() {
+ expect(2);
+ stop();
+ var v = $("#userForm").validate({
+ rules: {
+ username: {
+ required: true,
+ remote: {
+ url: "users.php",
+ type: "POST",
+ beforeSend: function(request, settings) {
+ same(settings.type, "POST");
+ same(settings.data, "username=asdf&email=email.com");
+ },
+ data: {
+ email: function() {
+ return "email.com";
+ }
+ },
+ complete: function() {
+ start();
+ }
+ }
+ }
+ }
+ });
+ $("#username").val("asdf");
+ $("#userForm").valid();
+});
+
+
+test("remote extensions", function() {
+ expect(5);
+ stop();
+ var e = $("#username");
+ var v = $("#userForm").validate({
+ rules: {
+ username: {
+ required: true,
+ remote: "users2.php"
+ }
+ },
+ messages: {
+ username: {
+ required: "Please"
+ }
+ },
+ submitHandler: function() {
+ ok( false, "submitHandler may never be called when validating only elements");
+ }
+ });
+ $(document).ajaxStop(function() {
+ $(document).unbind("ajaxStop");
+ equals( 1, v.size(), "There must be one error" );
+ equals( v.errorList[0].message, "asdf is already taken, please try something else" );
+ v.element(e);
+ equals( v.errorList[0].message, "asdf is already taken, please try something else", "message doesn't change on revalidation" );
+ start();
+ });
+ ok( !v.element(e), "invalid element, nothing entered yet" );
+ e.val("asdf");
+ ok( !v.element(e), "still invalid, because remote validation must block until it returns" );
+});
+
+module("additional methods");
+
+test("phone (us)", function() {
+ var method = methodTest("phoneUS");
+ ok( method( "1(212)-999-2345" ), "Valid us phone number" );
+ ok( method( "212 999 2344" ), "Valid us phone number" );
+ ok( method( "212-999-0983" ), "Valid us phone number" );
+ ok(!method( "111-123-5434" ), "Invalid us phone number" );
+ ok(!method( "212 123 4567" ), "Invalid us phone number" );
+});
+
+test("dateITA", function() {
+ var method = methodTest("dateITA");
+ ok( method( "01/01/1900" ), "Valid date ITA" );
+ ok(!method( "01/13/1990" ), "Invalid date ITA" );
+ ok(!method( "01.01.1900" ), "Invalid date ITA" );
+});
+
+test("time", function() {
+ var method = methodTest("time");
+ ok( method("00:00"), "Valid time, lower bound" );
+ ok( method("23:59"), "Valid time, upper bound" );
+ ok( !method("24:60"), "Invalid time" );
+ ok( !method("24:00"), "Invalid time" );
+ ok( !method("29:59"), "Invalid time" );
+ ok( !method("30:00"), "Invalid time" );
+});
+
+test("minWords", function() {
+ var method = methodTest("minWords");
+ ok( method("hello worlds", 2), "plain text, valid" );
+ ok( method("<b>hello</b> world", 2), "html, valid" );
+ ok( !method("hello", 2), "plain text, invalid" );
+ ok( !method("<b>world</b>", 2), "html, invalid" );
+ ok( !method("world <br/>", 2), "html, invalid" );
+});
+
+test("maxWords", function() {
+ var method = methodTest("maxWords");
+ ok( method("hello", 2), "plain text, valid" );
+ ok( method("<b>world</b>", 2), "html, valid" );
+ ok( method("world <br/>", 2), "html, valid" );
+ ok( !method("hello worlds", 2), "plain text, invalid" );
+ ok( !method("<b>hello</b> world", 2), "html, invalid" );
+});
+
+function testCardTypeByNumber(number, cardname, expected) {
+ $("#cardnumber").val(number);
+ var actual = $("#ccform").valid();
+ equals(actual, expected, $.format("Expect card number {0} to validate to {1}, actually validated to ", number, expected));
+}
+
+test('creditcardtypes, all', function() {
+ $("#ccform").validate({
+ rules: {
+ cardnumber: {
+ creditcard: true,
+ creditcardtypes: {
+ all: true
+ }
+ }
+ }
+ });
+
+ testCardTypeByNumber("4111-1111-1111-1111", "VISA", true)
+ testCardTypeByNumber("5111-1111-1111-1118", "MasterCard", true)
+ testCardTypeByNumber("6111-1111-1111-1116", "Discover", true)
+ testCardTypeByNumber("3400-0000-0000-009", "AMEX", true);
+
+ testCardTypeByNumber("4111-1111-1111-1110", "VISA", false)
+ testCardTypeByNumber("5432-1111-1111-1111", "MasterCard", false)
+ testCardTypeByNumber("6611-6611-6611-6611", "Discover", false)
+ testCardTypeByNumber("3777-7777-7777-7777", "AMEX", false)
+
+});
+
+test('creditcardtypes, visa', function() {
+ $("#ccform").validate({
+ rules: {
+ cardnumber: {
+ creditcard: true,
+ creditcardtypes: {
+ visa: true
+ }
+ }
+ }
+ });
+
+ testCardTypeByNumber("4111-1111-1111-1111", "VISA", true)
+ testCardTypeByNumber("5111-1111-1111-1118", "MasterCard", false)
+ testCardTypeByNumber("6111-1111-1111-1116", "Discover", false)
+ testCardTypeByNumber("3400-0000-0000-009", "AMEX", false);
+});
+
+test('creditcardtypes, mastercard', function() {
+ $("#ccform").validate({
+ rules: {
+ cardnumber: {
+ creditcard: true,
+ creditcardtypes: {
+ mastercard: true
+ }
+ }
+ }
+ });
+
+ testCardTypeByNumber("5111-1111-1111-1118", "MasterCard", true)
+ testCardTypeByNumber("6111-1111-1111-1116", "Discover", false)
+ testCardTypeByNumber("3400-0000-0000-009", "AMEX", false);
+ testCardTypeByNumber("4111-1111-1111-1111", "VISA", false);
+});
+
+})(jQuery); \ No newline at end of file
diff --git a/bug/bug/jquery-validation-1.8.1/test/qunit/qunit.css b/bug/bug/jquery-validation-1.8.1/test/qunit/qunit.css
new file mode 100644
index 0000000..af25494
--- /dev/null
+++ b/bug/bug/jquery-validation-1.8.1/test/qunit/qunit.css
@@ -0,0 +1,225 @@
+/**
+ * QUnit - A JavaScript Unit Testing Framework
+ *
+ * http://docs.jquery.com/QUnit
+ *
+ * Copyright (c) 2011 John Resig, Jörn Zaefferer
+ * Dual licensed under the MIT (MIT-LICENSE.txt)
+ * or GPL (GPL-LICENSE.txt) licenses.
+ */
+
+/** Font Family and Sizes */
+
+#qunit-tests, #qunit-header, #qunit-banner, #qunit-testrunner-toolbar, #qunit-userAgent, #qunit-testresult {
+ font-family: "Helvetica Neue Light", "HelveticaNeue-Light", "Helvetica Neue", Calibri, Helvetica, Arial;
+}
+
+#qunit-testrunner-toolbar, #qunit-userAgent, #qunit-testresult, #qunit-tests li { font-size: small; }
+#qunit-tests { font-size: smaller; }
+
+
+/** Resets */
+
+#qunit-tests, #qunit-tests ol, #qunit-header, #qunit-banner, #qunit-userAgent, #qunit-testresult {
+ margin: 0;
+ padding: 0;
+}
+
+
+/** Header */
+
+#qunit-header {
+ padding: 0.5em 0 0.5em 1em;
+
+ color: #8699a4;
+ background-color: #0d3349;
+
+ font-size: 1.5em;
+ line-height: 1em;
+ font-weight: normal;
+
+ border-radius: 15px 15px 0 0;
+ -moz-border-radius: 15px 15px 0 0;
+ -webkit-border-top-right-radius: 15px;
+ -webkit-border-top-left-radius: 15px;
+}
+
+#qunit-header a {
+ text-decoration: none;
+ color: #c2ccd1;
+}
+
+#qunit-header a:hover,
+#qunit-header a:focus {
+ color: #fff;
+}
+
+#qunit-banner {
+ height: 5px;
+}
+
+#qunit-testrunner-toolbar {
+ padding: 0.5em 0 0.5em 2em;
+ color: #5E740B;
+ background-color: #eee;
+}
+
+#qunit-userAgent {
+ padding: 0.5em 0 0.5em 2.5em;
+ background-color: #2b81af;
+ color: #fff;
+ text-shadow: rgba(0, 0, 0, 0.5) 2px 2px 1px;
+}
+
+
+/** Tests: Pass/Fail */
+
+#qunit-tests {
+ list-style-position: inside;
+}
+
+#qunit-tests li {
+ padding: 0.4em 0.5em 0.4em 2.5em;
+ border-bottom: 1px solid #fff;
+ list-style-position: inside;
+}
+
+#qunit-tests.hidepass li.pass, #qunit-tests.hidepass li.running {
+ display: none;
+}
+
+#qunit-tests li strong {
+ cursor: pointer;
+}
+
+#qunit-tests li a {
+ padding: 0.5em;
+ color: #c2ccd1;
+ text-decoration: none;
+}
+#qunit-tests li a:hover,
+#qunit-tests li a:focus {
+ color: #000;
+}
+
+#qunit-tests ol {
+ margin-top: 0.5em;
+ padding: 0.5em;
+
+ background-color: #fff;
+
+ border-radius: 15px;
+ -moz-border-radius: 15px;
+ -webkit-border-radius: 15px;
+
+ box-shadow: inset 0px 2px 13px #999;
+ -moz-box-shadow: inset 0px 2px 13px #999;
+ -webkit-box-shadow: inset 0px 2px 13px #999;
+}
+
+#qunit-tests table {
+ border-collapse: collapse;
+ margin-top: .2em;
+}
+
+#qunit-tests th {
+ text-align: right;
+ vertical-align: top;
+ padding: 0 .5em 0 0;
+}
+
+#qunit-tests td {
+ vertical-align: top;
+}
+
+#qunit-tests pre {
+ margin: 0;
+ white-space: pre-wrap;
+ word-wrap: break-word;
+}
+
+#qunit-tests del {
+ background-color: #e0f2be;
+ color: #374e0c;
+ text-decoration: none;
+}
+
+#qunit-tests ins {
+ background-color: #ffcaca;
+ color: #500;
+ text-decoration: none;
+}
+
+/*** Test Counts */
+
+#qunit-tests b.counts { color: black; }
+#qunit-tests b.passed { color: #5E740B; }
+#qunit-tests b.failed { color: #710909; }
+
+#qunit-tests li li {
+ margin: 0.5em;
+ padding: 0.4em 0.5em 0.4em 0.5em;
+ background-color: #fff;
+ border-bottom: none;
+ list-style-position: inside;
+}
+
+/*** Passing Styles */
+
+#qunit-tests li li.pass {
+ color: #5E740B;
+ background-color: #fff;
+ border-left: 26px solid #C6E746;
+}
+
+#qunit-tests .pass { color: #528CE0; background-color: #D2E0E6; }
+#qunit-tests .pass .test-name { color: #366097; }
+
+#qunit-tests .pass .test-actual,
+#qunit-tests .pass .test-expected { color: #999999; }
+
+#qunit-banner.qunit-pass { background-color: #C6E746; }
+
+/*** Failing Styles */
+
+#qunit-tests li li.fail {
+ color: #710909;
+ background-color: #fff;
+ border-left: 26px solid #EE5757;
+}
+
+#qunit-tests > li:last-child {
+ border-radius: 0 0 15px 15px;
+ -moz-border-radius: 0 0 15px 15px;
+ -webkit-border-bottom-right-radius: 15px;
+ -webkit-border-bottom-left-radius: 15px;
+}
+
+#qunit-tests .fail { color: #000000; background-color: #EE5757; }
+#qunit-tests .fail .test-name,
+#qunit-tests .fail .module-name { color: #000000; }
+
+#qunit-tests .fail .test-actual { color: #EE5757; }
+#qunit-tests .fail .test-expected { color: green; }
+
+#qunit-banner.qunit-fail { background-color: #EE5757; }
+
+
+/** Result */
+
+#qunit-testresult {
+ padding: 0.5em 0.5em 0.5em 2.5em;
+
+ color: #2b81af;
+ background-color: #D2E0E6;
+
+ border-bottom: 1px solid white;
+}
+
+/** Fixture */
+
+#qunit-fixture {
+ position: absolute;
+ top: -10000px;
+ left: -10000px;
+}
diff --git a/bug/bug/jquery-validation-1.8.1/test/qunit/qunit.js b/bug/bug/jquery-validation-1.8.1/test/qunit/qunit.js
new file mode 100644
index 0000000..931366d
--- /dev/null
+++ b/bug/bug/jquery-validation-1.8.1/test/qunit/qunit.js
@@ -0,0 +1,1442 @@
+/**
+ * QUnit - A JavaScript Unit Testing Framework
+ *
+ * http://docs.jquery.com/QUnit
+ *
+ * Copyright (c) 2011 John Resig, Jörn Zaefferer
+ * Dual licensed under the MIT (MIT-LICENSE.txt)
+ * or GPL (GPL-LICENSE.txt) licenses.
+ */
+
+(function(window) {
+
+var defined = {
+ setTimeout: typeof window.setTimeout !== "undefined",
+ sessionStorage: (function() {
+ try {
+ return !!sessionStorage.getItem;
+ } catch(e){
+ return false;
+ }
+ })()
+};
+
+var testId = 0;
+
+var Test = function(name, testName, expected, testEnvironmentArg, async, callback) {
+ this.name = name;
+ this.testName = testName;
+ this.expected = expected;
+ this.testEnvironmentArg = testEnvironmentArg;
+ this.async = async;
+ this.callback = callback;
+ this.assertions = [];
+};
+Test.prototype = {
+ init: function() {
+ var tests = id("qunit-tests");
+ if (tests) {
+ var b = document.createElement("strong");
+ b.innerHTML = "Running " + this.name;
+ var li = document.createElement("li");
+ li.appendChild( b );
+ li.className = "running";
+ li.id = this.id = "test-output" + testId++;
+ tests.appendChild( li );
+ }
+ },
+ setup: function() {
+ if (this.module != config.previousModule) {
+ if ( config.previousModule ) {
+ QUnit.moduleDone( {
+ name: config.previousModule,
+ failed: config.moduleStats.bad,
+ passed: config.moduleStats.all - config.moduleStats.bad,
+ total: config.moduleStats.all
+ } );
+ }
+ config.previousModule = this.module;
+ config.moduleStats = { all: 0, bad: 0 };
+ QUnit.moduleStart( {
+ name: this.module
+ } );
+ }
+
+ config.current = this;
+ this.testEnvironment = extend({
+ setup: function() {},
+ teardown: function() {}
+ }, this.moduleTestEnvironment);
+ if (this.testEnvironmentArg) {
+ extend(this.testEnvironment, this.testEnvironmentArg);
+ }
+
+ QUnit.testStart( {
+ name: this.testName
+ } );
+
+ // allow utility functions to access the current test environment
+ // TODO why??
+ QUnit.current_testEnvironment = this.testEnvironment;
+
+ try {
+ if ( !config.pollution ) {
+ saveGlobal();
+ }
+
+ this.testEnvironment.setup.call(this.testEnvironment);
+ } catch(e) {
+ QUnit.ok( false, "Setup failed on " + this.testName + ": " + e.message );
+ }
+ },
+ run: function() {
+ if ( this.async ) {
+ QUnit.stop();
+ }
+
+ if ( config.notrycatch ) {
+ this.callback.call(this.testEnvironment);
+ return;
+ }
+ try {
+ this.callback.call(this.testEnvironment);
+ } catch(e) {
+ fail("Test " + this.testName + " died, exception and test follows", e, this.callback);
+ QUnit.ok( false, "Died on test #" + (this.assertions.length + 1) + ": " + e.message + " - " + QUnit.jsDump.parse(e) );
+ // else next test will carry the responsibility
+ saveGlobal();
+
+ // Restart the tests if they're blocking
+ if ( config.blocking ) {
+ start();
+ }
+ }
+ },
+ teardown: function() {
+ try {
+ checkPollution();
+ this.testEnvironment.teardown.call(this.testEnvironment);
+ } catch(e) {
+ QUnit.ok( false, "Teardown failed on " + this.testName + ": " + e.message );
+ }
+ },
+ finish: function() {
+ if ( this.expected && this.expected != this.assertions.length ) {
+ QUnit.ok( false, "Expected " + this.expected + " assertions, but " + this.assertions.length + " were run" );
+ }
+
+ var good = 0, bad = 0,
+ tests = id("qunit-tests");
+
+ config.stats.all += this.assertions.length;
+ config.moduleStats.all += this.assertions.length;
+
+ if ( tests ) {
+ var ol = document.createElement("ol");
+
+ for ( var i = 0; i < this.assertions.length; i++ ) {
+ var assertion = this.assertions[i];
+
+ var li = document.createElement("li");
+ li.className = assertion.result ? "pass" : "fail";
+ li.innerHTML = assertion.message || (assertion.result ? "okay" : "failed");
+ ol.appendChild( li );
+
+ if ( assertion.result ) {
+ good++;
+ } else {
+ bad++;
+ config.stats.bad++;
+ config.moduleStats.bad++;
+ }
+ }
+
+ // store result when possible
+ if ( QUnit.config.reorder && defined.sessionStorage ) {
+ if (bad) {
+ sessionStorage.setItem("qunit-" + this.module + "-" + this.testName, bad);
+ } else {
+ sessionStorage.removeItem("qunit-" + this.module + "-" + this.testName);
+ }
+ }
+
+ if (bad == 0) {
+ ol.style.display = "none";
+ }
+
+ var b = document.createElement("strong");
+ b.innerHTML = this.name + " <b class='counts'>(<b class='failed'>" + bad + "</b>, <b class='passed'>" + good + "</b>, " + this.assertions.length + ")</b>";
+
+ var a = document.createElement("a");
+ a.innerHTML = "Rerun";
+ a.href = QUnit.url({ filter: getText([b]).replace(/\([^)]+\)$/, "").replace(/(^\s*|\s*$)/g, "") });
+
+ addEvent(b, "click", function() {
+ var next = b.nextSibling.nextSibling,
+ display = next.style.display;
+ next.style.display = display === "none" ? "block" : "none";
+ });
+
+ addEvent(b, "dblclick", function(e) {
+ var target = e && e.target ? e.target : window.event.srcElement;
+ if ( target.nodeName.toLowerCase() == "span" || target.nodeName.toLowerCase() == "b" ) {
+ target = target.parentNode;
+ }
+ if ( window.location && target.nodeName.toLowerCase() === "strong" ) {
+ window.location = QUnit.url({ filter: getText([target]).replace(/\([^)]+\)$/, "").replace(/(^\s*|\s*$)/g, "") });
+ }
+ });
+
+ var li = id(this.id);
+ li.className = bad ? "fail" : "pass";
+ li.removeChild( li.firstChild );
+ li.appendChild( b );
+ li.appendChild( a );
+ li.appendChild( ol );
+
+ } else {
+ for ( var i = 0; i < this.assertions.length; i++ ) {
+ if ( !this.assertions[i].result ) {
+ bad++;
+ config.stats.bad++;
+ config.moduleStats.bad++;
+ }
+ }
+ }
+
+ try {
+ QUnit.reset();
+ } catch(e) {
+ fail("reset() failed, following Test " + this.testName + ", exception and reset fn follows", e, QUnit.reset);
+ }
+
+ QUnit.testDone( {
+ name: this.testName,
+ failed: bad,
+ passed: this.assertions.length - bad,
+ total: this.assertions.length
+ } );
+ },
+
+ queue: function() {
+ var test = this;
+ synchronize(function() {
+ test.init();
+ });
+ function run() {
+ // each of these can by async
+ synchronize(function() {
+ test.setup();
+ });
+ synchronize(function() {
+ test.run();
+ });
+ synchronize(function() {
+ test.teardown();
+ });
+ synchronize(function() {
+ test.finish();
+ });
+ }
+ // defer when previous test run passed, if storage is available
+ var bad = QUnit.config.reorder && defined.sessionStorage && +sessionStorage.getItem("qunit-" + this.module + "-" + this.testName);
+ if (bad) {
+ run();
+ } else {
+ synchronize(run);
+ };
+ }
+
+};
+
+var QUnit = {
+
+ // call on start of module test to prepend name to all tests
+ module: function(name, testEnvironment) {
+ config.currentModule = name;
+ config.currentModuleTestEnviroment = testEnvironment;
+ },
+
+ asyncTest: function(testName, expected, callback) {
+ if ( arguments.length === 2 ) {
+ callback = expected;
+ expected = 0;
+ }
+
+ QUnit.test(testName, expected, callback, true);
+ },
+
+ test: function(testName, expected, callback, async) {
+ var name = '<span class="test-name">' + testName + '</span>', testEnvironmentArg;
+
+ if ( arguments.length === 2 ) {
+ callback = expected;
+ expected = null;
+ }
+ // is 2nd argument a testEnvironment?
+ if ( expected && typeof expected === 'object') {
+ testEnvironmentArg = expected;
+ expected = null;
+ }
+
+ if ( config.currentModule ) {
+ name = '<span class="module-name">' + config.currentModule + "</span>: " + name;
+ }
+
+ if ( !validTest(config.currentModule + ": " + testName) ) {
+ return;
+ }
+
+ var test = new Test(name, testName, expected, testEnvironmentArg, async, callback);
+ test.module = config.currentModule;
+ test.moduleTestEnvironment = config.currentModuleTestEnviroment;
+ test.queue();
+ },
+
+ /**
+ * Specify the number of expected assertions to gurantee that failed test (no assertions are run at all) don't slip through.
+ */
+ expect: function(asserts) {
+ config.current.expected = asserts;
+ },
+
+ /**
+ * Asserts true.
+ * @example ok( "asdfasdf".length > 5, "There must be at least 5 chars" );
+ */
+ ok: function(a, msg) {
+ a = !!a;
+ var details = {
+ result: a,
+ message: msg
+ };
+ msg = escapeHtml(msg);
+ QUnit.log(details);
+ config.current.assertions.push({
+ result: a,
+ message: msg
+ });
+ },
+
+ /**
+ * Checks that the first two arguments are equal, with an optional message.
+ * Prints out both actual and expected values.
+ *
+ * Prefered to ok( actual == expected, message )
+ *
+ * @example equal( format("Received {0} bytes.", 2), "Received 2 bytes." );
+ *
+ * @param Object actual
+ * @param Object expected
+ * @param String message (optional)
+ */
+ equal: function(actual, expected, message) {
+ QUnit.push(expected == actual, actual, expected, message);
+ },
+
+ notEqual: function(actual, expected, message) {
+ QUnit.push(expected != actual, actual, expected, message);
+ },
+
+ deepEqual: function(actual, expected, message) {
+ QUnit.push(QUnit.equiv(actual, expected), actual, expected, message);
+ },
+
+ notDeepEqual: function(actual, expected, message) {
+ QUnit.push(!QUnit.equiv(actual, expected), actual, expected, message);
+ },
+
+ strictEqual: function(actual, expected, message) {
+ QUnit.push(expected === actual, actual, expected, message);
+ },
+
+ notStrictEqual: function(actual, expected, message) {
+ QUnit.push(expected !== actual, actual, expected, message);
+ },
+
+ raises: function(block, expected, message) {
+ var actual, ok = false;
+
+ if (typeof expected === 'string') {
+ message = expected;
+ expected = null;
+ }
+
+ try {
+ block();
+ } catch (e) {
+ actual = e;
+ }
+
+ if (actual) {
+ // we don't want to validate thrown error
+ if (!expected) {
+ ok = true;
+ // expected is a regexp
+ } else if (QUnit.objectType(expected) === "regexp") {
+ ok = expected.test(actual);
+ // expected is a constructor
+ } else if (actual instanceof expected) {
+ ok = true;
+ // expected is a validation function which returns true is validation passed
+ } else if (expected.call({}, actual) === true) {
+ ok = true;
+ }
+ }
+
+ QUnit.ok(ok, message);
+ },
+
+ start: function() {
+ config.semaphore--;
+ if (config.semaphore > 0) {
+ // don't start until equal number of stop-calls
+ return;
+ }
+ if (config.semaphore < 0) {
+ // ignore if start is called more often then stop
+ config.semaphore = 0;
+ }
+ // A slight delay, to avoid any current callbacks
+ if ( defined.setTimeout ) {
+ window.setTimeout(function() {
+ if ( config.timeout ) {
+ clearTimeout(config.timeout);
+ }
+
+ config.blocking = false;
+ process();
+ }, 13);
+ } else {
+ config.blocking = false;
+ process();
+ }
+ },
+
+ stop: function(timeout) {
+ config.semaphore++;
+ config.blocking = true;
+
+ if ( timeout && defined.setTimeout ) {
+ clearTimeout(config.timeout);
+ config.timeout = window.setTimeout(function() {
+ QUnit.ok( false, "Test timed out" );
+ QUnit.start();
+ }, timeout);
+ }
+ }
+};
+
+// Backwards compatibility, deprecated
+QUnit.equals = QUnit.equal;
+QUnit.same = QUnit.deepEqual;
+
+// Maintain internal state
+var config = {
+ // The queue of tests to run
+ queue: [],
+
+ // block until document ready
+ blocking: true,
+
+ // by default, run previously failed tests first
+ // very useful in combination with "Hide passed tests" checked
+ reorder: true,
+
+ noglobals: false,
+ notrycatch: false
+};
+
+// Load paramaters
+(function() {
+ var location = window.location || { search: "", protocol: "file:" },
+ params = location.search.slice( 1 ).split( "&" ),
+ length = params.length,
+ urlParams = {},
+ current;
+
+ if ( params[ 0 ] ) {
+ for ( var i = 0; i < length; i++ ) {
+ current = params[ i ].split( "=" );
+ current[ 0 ] = decodeURIComponent( current[ 0 ] );
+ // allow just a key to turn on a flag, e.g., test.html?noglobals
+ current[ 1 ] = current[ 1 ] ? decodeURIComponent( current[ 1 ] ) : true;
+ urlParams[ current[ 0 ] ] = current[ 1 ];
+ if ( current[ 0 ] in config ) {
+ config[ current[ 0 ] ] = current[ 1 ];
+ }
+ }
+ }
+
+ QUnit.urlParams = urlParams;
+ config.filter = urlParams.filter;
+
+ // Figure out if we're running the tests from a server or not
+ QUnit.isLocal = !!(location.protocol === 'file:');
+})();
+
+// Expose the API as global variables, unless an 'exports'
+// object exists, in that case we assume we're in CommonJS
+if ( typeof exports === "undefined" || typeof require === "undefined" ) {
+ extend(window, QUnit);
+ window.QUnit = QUnit;
+} else {
+ extend(exports, QUnit);
+ exports.QUnit = QUnit;
+}
+
+// define these after exposing globals to keep them in these QUnit namespace only
+extend(QUnit, {
+ config: config,
+
+ // Initialize the configuration options
+ init: function() {
+ extend(config, {
+ stats: { all: 0, bad: 0 },
+ moduleStats: { all: 0, bad: 0 },
+ started: +new Date,
+ updateRate: 1000,
+ blocking: false,
+ autostart: true,
+ autorun: false,
+ filter: "",
+ queue: [],
+ semaphore: 0
+ });
+
+ var tests = id( "qunit-tests" ),
+ banner = id( "qunit-banner" ),
+ result = id( "qunit-testresult" );
+
+ if ( tests ) {
+ tests.innerHTML = "";
+ }
+
+ if ( banner ) {
+ banner.className = "";
+ }
+
+ if ( result ) {
+ result.parentNode.removeChild( result );
+ }
+
+ if ( tests ) {
+ result = document.createElement( "p" );
+ result.id = "qunit-testresult";
+ result.className = "result";
+ tests.parentNode.insertBefore( result, tests );
+ result.innerHTML = 'Running...<br/>&nbsp;';
+ }
+ },
+
+ /**
+ * Resets the test setup. Useful for tests that modify the DOM.
+ *
+ * If jQuery is available, uses jQuery's html(), otherwise just innerHTML.
+ */
+ reset: function() {
+ if ( window.jQuery ) {
+ jQuery( "#qunit-fixture" ).html( config.fixture );
+ } else {
+ var main = id( 'qunit-fixture' );
+ if ( main ) {
+ main.innerHTML = config.fixture;
+ }
+ }
+ },
+
+ /**
+ * Trigger an event on an element.
+ *
+ * @example triggerEvent( document.body, "click" );
+ *
+ * @param DOMElement elem
+ * @param String type
+ */
+ triggerEvent: function( elem, type, event ) {
+ if ( document.createEvent ) {
+ event = document.createEvent("MouseEvents");
+ event.initMouseEvent(type, true, true, elem.ownerDocument.defaultView,
+ 0, 0, 0, 0, 0, false, false, false, false, 0, null);
+ elem.dispatchEvent( event );
+
+ } else if ( elem.fireEvent ) {
+ elem.fireEvent("on"+type);
+ }
+ },
+
+ // Safe object type checking
+ is: function( type, obj ) {
+ return QUnit.objectType( obj ) == type;
+ },
+
+ objectType: function( obj ) {
+ if (typeof obj === "undefined") {
+ return "undefined";
+
+ // consider: typeof null === object
+ }
+ if (obj === null) {
+ return "null";
+ }
+
+ var type = Object.prototype.toString.call( obj )
+ .match(/^\[object\s(.*)\]$/)[1] || '';
+
+ switch (type) {
+ case 'Number':
+ if (isNaN(obj)) {
+ return "nan";
+ } else {
+ return "number";
+ }
+ case 'String':
+ case 'Boolean':
+ case 'Array':
+ case 'Date':
+ case 'RegExp':
+ case 'Function':
+ return type.toLowerCase();
+ }
+ if (typeof obj === "object") {
+ return "object";
+ }
+ return undefined;
+ },
+
+ push: function(result, actual, expected, message) {
+ var details = {
+ result: result,
+ message: message,
+ actual: actual,
+ expected: expected
+ };
+
+ message = escapeHtml(message) || (result ? "okay" : "failed");
+ message = '<span class="test-message">' + message + "</span>";
+ expected = escapeHtml(QUnit.jsDump.parse(expected));
+ actual = escapeHtml(QUnit.jsDump.parse(actual));
+ var output = message + '<table><tr class="test-expected"><th>Expected: </th><td><pre>' + expected + '</pre></td></tr>';
+ if (actual != expected) {
+ output += '<tr class="test-actual"><th>Result: </th><td><pre>' + actual + '</pre></td></tr>';
+ output += '<tr class="test-diff"><th>Diff: </th><td><pre>' + QUnit.diff(expected, actual) +'</pre></td></tr>';
+ }
+ if (!result) {
+ var source = sourceFromStacktrace();
+ if (source) {
+ details.source = source;
+ output += '<tr class="test-source"><th>Source: </th><td><pre>' + source +'</pre></td></tr>';
+ }
+ }
+ output += "</table>";
+
+ QUnit.log(details);
+
+ config.current.assertions.push({
+ result: !!result,
+ message: output
+ });
+ },
+
+ url: function( params ) {
+ params = extend( extend( {}, QUnit.urlParams ), params );
+ var querystring = "?",
+ key;
+ for ( key in params ) {
+ querystring += encodeURIComponent( key ) + "=" +
+ encodeURIComponent( params[ key ] ) + "&";
+ }
+ return window.location.pathname + querystring.slice( 0, -1 );
+ },
+
+ // Logging callbacks; all receive a single argument with the listed properties
+ // run test/logs.html for any related changes
+ begin: function() {},
+ // done: { failed, passed, total, runtime }
+ done: function() {},
+ // log: { result, actual, expected, message }
+ log: function() {},
+ // testStart: { name }
+ testStart: function() {},
+ // testDone: { name, failed, passed, total }
+ testDone: function() {},
+ // moduleStart: { name }
+ moduleStart: function() {},
+ // moduleDone: { name, failed, passed, total }
+ moduleDone: function() {}
+});
+
+if ( typeof document === "undefined" || document.readyState === "complete" ) {
+ config.autorun = true;
+}
+
+addEvent(window, "load", function() {
+ QUnit.begin({});
+
+ // Initialize the config, saving the execution queue
+ var oldconfig = extend({}, config);
+ QUnit.init();
+ extend(config, oldconfig);
+
+ config.blocking = false;
+
+ var userAgent = id("qunit-userAgent");
+ if ( userAgent ) {
+ userAgent.innerHTML = navigator.userAgent;
+ }
+ var banner = id("qunit-header");
+ if ( banner ) {
+ banner.innerHTML = '<a href="' + QUnit.url({ filter: undefined }) + '"> ' + banner.innerHTML + '</a> ' +
+ '<label><input name="noglobals" type="checkbox"' + ( config.noglobals ? ' checked="checked"' : '' ) + '>noglobals</label>' +
+ '<label><input name="notrycatch" type="checkbox"' + ( config.notrycatch ? ' checked="checked"' : '' ) + '>notrycatch</label>';
+ addEvent( banner, "change", function( event ) {
+ var params = {};
+ params[ event.target.name ] = event.target.checked ? true : undefined;
+ window.location = QUnit.url( params );
+ });
+ }
+
+ var toolbar = id("qunit-testrunner-toolbar");
+ if ( toolbar ) {
+ var filter = document.createElement("input");
+ filter.type = "checkbox";
+ filter.id = "qunit-filter-pass";
+ addEvent( filter, "click", function() {
+ var ol = document.getElementById("qunit-tests");
+ if ( filter.checked ) {
+ ol.className = ol.className + " hidepass";
+ } else {
+ var tmp = " " + ol.className.replace( /[\n\t\r]/g, " " ) + " ";
+ ol.className = tmp.replace(/ hidepass /, " ");
+ }
+ if ( defined.sessionStorage ) {
+ if (filter.checked) {
+ sessionStorage.setItem("qunit-filter-passed-tests", "true");
+ } else {
+ sessionStorage.removeItem("qunit-filter-passed-tests");
+ }
+ }
+ });
+ if ( defined.sessionStorage && sessionStorage.getItem("qunit-filter-passed-tests") ) {
+ filter.checked = true;
+ var ol = document.getElementById("qunit-tests");
+ ol.className = ol.className + " hidepass";
+ }
+ toolbar.appendChild( filter );
+
+ var label = document.createElement("label");
+ label.setAttribute("for", "qunit-filter-pass");
+ label.innerHTML = "Hide passed tests";
+ toolbar.appendChild( label );
+ }
+
+ var main = id('qunit-fixture');
+ if ( main ) {
+ config.fixture = main.innerHTML;
+ }
+
+ if (config.autostart) {
+ QUnit.start();
+ }
+});
+
+function done() {
+ config.autorun = true;
+
+ // Log the last module results
+ if ( config.currentModule ) {
+ QUnit.moduleDone( {
+ name: config.currentModule,
+ failed: config.moduleStats.bad,
+ passed: config.moduleStats.all - config.moduleStats.bad,
+ total: config.moduleStats.all
+ } );
+ }
+
+ var banner = id("qunit-banner"),
+ tests = id("qunit-tests"),
+ runtime = +new Date - config.started,
+ passed = config.stats.all - config.stats.bad,
+ html = [
+ 'Tests completed in ',
+ runtime,
+ ' milliseconds.<br/>',
+ '<span class="passed">',
+ passed,
+ '</span> tests of <span class="total">',
+ config.stats.all,
+ '</span> passed, <span class="failed">',
+ config.stats.bad,
+ '</span> failed.'
+ ].join('');
+
+ if ( banner ) {
+ banner.className = (config.stats.bad ? "qunit-fail" : "qunit-pass");
+ }
+
+ if ( tests ) {
+ id( "qunit-testresult" ).innerHTML = html;
+ }
+
+ QUnit.done( {
+ failed: config.stats.bad,
+ passed: passed,
+ total: config.stats.all,
+ runtime: runtime
+ } );
+}
+
+function validTest( name ) {
+ var filter = config.filter,
+ run = false;
+
+ if ( !filter ) {
+ return true;
+ }
+
+ not = filter.charAt( 0 ) === "!";
+ if ( not ) {
+ filter = filter.slice( 1 );
+ }
+
+ if ( name.indexOf( filter ) !== -1 ) {
+ return !not;
+ }
+
+ if ( not ) {
+ run = true;
+ }
+
+ return run;
+}
+
+// so far supports only Firefox, Chrome and Opera (buggy)
+// could be extended in the future to use something like https://github.com/csnover/TraceKit
+function sourceFromStacktrace() {
+ try {
+ throw new Error();
+ } catch ( e ) {
+ if (e.stacktrace) {
+ // Opera
+ return e.stacktrace.split("\n")[6];
+ } else if (e.stack) {
+ // Firefox, Chrome
+ return e.stack.split("\n")[4];
+ }
+ }
+}
+
+function escapeHtml(s) {
+ if (!s) {
+ return "";
+ }
+ s = s + "";
+ return s.replace(/[\&"<>\\]/g, function(s) {
+ switch(s) {
+ case "&": return "&amp;";
+ case "\\": return "\\\\";
+ case '"': return '\"';
+ case "<": return "&lt;";
+ case ">": return "&gt;";
+ default: return s;
+ }
+ });
+}
+
+function synchronize( callback ) {
+ config.queue.push( callback );
+
+ if ( config.autorun && !config.blocking ) {
+ process();
+ }
+}
+
+function process() {
+ var start = (new Date()).getTime();
+
+ while ( config.queue.length && !config.blocking ) {
+ if ( config.updateRate <= 0 || (((new Date()).getTime() - start) < config.updateRate) ) {
+ config.queue.shift()();
+ } else {
+ window.setTimeout( process, 13 );
+ break;
+ }
+ }
+ if (!config.blocking && !config.queue.length) {
+ done();
+ }
+}
+
+function saveGlobal() {
+ config.pollution = [];
+
+ if ( config.noglobals ) {
+ for ( var key in window ) {
+ config.pollution.push( key );
+ }
+ }
+}
+
+function checkPollution( name ) {
+ var old = config.pollution;
+ saveGlobal();
+
+ var newGlobals = diff( config.pollution, old );
+ if ( newGlobals.length > 0 ) {
+ ok( false, "Introduced global variable(s): " + newGlobals.join(", ") );
+ }
+
+ var deletedGlobals = diff( old, config.pollution );
+ if ( deletedGlobals.length > 0 ) {
+ ok( false, "Deleted global variable(s): " + deletedGlobals.join(", ") );
+ }
+}
+
+// returns a new Array with the elements that are in a but not in b
+function diff( a, b ) {
+ var result = a.slice();
+ for ( var i = 0; i < result.length; i++ ) {
+ for ( var j = 0; j < b.length; j++ ) {
+ if ( result[i] === b[j] ) {
+ result.splice(i, 1);
+ i--;
+ break;
+ }
+ }
+ }
+ return result;
+}
+
+function fail(message, exception, callback) {
+ if ( typeof console !== "undefined" && console.error && console.warn ) {
+ console.error(message);
+ console.error(exception);
+ console.warn(callback.toString());
+
+ } else if ( window.opera && opera.postError ) {
+ opera.postError(message, exception, callback.toString);
+ }
+}
+
+function extend(a, b) {
+ for ( var prop in b ) {
+ if ( b[prop] === undefined ) {
+ delete a[prop];
+ } else {
+ a[prop] = b[prop];
+ }
+ }
+
+ return a;
+}
+
+function addEvent(elem, type, fn) {
+ if ( elem.addEventListener ) {
+ elem.addEventListener( type, fn, false );
+ } else if ( elem.attachEvent ) {
+ elem.attachEvent( "on" + type, fn );
+ } else {
+ fn();
+ }
+}
+
+function id(name) {
+ return !!(typeof document !== "undefined" && document && document.getElementById) &&
+ document.getElementById( name );
+}
+
+// Test for equality any JavaScript type.
+// Discussions and reference: http://philrathe.com/articles/equiv
+// Test suites: http://philrathe.com/tests/equiv
+// Author: Philippe Rathé <prathe@gmail.com>
+QUnit.equiv = function () {
+
+ var innerEquiv; // the real equiv function
+ var callers = []; // stack to decide between skip/abort functions
+ var parents = []; // stack to avoiding loops from circular referencing
+
+ // Call the o related callback with the given arguments.
+ function bindCallbacks(o, callbacks, args) {
+ var prop = QUnit.objectType(o);
+ if (prop) {
+ if (QUnit.objectType(callbacks[prop]) === "function") {
+ return callbacks[prop].apply(callbacks, args);
+ } else {
+ return callbacks[prop]; // or undefined
+ }
+ }
+ }
+
+ var callbacks = function () {
+
+ // for string, boolean, number and null
+ function useStrictEquality(b, a) {
+ if (b instanceof a.constructor || a instanceof b.constructor) {
+ // to catch short annotaion VS 'new' annotation of a declaration
+ // e.g. var i = 1;
+ // var j = new Number(1);
+ return a == b;
+ } else {
+ return a === b;
+ }
+ }
+
+ return {
+ "string": useStrictEquality,
+ "boolean": useStrictEquality,
+ "number": useStrictEquality,
+ "null": useStrictEquality,
+ "undefined": useStrictEquality,
+
+ "nan": function (b) {
+ return isNaN(b);
+ },
+
+ "date": function (b, a) {
+ return QUnit.objectType(b) === "date" && a.valueOf() === b.valueOf();
+ },
+
+ "regexp": function (b, a) {
+ return QUnit.objectType(b) === "regexp" &&
+ a.source === b.source && // the regex itself
+ a.global === b.global && // and its modifers (gmi) ...
+ a.ignoreCase === b.ignoreCase &&
+ a.multiline === b.multiline;
+ },
+
+ // - skip when the property is a method of an instance (OOP)
+ // - abort otherwise,
+ // initial === would have catch identical references anyway
+ "function": function () {
+ var caller = callers[callers.length - 1];
+ return caller !== Object &&
+ typeof caller !== "undefined";
+ },
+
+ "array": function (b, a) {
+ var i, j, loop;
+ var len;
+
+ // b could be an object literal here
+ if ( ! (QUnit.objectType(b) === "array")) {
+ return false;
+ }
+
+ len = a.length;
+ if (len !== b.length) { // safe and faster
+ return false;
+ }
+
+ //track reference to avoid circular references
+ parents.push(a);
+ for (i = 0; i < len; i++) {
+ loop = false;
+ for(j=0;j<parents.length;j++){
+ if(parents[j] === a[i]){
+ loop = true;//dont rewalk array
+ }
+ }
+ if (!loop && ! innerEquiv(a[i], b[i])) {
+ parents.pop();
+ return false;
+ }
+ }
+ parents.pop();
+ return true;
+ },
+
+ "object": function (b, a) {
+ var i, j, loop;
+ var eq = true; // unless we can proove it
+ var aProperties = [], bProperties = []; // collection of strings
+
+ // comparing constructors is more strict than using instanceof
+ if ( a.constructor !== b.constructor) {
+ return false;
+ }
+
+ // stack constructor before traversing properties
+ callers.push(a.constructor);
+ //track reference to avoid circular references
+ parents.push(a);
+
+ for (i in a) { // be strict: don't ensures hasOwnProperty and go deep
+ loop = false;
+ for(j=0;j<parents.length;j++){
+ if(parents[j] === a[i])
+ loop = true; //don't go down the same path twice
+ }
+ aProperties.push(i); // collect a's properties
+
+ if (!loop && ! innerEquiv(a[i], b[i])) {
+ eq = false;
+ break;
+ }
+ }
+
+ callers.pop(); // unstack, we are done
+ parents.pop();
+
+ for (i in b) {
+ bProperties.push(i); // collect b's properties
+ }
+
+ // Ensures identical properties name
+ return eq && innerEquiv(aProperties.sort(), bProperties.sort());
+ }
+ };
+ }();
+
+ innerEquiv = function () { // can take multiple arguments
+ var args = Array.prototype.slice.apply(arguments);
+ if (args.length < 2) {
+ return true; // end transition
+ }
+
+ return (function (a, b) {
+ if (a === b) {
+ return true; // catch the most you can
+ } else if (a === null || b === null || typeof a === "undefined" || typeof b === "undefined" || QUnit.objectType(a) !== QUnit.objectType(b)) {
+ return false; // don't lose time with error prone cases
+ } else {
+ return bindCallbacks(a, callbacks, [b, a]);
+ }
+
+ // apply transition with (1..n) arguments
+ })(args[0], args[1]) && arguments.callee.apply(this, args.splice(1, args.length -1));
+ };
+
+ return innerEquiv;
+
+}();
+
+/**
+ * jsDump
+ * Copyright (c) 2008 Ariel Flesler - aflesler(at)gmail(dot)com | http://flesler.blogspot.com
+ * Licensed under BSD (http://www.opensource.org/licenses/bsd-license.php)
+ * Date: 5/15/2008
+ * @projectDescription Advanced and extensible data dumping for Javascript.
+ * @version 1.0.0
+ * @author Ariel Flesler
+ * @link {http://flesler.blogspot.com/2008/05/jsdump-pretty-dump-of-any-javascript.html}
+ */
+QUnit.jsDump = (function() {
+ function quote( str ) {
+ return '"' + str.toString().replace(/"/g, '\\"') + '"';
+ };
+ function literal( o ) {
+ return o + '';
+ };
+ function join( pre, arr, post ) {
+ var s = jsDump.separator(),
+ base = jsDump.indent(),
+ inner = jsDump.indent(1);
+ if ( arr.join )
+ arr = arr.join( ',' + s + inner );
+ if ( !arr )
+ return pre + post;
+ return [ pre, inner + arr, base + post ].join(s);
+ };
+ function array( arr ) {
+ var i = arr.length, ret = Array(i);
+ this.up();
+ while ( i-- )
+ ret[i] = this.parse( arr[i] );
+ this.down();
+ return join( '[', ret, ']' );
+ };
+
+ var reName = /^function (\w+)/;
+
+ var jsDump = {
+ parse:function( obj, type ) { //type is used mostly internally, you can fix a (custom)type in advance
+ var parser = this.parsers[ type || this.typeOf(obj) ];
+ type = typeof parser;
+
+ return type == 'function' ? parser.call( this, obj ) :
+ type == 'string' ? parser :
+ this.parsers.error;
+ },
+ typeOf:function( obj ) {
+ var type;
+ if ( obj === null ) {
+ type = "null";
+ } else if (typeof obj === "undefined") {
+ type = "undefined";
+ } else if (QUnit.is("RegExp", obj)) {
+ type = "regexp";
+ } else if (QUnit.is("Date", obj)) {
+ type = "date";
+ } else if (QUnit.is("Function", obj)) {
+ type = "function";
+ } else if (typeof obj.setInterval !== undefined && typeof obj.document !== "undefined" && typeof obj.nodeType === "undefined") {
+ type = "window";
+ } else if (obj.nodeType === 9) {
+ type = "document";
+ } else if (obj.nodeType) {
+ type = "node";
+ } else if (typeof obj === "object" && typeof obj.length === "number" && obj.length >= 0) {
+ type = "array";
+ } else {
+ type = typeof obj;
+ }
+ return type;
+ },
+ separator:function() {
+ return this.multiline ? this.HTML ? '<br />' : '\n' : this.HTML ? '&nbsp;' : ' ';
+ },
+ indent:function( extra ) {// extra can be a number, shortcut for increasing-calling-decreasing
+ if ( !this.multiline )
+ return '';
+ var chr = this.indentChar;
+ if ( this.HTML )
+ chr = chr.replace(/\t/g,' ').replace(/ /g,'&nbsp;');
+ return Array( this._depth_ + (extra||0) ).join(chr);
+ },
+ up:function( a ) {
+ this._depth_ += a || 1;
+ },
+ down:function( a ) {
+ this._depth_ -= a || 1;
+ },
+ setParser:function( name, parser ) {
+ this.parsers[name] = parser;
+ },
+ // The next 3 are exposed so you can use them
+ quote:quote,
+ literal:literal,
+ join:join,
+ //
+ _depth_: 1,
+ // This is the list of parsers, to modify them, use jsDump.setParser
+ parsers:{
+ window: '[Window]',
+ document: '[Document]',
+ error:'[ERROR]', //when no parser is found, shouldn't happen
+ unknown: '[Unknown]',
+ 'null':'null',
+ 'undefined':'undefined',
+ 'function':function( fn ) {
+ var ret = 'function',
+ name = 'name' in fn ? fn.name : (reName.exec(fn)||[])[1];//functions never have name in IE
+ if ( name )
+ ret += ' ' + name;
+ ret += '(';
+
+ ret = [ ret, QUnit.jsDump.parse( fn, 'functionArgs' ), '){'].join('');
+ return join( ret, QUnit.jsDump.parse(fn,'functionCode'), '}' );
+ },
+ array: array,
+ nodelist: array,
+ arguments: array,
+ object:function( map ) {
+ var ret = [ ];
+ QUnit.jsDump.up();
+ for ( var key in map )
+ ret.push( QUnit.jsDump.parse(key,'key') + ': ' + QUnit.jsDump.parse(map[key]) );
+ QUnit.jsDump.down();
+ return join( '{', ret, '}' );
+ },
+ node:function( node ) {
+ var open = QUnit.jsDump.HTML ? '&lt;' : '<',
+ close = QUnit.jsDump.HTML ? '&gt;' : '>';
+
+ var tag = node.nodeName.toLowerCase(),
+ ret = open + tag;
+
+ for ( var a in QUnit.jsDump.DOMAttrs ) {
+ var val = node[QUnit.jsDump.DOMAttrs[a]];
+ if ( val )
+ ret += ' ' + a + '=' + QUnit.jsDump.parse( val, 'attribute' );
+ }
+ return ret + close + open + '/' + tag + close;
+ },
+ functionArgs:function( fn ) {//function calls it internally, it's the arguments part of the function
+ var l = fn.length;
+ if ( !l ) return '';
+
+ var args = Array(l);
+ while ( l-- )
+ args[l] = String.fromCharCode(97+l);//97 is 'a'
+ return ' ' + args.join(', ') + ' ';
+ },
+ key:quote, //object calls it internally, the key part of an item in a map
+ functionCode:'[code]', //function calls it internally, it's the content of the function
+ attribute:quote, //node calls it internally, it's an html attribute value
+ string:quote,
+ date:quote,
+ regexp:literal, //regex
+ number:literal,
+ 'boolean':literal
+ },
+ DOMAttrs:{//attributes to dump from nodes, name=>realName
+ id:'id',
+ name:'name',
+ 'class':'className'
+ },
+ HTML:false,//if true, entities are escaped ( <, >, \t, space and \n )
+ indentChar:' ',//indentation unit
+ multiline:true //if true, items in a collection, are separated by a \n, else just a space.
+ };
+
+ return jsDump;
+})();
+
+// from Sizzle.js
+function getText( elems ) {
+ var ret = "", elem;
+
+ for ( var i = 0; elems[i]; i++ ) {
+ elem = elems[i];
+
+ // Get the text from text nodes and CDATA nodes
+ if ( elem.nodeType === 3 || elem.nodeType === 4 ) {
+ ret += elem.nodeValue;
+
+ // Traverse everything else, except comment nodes
+ } else if ( elem.nodeType !== 8 ) {
+ ret += getText( elem.childNodes );
+ }
+ }
+
+ return ret;
+};
+
+/*
+ * Javascript Diff Algorithm
+ * By John Resig (http://ejohn.org/)
+ * Modified by Chu Alan "sprite"
+ *
+ * Released under the MIT license.
+ *
+ * More Info:
+ * http://ejohn.org/projects/javascript-diff-algorithm/
+ *
+ * Usage: QUnit.diff(expected, actual)
+ *
+ * QUnit.diff("the quick brown fox jumped over", "the quick fox jumps over") == "the quick <del>brown </del> fox <del>jumped </del><ins>jumps </ins> over"
+ */
+QUnit.diff = (function() {
+ function diff(o, n){
+ var ns = new Object();
+ var os = new Object();
+
+ for (var i = 0; i < n.length; i++) {
+ if (ns[n[i]] == null)
+ ns[n[i]] = {
+ rows: new Array(),
+ o: null
+ };
+ ns[n[i]].rows.push(i);
+ }
+
+ for (var i = 0; i < o.length; i++) {
+ if (os[o[i]] == null)
+ os[o[i]] = {
+ rows: new Array(),
+ n: null
+ };
+ os[o[i]].rows.push(i);
+ }
+
+ for (var i in ns) {
+ if (ns[i].rows.length == 1 && typeof(os[i]) != "undefined" && os[i].rows.length == 1) {
+ n[ns[i].rows[0]] = {
+ text: n[ns[i].rows[0]],
+ row: os[i].rows[0]
+ };
+ o[os[i].rows[0]] = {
+ text: o[os[i].rows[0]],
+ row: ns[i].rows[0]
+ };
+ }
+ }
+
+ for (var i = 0; i < n.length - 1; i++) {
+ if (n[i].text != null && n[i + 1].text == null && n[i].row + 1 < o.length && o[n[i].row + 1].text == null &&
+ n[i + 1] == o[n[i].row + 1]) {
+ n[i + 1] = {
+ text: n[i + 1],
+ row: n[i].row + 1
+ };
+ o[n[i].row + 1] = {
+ text: o[n[i].row + 1],
+ row: i + 1
+ };
+ }
+ }
+
+ for (var i = n.length - 1; i > 0; i--) {
+ if (n[i].text != null && n[i - 1].text == null && n[i].row > 0 && o[n[i].row - 1].text == null &&
+ n[i - 1] == o[n[i].row - 1]) {
+ n[i - 1] = {
+ text: n[i - 1],
+ row: n[i].row - 1
+ };
+ o[n[i].row - 1] = {
+ text: o[n[i].row - 1],
+ row: i - 1
+ };
+ }
+ }
+
+ return {
+ o: o,
+ n: n
+ };
+ }
+
+ return function(o, n){
+ o = o.replace(/\s+$/, '');
+ n = n.replace(/\s+$/, '');
+ var out = diff(o == "" ? [] : o.split(/\s+/), n == "" ? [] : n.split(/\s+/));
+
+ var str = "";
+
+ var oSpace = o.match(/\s+/g);
+ if (oSpace == null) {
+ oSpace = [" "];
+ }
+ else {
+ oSpace.push(" ");
+ }
+ var nSpace = n.match(/\s+/g);
+ if (nSpace == null) {
+ nSpace = [" "];
+ }
+ else {
+ nSpace.push(" ");
+ }
+
+ if (out.n.length == 0) {
+ for (var i = 0; i < out.o.length; i++) {
+ str += '<del>' + out.o[i] + oSpace[i] + "</del>";
+ }
+ }
+ else {
+ if (out.n[0].text == null) {
+ for (n = 0; n < out.o.length && out.o[n].text == null; n++) {
+ str += '<del>' + out.o[n] + oSpace[n] + "</del>";
+ }
+ }
+
+ for (var i = 0; i < out.n.length; i++) {
+ if (out.n[i].text == null) {
+ str += '<ins>' + out.n[i] + nSpace[i] + "</ins>";
+ }
+ else {
+ var pre = "";
+
+ for (n = out.n[i].row + 1; n < out.o.length && out.o[n].text == null; n++) {
+ pre += '<del>' + out.o[n] + oSpace[n] + "</del>";
+ }
+ str += " " + out.n[i].text + nSpace[i] + pre;
+ }
+ }
+ }
+
+ return str;
+ };
+})();
+
+})(this);
diff --git a/bug/bug/jquery-validation-1.8.1/test/rules.js b/bug/bug/jquery-validation-1.8.1/test/rules.js
new file mode 100644
index 0000000..3eaa377
--- /dev/null
+++ b/bug/bug/jquery-validation-1.8.1/test/rules.js
@@ -0,0 +1,267 @@
+module("rules");
+
+test("rules() - internal - input", function() {
+ var element = $('#firstname');
+ var v = $('#testForm1').validate();
+ same( element.rules(), { required: true, minlength: 2 } );
+});
+
+test("rules(), ignore method:false", function() {
+ var element = $('#firstnamec');
+ var v = $('#testForm1clean').validate({
+ rules: {
+ firstname: { required: false, minlength: 2 }
+ }
+ });
+ same( element.rules(), { minlength: 2 } );
+});
+
+test("rules() - internal - select", function() {
+ var element = $('#meal');
+ var v = $('#testForm3').validate();
+ same( element.rules(), {required: true} );
+});
+
+test("rules() - external", function() {
+ var element = $('#text1');
+ var v = $('#form').validate({
+ rules: {
+ action: {date: true, min: 5}
+ }
+ });
+ same( element.rules(), {date: true, min: 5} );
+});
+
+test("rules() - external - complete form", function() {
+ expect(1);
+
+ var methods = $.extend({}, $.validator.methods);
+ var messages = $.extend({}, $.validator.messages);
+
+ $.validator.addMethod("verifyTest", function() {
+ ok( true, "method executed" );
+ return true;
+ });
+ var v = $('#form').validate({
+ rules: {
+ action: {verifyTest: true}
+ }
+ });
+ v.form();
+
+ $.validator.methods = methods;
+ $.validator.messages = messages;
+});
+
+test("rules() - internal - input", function() {
+ var element = $('#form8input');
+ var v = $('#testForm8').validate();
+ same( element.rules(), {required: true, number: true, rangelength: [2, 8]});
+});
+
+test("rules(), merge min/max to range, minlength/maxlength to rangelength", function() {
+ jQuery.validator.autoCreateRanges = true;
+ var v = $("#testForm1clean").validate({
+ rules: {
+ firstname: {
+ min: 5,
+ max: 12
+ },
+ lastname: {
+ minlength: 2,
+ maxlength: 8
+ }
+ }
+ });
+ same( $("#firstnamec").rules(), {range: [5, 12]});
+
+ same( $("#lastnamec").rules(), {rangelength: [2, 8]} );
+ jQuery.validator.autoCreateRanges = false;
+});
+
+test("rules(), gurantee that required is at front", function() {
+ $("#testForm1").validate();
+ var v = $("#v2").validate();
+ $("#subformRequired").validate();
+ function flatRules(element) {
+ var result = [];
+ jQuery.each($(element).rules(), function(key, value) { result.push(key) });
+ return result.join(" ");
+ }
+ equals( "required minlength", flatRules("#firstname") );
+ equals( "required maxlength minlength", flatRules("#v2-i6") );
+ equals( "required maxlength", flatRules("#co_name") );
+
+ QUnit.reset();
+ jQuery.validator.autoCreateRanges = true;
+ v = $("#v2").validate();
+ equals( "required rangelength", flatRules("#v2-i6") );
+
+ $("#subformRequired").validate({
+ rules: {
+ co_name: "required"
+ }
+ });
+ $("#co_name").removeClass();
+ equals( "required maxlength", flatRules("#co_name") );
+ jQuery.validator.autoCreateRanges = false;
+});
+
+test("rules(), evaluate dynamic parameters", function() {
+ expect(2);
+ var v = $("#testForm1clean").validate({
+ rules: {
+ firstname: {
+ min: function(element) {
+ equals( $("#firstnamec")[0], element );
+ return 12;
+ }
+ }
+ }
+ });
+ same( $("#firstnamec").rules(), {min:12});
+});
+
+test("rules(), class and attribute combinations", function() {
+
+ $.validator.addMethod("customMethod1", function() {
+ return false;
+ }, "");
+ $.validator.addMethod("customMethod2", function() {
+ return false;
+ }, "");
+ var v = $("#v2").validate({
+ rules: {
+ 'v2-i7': {
+ required: true,
+ minlength: 2,
+ customMethod: true
+ }
+ }
+ });
+ same( $("#v2-i1").rules(), { required: true });
+ same( $("#v2-i2").rules(), { required: true, email: true });
+ same( $("#v2-i3").rules(), { url: true });
+ same( $("#v2-i4").rules(), { required: true, minlength: 2 });
+ same( $("#v2-i5").rules(), { required: true, minlength: 2, maxlength: 5, customMethod1: "123" });
+ jQuery.validator.autoCreateRanges = true;
+ same( $("#v2-i5").rules(), { required: true, customMethod1: "123", rangelength: [2, 5] });
+ same( $("#v2-i6").rules(), { required: true, customMethod2: true, rangelength: [2, 5] });
+ jQuery.validator.autoCreateRanges = false;
+ same( $("#v2-i7").rules(), { required: true, minlength: 2, customMethod: true });
+
+ delete $.validator.methods.customMethod1;
+ delete $.validator.messages.customMethod1;
+ delete $.validator.methods.customMethod2;
+ delete $.validator.messages.customMethod2;
+});
+
+test("rules(), dependency checks", function() {
+ var v = $("#testForm1clean").validate({
+ rules: {
+ firstname: {
+ min: {
+ param: 5,
+ depends: function(el) {
+ return /^a/.test($(el).val());
+ }
+ }
+ },
+ lastname: {
+ max: {
+ param: 12
+ },
+ email: {
+ depends: function() { return true; }
+ }
+ }
+ }
+ });
+
+ var rules = $("#firstnamec").rules();
+ equals( 0, v.objectLength(rules) );
+
+ $("#firstnamec").val('ab');
+ same( $("#firstnamec").rules(), {min:5});
+
+ same( $("#lastnamec").rules(), {max:12, email:true});
+});
+
+test("rules(), add and remove", function() {
+ $.validator.addMethod("customMethod1", function() {
+ return false;
+ }, "");
+ $("#v2").validate();
+ var removedAttrs = $("#v2-i5").removeClass("required").removeAttrs("minlength maxlength");
+ same( $("#v2-i5").rules(), { customMethod1: "123" });
+
+ $("#v2-i5").addClass("required").attr(removedAttrs);
+ same( $("#v2-i5").rules(), { required: true, minlength: 2, maxlength: 5, customMethod1: "123" });
+
+ $("#v2-i5").addClass("email").attr({min: 5});
+ same( $("#v2-i5").rules(), { required: true, email: true, minlength: 2, maxlength: 5, min: 5, customMethod1: "123" });
+
+ $("#v2-i5").removeClass("required email").removeAttrs("minlength maxlength customMethod1 min");
+ same( $("#v2-i5").rules(), {});
+
+ delete $.validator.methods.customMethod1;
+ delete $.validator.messages.customMethod1;
+});
+
+test("rules(), add and remove static rules", function() {
+ var v = $("#testForm1clean").validate({
+ rules: {
+ firstname: "required date"
+ }
+ });
+ same( $("#firstnamec").rules(), { required: true, date: true } );
+
+ $("#firstnamec").rules("remove", "date")
+ same( $("#firstnamec").rules(), { required: true } );
+ $("#firstnamec").rules("add", "email");
+ same( $("#firstnamec").rules(), { required: true, email: true } );
+
+ $("#firstnamec").rules("remove", "required");
+ same( $("#firstnamec").rules(), { email: true } );
+
+ same( $("#firstnamec").rules("remove"), { email: true } );
+ same( $("#firstnamec").rules(), { } );
+
+ $("#firstnamec").rules("add", "required email");
+ same( $("#firstnamec").rules(), { required: true, email: true } );
+
+
+ same( $("#lastnamec").rules(), {} );
+ $("#lastnamec").rules("add", "required");
+ $("#lastnamec").rules("add", {
+ minlength: 2
+ });
+ same( $("#lastnamec").rules(), { required: true, minlength: 2 } );
+
+
+ var removedRules = $("#lastnamec").rules("remove", "required email");
+ same( $("#lastnamec").rules(), { minlength: 2 } );
+ $("#lastnamec").rules("add", removedRules);
+ same( $("#lastnamec").rules(), { required: true, minlength: 2 } );
+});
+
+test("rules(), add messages", function() {
+ $("#firstnamec").attr("title", null);
+ var v = $("#testForm1clean").validate({
+ rules: {
+ firstname: "required"
+ }
+ });
+ $("#testForm1clean").valid();
+ $("#firstnamec").valid();
+ same( v.settings.messages.firstname, undefined );
+
+ $("#firstnamec").rules("add", {
+ messages: {
+ required: "required"
+ }
+ });
+
+ $("#firstnamec").valid();
+ same( v.errorList[0] && v.errorList[0].message, "required" );
+});
diff --git a/bug/bug/jquery-validation-1.8.1/test/selects/index.html b/bug/bug/jquery-validation-1.8.1/test/selects/index.html
new file mode 100644
index 0000000..8bc8f8f
--- /dev/null
+++ b/bug/bug/jquery-validation-1.8.1/test/selects/index.html
@@ -0,0 +1,444 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+
+<title>Fun with jQuery</title>
+
+<script src="http://www.google.com/jsapi"></script>
+<script>
+ google.load("jquery", "1");
+</script>
+
+<script type="text/javascript">
+
+$.fn.options = function(selector) {
+ return this.each(function() {
+ function container(select) {
+ if (select.next().is(".option-container")) {
+ return $(select).next();
+ }
+ return $('<select class="option-container" />').append(select.children()).insertAfter(select).hide();
+ }
+ var container = container($(this));
+ $(this).empty().append(container.children(selector).clone());
+ });
+}
+
+$(document).ready(function(){
+
+ $("#State").hide()
+
+ $("#Country").change(function() {
+ var selected = this.options[this.selectedIndex].value;
+ if (selected == "US") {
+ $("#State").show().options(".state");
+ } else if (selected == "CA") {
+ $("#State").show().options(".province");
+ } else {
+ $("#State").hide();
+ }
+ }).change();
+
+
+});
+</script>
+
+
+
+</head>
+
+<body>
+Mission:
+
+<xmp>
+CODE
+
+</xmp>
+
+
+ <select size="1" id="Country" name="country">
+ <option value="">Select One</option>
+
+ <option value="US" selected="selected">United States</option>
+ <option value="CA">Canada</option>
+ <option value="">----------</option>
+ <option value="AF">Afghanistan</option>
+ <option value="AL">Albania</option>
+ <option value="DZ">Algeria</option>
+
+ <option value="AS">American Samoa</option>
+ <option value="AD">Andorra</option>
+ <option value="AO">Angola</option>
+ <option value="AI">Anguilla</option>
+ <option value="AQ">Antarctica</option>
+ <option value="AG">Antigua and Barbuda</option>
+
+ <option value="AR">Argentina</option>
+ <option value="AM">Armenia</option>
+ <option value="AW">Aruba</option>
+ <option value="AU">Australia</option>
+ <option value="AT">Austria</option>
+ <option value="AZ">Azerbaidjan</option>
+
+ <option value="BS">Bahamas</option>
+ <option value="BH">Bahrain</option>
+ <option value="BD">Bangladesh</option>
+ <option value="BB">Barbados</option>
+ <option value="BY">Belarus</option>
+ <option value="BE">Belgium</option>
+
+ <option value="BZ">Belize</option>
+ <option value="BJ">Benin</option>
+ <option value="BM">Bermuda</option>
+ <option value="BT">Bhutan</option>
+ <option value="BO">Bolivia</option>
+ <option value="BA">Bosnia-Herzegovina</option>
+
+ <option value="BW">Botswana</option>
+ <option value="BV">Bouvet Island</option>
+ <option value="BR">Brazil</option>
+ <option value="IO">British Indian Ocean Territory</option>
+ <option value="BN">Brunei Darussalam</option>
+ <option value="BG">Bulgaria</option>
+
+ <option value="BF">Burkina Faso</option>
+ <option value="BI">Burundi</option>
+ <option value="KH">Cambodia</option>
+ <option value="CM">Cameroon</option>
+ <option value="CV">Cape Verde</option>
+ <option value="KY">Cayman Islands</option>
+
+ <option value="CF">Central African Republic</option>
+ <option value="TD">Chad</option>
+ <option value="CL">Chile</option>
+ <option value="CN">China</option>
+ <option value="CX">Christmas Island</option>
+ <option value="CC">Cocos (Keeling) Islands</option>
+
+ <option value="CO">Colombia</option>
+ <option value="KM">Comoros</option>
+ <option value="CG">Congo</option>
+ <option value="CK">Cook Islands</option>
+ <option value="CR">Costa Rica</option>
+ <option value="HR">Croatia</option>
+
+ <option value="CU">Cuba</option>
+ <option value="CY">Cyprus</option>
+ <option value="CZ">Czech Republic</option>
+ <option value="DK">Denmark</option>
+ <option value="DJ">Djibouti</option>
+ <option value="DM">Dominica</option>
+
+ <option value="DO">Dominican Republic</option>
+ <option value="TP">East Timor</option>
+ <option value="EC">Ecuador</option>
+ <option value="EG">Egypt</option>
+ <option value="SV">El Salvador</option>
+ <option value="GQ">Equatorial Guinea</option>
+
+ <option value="ER">Eritrea</option>
+ <option value="EE">Estonia</option>
+ <option value="ET">Ethiopia</option>
+ <option value="FK">Falkland Islands</option>
+ <option value="FO">Faroe Islands</option>
+ <option value="FJ">Fiji</option>
+
+ <option value="FI">Finland</option>
+ <option value="CS">Former Czechoslovakia</option>
+ <option value="SU">Former USSR</option>
+ <option value="FR">France</option>
+ <option value="FX">France (European Territory)</option>
+ <option value="GF">French Guyana</option>
+
+ <option value="TF">French Southern Territories</option>
+ <option value="GA">Gabon</option>
+ <option value="GM">Gambia</option>
+ <option value="GE">Georgia</option>
+ <option value="DE">Germany</option>
+ <option value="GH">Ghana</option>
+
+ <option value="GI">Gibraltar</option>
+ <option value="GB">Great Britain</option>
+ <option value="GR">Greece</option>
+ <option value="GL">Greenland</option>
+ <option value="GD">Grenada</option>
+ <option value="GP">Guadeloupe (French)</option>
+
+ <option value="GU">Guam (USA)</option>
+ <option value="GT">Guatemala</option>
+ <option value="GN">Guinea</option>
+ <option value="GW">Guinea Bissau</option>
+ <option value="GY">Guyana</option>
+ <option value="HT">Haiti</option>
+
+ <option value="HM">Heard and McDonald Islands</option>
+ <option value="HN">Honduras</option>
+ <option value="HK">Hong Kong</option>
+ <option value="HU">Hungary</option>
+ <option value="IS">Iceland</option>
+ <option value="IN">India</option>
+
+ <option value="ID">Indonesia</option>
+ <option value="INT">International</option>
+ <option value="IR">Iran</option>
+ <option value="IQ">Iraq</option>
+ <option value="IE">Ireland</option>
+ <option value="IL">Israel</option>
+
+ <option value="IT">Italy</option>
+ <option value="CI">Ivory Coast (Cote D&#39;Ivoire)</option>
+ <option value="JM">Jamaica</option>
+ <option value="JP">Japan</option>
+ <option value="JO">Jordan</option>
+ <option value="KZ">Kazakhstan</option>
+
+ <option value="KE">Kenya</option>
+ <option value="KI">Kiribati</option>
+ <option value="KW">Kuwait</option>
+ <option value="KG">Kyrgyzstan</option>
+ <option value="LA">Laos</option>
+ <option value="LV">Latvia</option>
+
+ <option value="LB">Lebanon</option>
+ <option value="LS">Lesotho</option>
+ <option value="LR">Liberia</option>
+ <option value="LY">Libya</option>
+ <option value="LI">Liechtenstein</option>
+ <option value="LT">Lithuania</option>
+
+ <option value="LU">Luxembourg</option>
+ <option value="MO">Macau</option>
+ <option value="MK">Macedonia</option>
+ <option value="MG">Madagascar</option>
+ <option value="MW">Malawi</option>
+ <option value="MY">Malaysia</option>
+
+ <option value="MV">Maldives</option>
+ <option value="ML">Mali</option>
+ <option value="MT">Malta</option>
+ <option value="MH">Marshall Islands</option>
+ <option value="MQ">Martinique (French)</option>
+ <option value="MR">Mauritania</option>
+
+ <option value="MU">Mauritius</option>
+ <option value="YT">Mayotte</option>
+ <option value="MX">Mexico</option>
+ <option value="FM">Micronesia</option>
+ <option value="MD">Moldavia</option>
+ <option value="MC">Monaco</option>
+
+ <option value="MN">Mongolia</option>
+ <option value="MS">Montserrat</option>
+ <option value="MA">Morocco</option>
+ <option value="MZ">Mozambique</option>
+ <option value="MM">Myanmar</option>
+ <option value="NA">Namibia</option>
+
+ <option value="NR">Nauru</option>
+ <option value="NP">Nepal</option>
+ <option value="NL">Netherlands</option>
+ <option value="AN">Netherlands Antilles</option>
+ <option value="NT">Neutral Zone</option>
+ <option value="NC">New Caledonia (French)</option>
+
+ <option value="NZ">New Zealand</option>
+ <option value="NI">Nicaragua</option>
+ <option value="NE">Niger</option>
+ <option value="NG">Nigeria</option>
+ <option value="NU">Niue</option>
+ <option value="NF">Norfolk Island</option>
+
+ <option value="KP">North Korea</option>
+ <option value="MP">Northern Mariana Islands</option>
+ <option value="NO">Norway</option>
+ <option value="OM">Oman</option>
+ <option value="PK">Pakistan</option>
+ <option value="PW">Palau</option>
+
+ <option value="PA">Panama</option>
+ <option value="PG">Papua New Guinea</option>
+ <option value="PY">Paraguay</option>
+ <option value="PE">Peru</option>
+ <option value="PH">Philippines</option>
+ <option value="PN">Pitcairn Island</option>
+
+ <option value="PL">Poland</option>
+ <option value="PF">Polynesia (French)</option>
+ <option value="PT">Portugal</option>
+ <option value="PR">Puerto Rico</option>
+ <option value="QA">Qatar</option>
+ <option value="RE">Reunion (French)</option>
+
+ <option value="RO">Romania</option>
+ <option value="RU">Russian Federation</option>
+ <option value="RW">Rwanda</option>
+ <option value="GS">S. Georgia & S. Sandwich Isls.</option>
+ <option value="SH">Saint Helena</option>
+ <option value="KN">Saint Kitts & Nevis Anguilla</option>
+
+ <option value="LC">Saint Lucia</option>
+ <option value="PM">Saint Pierre and Miquelon</option>
+ <option value="ST">Saint Tome (Sao Tome) and Principe</option>
+ <option value="VC">Saint Vincent & Grenadines</option>
+ <option value="WS">Samoa</option>
+ <option value="SM">San Marino</option>
+
+ <option value="SA">Saudi Arabia</option>
+ <option value="SN">Senegal</option>
+ <option value="SC">Seychelles</option>
+ <option value="SL">Sierra Leone</option>
+ <option value="SG">Singapore</option>
+ <option value="SK">Slovak Republic</option>
+
+ <option value="SI">Slovenia</option>
+ <option value="SB">Solomon Islands</option>
+ <option value="SO">Somalia</option>
+ <option value="ZA">South Africa</option>
+ <option value="KR">South Korea</option>
+ <option value="ES">Spain</option>
+
+ <option value="LK">Sri Lanka</option>
+ <option value="SD">Sudan</option>
+ <option value="SR">Suriname</option>
+ <option value="SJ">Svalbard and Jan Mayen Islands</option>
+ <option value="SZ">Swaziland</option>
+ <option value="SE">Sweden</option>
+
+ <option value="CH">Switzerland</option>
+ <option value="SY">Syria</option>
+ <option value="TJ">Tadjikistan</option>
+ <option value="TW">Taiwan</option>
+ <option value="TZ">Tanzania</option>
+ <option value="TH">Thailand</option>
+
+ <option value="TG">Togo</option>
+ <option value="TK">Tokelau</option>
+ <option value="TO">Tonga</option>
+ <option value="TT">Trinidad and Tobago</option>
+ <option value="TN">Tunisia</option>
+ <option value="TR">Turkey</option>
+
+ <option value="TM">Turkmenistan</option>
+ <option value="TC">Turks and Caicos Islands</option>
+ <option value="TV">Tuvalu</option>
+ <option value="UG">Uganda</option>
+ <option value="UA">Ukraine</option>
+ <option value="AE">United Arab Emirates</option>
+
+ <option value="GB">United Kingdom</option>
+ <option value="UY">Uruguay</option>
+ <option value="MIL">USA Military</option>
+ <option value="UM">USA Minor Outlying Islands</option>
+ <option value="UZ">Uzbekistan</option>
+ <option value="VU">Vanuatu</option>
+
+ <option value="VA">Vatican City State</option>
+ <option value="VE">Venezuela</option>
+ <option value="VN">Vietnam</option>
+ <option value="VG">Virgin Islands (British)</option>
+ <option value="VI">Virgin Islands (USA)</option>
+ <option value="WF">Wallis and Futuna Islands</option>
+
+ <option value="EH">Western Sahara</option>
+ <option value="YE">Yemen</option>
+ <option value="YU">Yugoslavia</option>
+ <option value="ZR">Zaire</option>
+ <option value="ZM">Zambia</option>
+ <option value="ZW">Zimbabwe</option>
+
+ </select>
+<br />
+
+<select id="State" name="State">
+
+ <option value="" class="selectone">Select One</option>
+ <option value="AB" class="province">Alberta</option>
+ <option value="BC" class="province">British Columbia</option>
+ <option value="MB" class="province">Manitoba</option>
+
+ <option value="NB" class="province">New Brunswick</option>
+ <option value="NF" class="province">Newfoundland</option>
+ <option value="NT" class="province">Northwest Territories</option>
+ <option value="NS" class="province">Nova Scotia</option>
+ <option value="NU" class="province">Nunavut</option>
+ <option value="ON" class="province">Ontario</option>
+
+ <option value="PE" class="province">Prince Edward Island</option>
+ <option value="QC" class="province">Quebec</option>
+ <option value="SK" class="province">Saskatchewan</option>
+ <option value="YT" class="province">Yukon Territory</option>
+
+ <option value="AK" class="state">Alaska</option>
+ <option value="AL" class="state">Alabama</option>
+
+ <option value="AR" class="state">Arkansas</option>
+ <option value="AZ" class="state">Arizona</option>
+ <option value="CA" class="state">California</option>
+ <option value="CO" class="state">Colorado</option>
+ <option value="CT" class="state">Connecticut</option>
+ <option value="DC" class="state">District of Columbia</option>
+
+ <option value="DE" class="state">Delaware</option>
+ <option value="FL" class="state">Florida</option>
+ <option value="GA" class="state">Georgia</option>
+ <option value="HI" class="state">Hawaii</option>
+ <option value="IA" class="state">Iowa</option>
+ <option value="ID" class="state">Idaho</option>
+
+ <option value="IL" class="state">Illinois</option>
+ <option value="IN" class="state">Indiana</option>
+ <option value="KS" class="state">Kansas</option>
+ <option value="KY" class="state">Kentucky</option>
+ <option value="LA" class="state">Louisiana</option>
+ <option value="MA" class="state">Massachusetts</option>
+
+ <option value="MD" class="state">Maryland</option>
+ <option value="ME" class="state">Maine</option>
+ <option value="MI" class="state">Michigan</option>
+ <option value="MN" class="state">Minnesota</option>
+ <option value="MO" class="state">Missouri</option>
+ <option value="MS" class="state">Mississippi</option>
+
+ <option value="MT" class="state">Montana</option>
+ <option value="NC" class="state">North Carolina</option>
+ <option value="ND" class="state">North Dakota</option>
+ <option value="NE" class="state">Nebraska</option>
+ <option value="NH" class="state">New Hampshire</option>
+ <option value="NJ" class="state">New Jersey</option>
+
+ <option value="NM" class="state">New Mexico</option>
+ <option value="NV" class="state">Nevada</option>
+ <option value="NY" class="state">New York</option>
+ <option value="OH" class="state">Ohio</option>
+ <option value="OK" class="state">Oklahoma</option>
+ <option value="OR" class="state">Oregon</option>
+
+ <option value="PA" class="state">Pennsylvania</option>
+ <option value="PR" class="state">Puerto Rico</option>
+ <option value="RI" class="state">Rhode Island</option>
+ <option value="SC" class="state">South Carolina</option>
+ <option value="SD" class="state">South Dakota</option>
+ <option value="TN" class="state">Tennessee</option>
+
+ <option value="TX" class="state">Texas</option>
+ <option value="UT" class="state">Utah</option>
+ <option value="VA" class="state">Virginia</option>
+ <option value="VT" class="state">Vermont</option>
+ <option value="WA" class="state">Washington</option>
+ <option value="WI" class="state">Wisconsin</option>
+
+ <option value="WV" class="state">West Virginia</option>
+ <option value="WY" class="state">Wyoming</option>
+</select>
+
+
+
+
+<script src="http://www.google-analytics.com/urchin.js" type="text/javascript">
+</script>
+<script type="text/javascript">
+_uacct = "UA-1499652-1";
+urchinTracker();
+</script></body>
+</html>
diff --git a/bug/bug/jquery-validation-1.8.1/test/tabs.html b/bug/bug/jquery-validation-1.8.1/test/tabs.html
new file mode 100644
index 0000000..2fb8a00
--- /dev/null
+++ b/bug/bug/jquery-validation-1.8.1/test/tabs.html
@@ -0,0 +1,78 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+<title>Test for jQuery validate() plugin</title>
+
+<link rel="stylesheet" type="text/css" media="screen" href="../demo/css/screen.css" />
+<link rel="stylesheet" href="../../../themes/flora/flora.all.css" type="text/css" media="screen" title="Flora (Default)">
+
+<script src="../lib/jquery.js" type="text/javascript"></script>
+<script src="../../../ui/current/ui.tabs.js" type="text/javascript"></script>
+<script type="text/javascript" src="../lib/jquery.metadata.js"></script>
+<script type="text/javascript" src="../jquery.validate.js"></script>
+<script src="firebug/firebug.js" type="text/javascript"></script>
+
+<script type="text/javascript">
+
+$().ready(function() {
+ $("#commentForm").validate({debug:true});
+ $("#example > ul").tabs();
+});
+</script>
+
+<style type="text/css">
+form.cmxform { width: 470px; }
+</style>
+
+</head>
+<body>
+
+ <form class="cmxform" id="commentForm" method="get" action="">
+
+ <div id="example" class="flora">
+ <ul>
+
+ <li><a href="#fragment-1"><span>One</span></a></li>
+ <li><a href="#fragment-2"><span>Two</span></a></li>
+ <li><a href="#fragment-3"><span>Three</span></a></li>
+ </ul>
+ <div id="fragment-1">
+ <fieldset>
+ <legend>A simple comment form with submit validation and default messages</legend>
+ <p>
+ <label for="cname">Name (required, at least 2 characters)</label>
+ <input id="cname" name="name" class="some other styles {required:true,minLength:2}" />
+ <p>
+ <label for="cemail">E-Mail (required)</label>
+ <input id="cemail" name="email" class="{required:true,email:true}" />
+ </p>
+ <p>
+ <label for="curl">URL (optional)</label>
+ <input id="curl" name="url" class="{url:true}" value="" />
+ </p>
+ <p>
+ <label for="ccomment">Your comment (required)</label>
+ <textarea id="ccomment" name="comment" class="{required:true}"></textarea>
+ </p>
+ </fieldset>
+
+ </div>
+ <div id="fragment-2">
+ Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.
+ Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.
+ </div>
+ <div id="fragment-3">
+ Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.
+ Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.
+ Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.
+ </div>
+ </div>
+ <p>
+ <input class="submit" type="submit" value="Submit"/>
+ </p>
+
+ </form>
+
+</body>
+</html> \ No newline at end of file
diff --git a/bug/bug/jquery-validation-1.8.1/test/test.js b/bug/bug/jquery-validation-1.8.1/test/test.js
new file mode 100644
index 0000000..a12bb92
--- /dev/null
+++ b/bug/bug/jquery-validation-1.8.1/test/test.js
@@ -0,0 +1,1139 @@
+window.sessionStorage && sessionStorage.clear();
+jQuery.validator.defaults.debug = true;
+$.mockjaxSettings.log = $.noop;
+
+$.mockjax({
+ url: "form.php?user=Peter&password=foobar",
+ responseText: 'Hi Peter, welcome back.',
+ responseStatus: 200,
+ responseTime: 1
+});
+$.mockjax({
+ url: "users.php",
+ data: { username: /Peter2?|asdf/},
+ responseText: 'false',
+ responseStatus: 200,
+ responseTime: 1
+});
+$.mockjax({
+ url: "users2.php",
+ data: { username: "asdf"},
+ responseText: '"asdf is already taken, please try something else"',
+ responseStatus: 200,
+ responseTime: 1
+});
+
+module("validator");
+
+test("Constructor", function() {
+ var v1 = $("#testForm1").validate();
+ var v2 = $("#testForm1").validate();
+ equals( v1, v2, "Calling validate() multiple times must return the same validator instance" );
+ equals( v1.elements().length, 3, "validator elements" );
+});
+
+test("validate() without elements, with non-form elements", function() {
+ $("#doesn'texist").validate();
+});
+
+test("valid() plugin method", function() {
+ var form = $("#userForm");
+ form.validate();
+ ok ( !form.valid(), "Form isn't valid yet" );
+ var input = $("#username");
+ ok ( !input.valid(), "Input isn't valid either" );
+ input.val("Hello world");
+ ok ( form.valid(), "Form is now valid" );
+ ok ( input.valid(), "Input is valid, too" );
+});
+
+test("valid() plugin method", function() {
+ var form = $("#testForm1");
+ form.validate();
+ var inputs = form.find("input");
+ ok( !inputs.valid(), "all invalid" );
+ inputs.not(":first").val("ok");
+ ok( !inputs.valid(), "just one invalid" );
+ inputs.val("ok");
+ ok( inputs.valid(), "all valid" );
+});
+
+test("valid() plugin method, special handling for checkable groups", function() {
+ // rule is defined on first checkbox, must apply to others, too
+ var checkable = $("#checkable2");
+ ok( !checkable.valid(), "must be invalid, not checked yet" );
+ checkable.attr("checked", true);
+ ok( checkable.valid(), "valid, is now checked" );
+ checkable.attr("checked", false);
+ ok( !checkable.valid(), "invalid again" );
+ $("#checkable3").attr("checked", true);
+ ok( checkable.valid(), "valid, third box is checked" );
+});
+
+test("addMethod", function() {
+ expect( 3 );
+ $.validator.addMethod("hi", function(value) {
+ return value == "hi";
+ }, "hi me too");
+ var method = $.validator.methods.hi,
+ e = $('#text1')[0];
+ ok( !method(e.value, e), "Invalid" );
+ e.value = "hi";
+ ok( method(e.value, e), "Invalid" );
+ ok( jQuery.validator.messages.hi == "hi me too", "Check custom message" );
+});
+
+test("addMethod2", function() {
+ expect( 4 );
+ $.validator.addMethod("complicatedPassword", function(value, element, param) {
+ return this.optional(element) || /\D/.test(value) && /\d/.test(value)
+ }, "Your password must contain at least one number and one letter");
+ var v = jQuery("#form").validate({
+ rules: {
+ action: { complicatedPassword: true }
+ }
+ });
+ var rule = $.validator.methods.complicatedPassword,
+ e = $('#text1')[0];
+ e.value = "";
+ ok( v.element(e) === undefined, "Rule is optional, valid" );
+ equals( 0, v.size() );
+ e.value = "ko";
+ ok( !v.element(e), "Invalid, doesn't contain one of the required characters" );
+ e.value = "ko1";
+ ok( v.element(e) );
+});
+
+test("form(): simple", function() {
+ expect( 2 );
+ var form = $('#testForm1')[0];
+ var v = $(form).validate();
+ ok( !v.form(), 'Invalid form' );
+ $('#firstname').val("hi");
+ $('#lastname').val("hi");
+ ok( v.form(), 'Valid form' );
+});
+
+test("form(): checkboxes: min/required", function() {
+ expect( 3 );
+ var form = $('#testForm6')[0];
+ var v = $(form).validate();
+ ok( !v.form(), 'Invalid form' );
+ $('#form6check1').attr("checked", true);
+ ok( !v.form(), 'Invalid form' );
+ $('#form6check2').attr("checked", true);
+ ok( v.form(), 'Valid form' );
+});
+
+test("form(): radio buttons: required", function () {
+ expect( 6 );
+ var form = $('#testForm10')[0];
+
+ var v = $(form).validate({ rules: { testForm10Radio: "required"} });
+ ok(!v.form(), 'Invalid Form');
+ equals($('#testForm10Radio1').attr('class'), 'error');
+ equals($('#testForm10Radio2').attr('class'), 'error');
+
+ $('#testForm10Radio2').attr("checked", true);
+ ok(v.form(), 'Valid form');
+
+ equals($('#testForm10Radio1').attr('class'), 'valid');
+ equals($('#testForm10Radio2').attr('class'), 'valid');
+});
+
+test("form(): selects: min/required", function() {
+ expect( 3 );
+ var form = $('#testForm7')[0];
+ var v = $(form).validate();
+ ok( !v.form(), 'Invalid form' );
+ $("#optionxa").attr("selected", true);
+ ok( !v.form(), 'Invalid form' );
+ $("#optionxb").attr("selected", true);
+ ok( v.form(), 'Valid form' );
+});
+
+test("form(): with equalTo", function() {
+ expect( 2 );
+ var form = $('#testForm5')[0];
+ var v = $(form).validate();
+ ok( !v.form(), 'Invalid form' );
+ $('#x1, #x2').val("hi");
+ ok( v.form(), 'Valid form' );
+});
+
+test("check(): simple", function() {
+ expect( 3 );
+ var element = $('#firstname')[0];
+ var v = $('#testForm1').validate();
+ ok( v.size() == 0, 'No errors yet' );
+ v.check(element);
+ ok( v.size() == 1, 'error exists' );
+ v.errorList = [];
+ $('#firstname').val("hi");
+ v.check(element);
+ ok( !v.size() == 1, 'No more errors' );
+});
+
+test("hide(): input", function() {
+ expect( 3 );
+ var errorLabel = $('#errorFirstname');
+ var element = $('#firstname')[0];
+ element.value ="bla";
+ var v = $('#testForm1').validate();
+ errorLabel.show();
+ ok( errorLabel.is(":visible"), "Error label visible before validation" );
+ ok( v.element(element) );
+ ok( errorLabel.is(":hidden"), "Error label not visible after validation" );
+});
+
+test("hide(): radio", function() {
+ expect( 2 );
+ var errorLabel = $('#agreeLabel');
+ var element = $('#agb')[0];
+ element.checked = true;
+ var v = $('#testForm2').validate({ errorClass: "xerror" });
+ errorLabel.show();
+ ok( errorLabel.is(":visible"), "Error label visible after validation" );
+ v.element(element);
+ ok( errorLabel.is(":hidden"), "Error label not visible after hiding it" );
+});
+
+test("hide(): errorWrapper", function() {
+ expect(2);
+ var errorLabel = $('#errorWrapper');
+ var element = $('#meal')[0];
+ element.selectedIndex = 1;
+
+ errorLabel.show();
+ ok( errorLabel.is(":visible"), "Error label visible after validation" );
+ var v = $('#testForm3').validate({ wrapper: "li", errorLabelContainer: $("#errorContainer") });
+ v.element(element);
+ ok( errorLabel.is(":hidden"), "Error label not visible after hiding it" );
+});
+
+test("hide(): container", function() {
+ expect(4);
+ var errorLabel = $('#errorContainer');
+ var element = $('#testForm3')[0];
+ var v = $('#testForm3').validate({ errorWrapper: "li", errorContainer: $("#errorContainer") });
+ v.form();
+ ok( errorLabel.is(":visible"), "Error label visible after validation" );
+ $('#meal')[0].selectedIndex = 1;
+ v.form();
+ ok( errorLabel.is(":hidden"), "Error label not visible after hiding it" );
+ $('#meal')[0].selectedIndex = -1;
+ v.element("#meal");
+ ok( errorLabel.is(":visible"), "Error label visible after validation" );
+ $('#meal')[0].selectedIndex = 1;
+ v.element("#meal");
+ ok( errorLabel.is(":hidden"), "Error label not visible after hiding it" );
+});
+
+test("valid()", function() {
+ expect(4);
+ var errorList = [{name:"meal",message:"foo", element:$("#meal")[0]}];
+ var v = $('#testForm3').validate();
+ ok( v.valid(), "No errors, must be valid" );
+ v.errorList = errorList;
+ ok( !v.valid(), "One error, must be invalid" );
+ QUnit.reset();
+ v = $('#testForm3').validate({ submitHandler: function() {
+ ok( false, "Submit handler was called" );
+ }});
+ ok( v.valid(), "No errors, must be valid and returning true, even with the submit handler" );
+ v.errorList = errorList;
+ ok( !v.valid(), "One error, must be invalid, no call to submit handler" );
+});
+
+test("submitHandler keeps submitting button", function() {
+ $("#userForm").validate({
+ debug: true,
+ submitHandler: function(form) {
+ // dunno how to test this better; this tests the implementation that uses a hidden input
+ var hidden = $(form).find("input:hidden")[0];
+ same(hidden.value, button.value)
+ same(hidden.name, button.name)
+ }
+ });
+ $("#username").val("bla");
+ var button = $("#userForm :submit")[0]
+ $(button).triggerHandler("click");
+ $("#userForm").submit();
+});
+
+test("showErrors()", function() {
+ expect( 4 );
+ var errorLabel = $('#errorFirstname').hide();
+ var element = $('#firstname')[0];
+ var v = $('#testForm1').validate();
+ ok( errorLabel.is(":hidden") );
+ equals( 0, $("label.error[for=lastname]").size() );
+ v.showErrors({"firstname": "required", "lastname": "bla"});
+ equals( true, errorLabel.is(":visible") );
+ equals( true, $("label.error[for=lastname]").is(":visible") );
+});
+
+test("showErrors(), allow empty string and null as default message", function() {
+ $("#userForm").validate({
+ rules: {
+ username: {
+ required: true,
+ minlength: 3
+ }
+ },
+ messages: {
+ username: {
+ required: "",
+ minlength: "too short"
+ }
+ }
+ });
+ ok( !$("#username").valid() );
+ equals( "", $("label.error[for=username]").text() );
+
+ $("#username").val("ab");
+ ok( !$("#username").valid() );
+ equals( "too short", $("label.error[for=username]").text() );
+
+ $("#username").val("abc");
+ ok( $("#username").valid() );
+ ok( $("label.error[for=username]").is(":hidden") );
+});
+
+test("showErrors() - external messages", function() {
+ expect( 4 );
+ var methods = $.extend({}, $.validator.methods);
+ var messages = $.extend({}, $.validator.messages);
+ $.validator.addMethod("foo", function() { return false; });
+ $.validator.addMethod("bar", function() { return false; });
+ equals( 0, $("#testForm4 label.error[for=f1]").size() );
+ equals( 0, $("#testForm4 label.error[for=f2]").size() );
+ var form = $('#testForm4')[0];
+ var v = $(form).validate({
+ messages: {
+ f1: "Please!",
+ f2: "Wohoo!"
+ }
+ });
+ v.form();
+ equals( $("#testForm4 label.error[for=f1]").text(), "Please!" );
+ equals( $("#testForm4 label.error[for=f2]").text(), "Wohoo!" );
+
+ $.validator.methods = methods;
+ $.validator.messages = messages;
+});
+
+test("showErrors() - custom handler", function() {
+ expect(5);
+ var v = $('#testForm1').validate({
+ showErrors: function(errorMap, errorList) {
+ equals( v, this );
+ equals( v.errorList, errorList );
+ equals( v.errorMap, errorMap );
+ equals( "buga", errorMap.firstname );
+ equals( "buga", errorMap.lastname );
+ }
+ });
+ v.form();
+});
+
+test("option: (un)highlight, default", function() {
+ $("#testForm1").validate();
+ var e = $("#firstname")
+ ok( !e.hasClass("error") );
+ ok( !e.hasClass("valid") );
+ e.valid()
+ ok( e.hasClass("error") );
+ ok( !e.hasClass("valid") );
+ e.val("hithere").valid()
+ ok( !e.hasClass("error") );
+ ok( e.hasClass("valid") );
+});
+
+test("option: (un)highlight, nothing", function() {
+ expect(3);
+ $("#testForm1").validate({
+ highlight: false,
+ unhighlight: false
+ });
+ var e = $("#firstname")
+ ok( !e.hasClass("error") );
+ e.valid()
+ ok( !e.hasClass("error") );
+ e.valid()
+ ok( !e.hasClass("error") );
+});
+
+test("option: (un)highlight, custom", function() {
+ expect(5);
+ $("#testForm1clean").validate({
+ highlight: function(element, errorClass) {
+ equals( "invalid", errorClass );
+ $(element).hide();
+ },
+ unhighlight: function(element, errorClass) {
+ equals( "invalid", errorClass )
+ $(element).show();
+ },
+ errorClass: "invalid",
+ rules: {
+ firstname: "required"
+ }
+ });
+ var e = $("#firstnamec")
+ ok( e.is(":visible") );
+ e.valid()
+ ok( !e.is(":visible") );
+ e.val("hithere").valid()
+ ok( e.is(":visible") );
+});
+
+test("option: (un)highlight, custom2", function() {
+ expect(6);
+ $("#testForm1").validate({
+ highlight: function(element, errorClass) {
+ $(element).addClass(errorClass);
+ $(element.form).find("label[for=" + element.id + "]").addClass(errorClass);
+ },
+ unhighlight: function(element, errorClass) {
+ $(element).removeClass(errorClass);
+ $(element.form).find("label[for=" + element.id + "]").removeClass(errorClass);
+ },
+ errorClass: "invalid"
+ });
+ var e = $("#firstname")
+ var l = $("#errorFirstname")
+ ok( !e.is(".invalid") );
+ ok( !l.is(".invalid") );
+ e.valid()
+ ok( e.is(".invalid") );
+ ok( l.is(".invalid") );
+ e.val("hithere").valid()
+ ok( !e.is(".invalid") );
+ ok( !l.is(".invalid") );
+});
+
+test("option: focusCleanup default false", function() {
+ var form = $("#userForm")
+ form.validate();
+ form.valid();
+ ok( form.is(":has(label.error[for=username]:visible)"));
+ $("#username").focus();
+ ok( form.is(":has(label.error[for=username]:visible)"));
+});
+
+test("option: focusCleanup true", function() {
+ var form = $("#userForm")
+ form.validate({
+ focusCleanup: true
+ });
+ form.valid();
+ ok( form.is(":has(label.error[for=username]:visible)") );
+ $("#username").focus().trigger("focusin");
+ ok( !form.is(":has(label.error[for=username]:visible)") );
+});
+
+test("option: focusCleanup with wrapper", function() {
+ var form = $("#userForm")
+ form.validate({
+ focusCleanup: true,
+ wrapper: "span"
+ });
+ form.valid();
+ ok( form.is(":has(span:visible:has(label.error[for=username]))") );
+ $("#username").focus().trigger("focusin");
+ ok( !form.is(":has(span:visible:has(label.error[for=username]))") );
+});
+
+test("elements() order", function() {
+ var container = $("#orderContainer");
+ var v = $("#elementsOrder").validate({
+ errorLabelContainer: container,
+ wrap: "li"
+ });
+ deepEqual( v.elements().map(function() {
+ return $(this).attr("id");
+ }).get(), ["order1", "order2", "order3", "order4", "order5", "order6"], "elements must be in document order" );
+ v.form();
+ deepEqual( container.children().map(function() {
+ return $(this).attr("for");
+ }).get(), ["order1", "order2", "order3", "order4", "order5", "order6"], "labels in error container must be in document order" );
+});
+
+test("defaultMessage(), empty title is ignored", function() {
+ var v = $("#userForm").validate();
+ equals( "This field is required.", v.defaultMessage($("#username")[0], "required") );
+});
+
+test("formatAndAdd", function() {
+ expect(4);
+ var v = $("#form").validate();
+ var fakeElement = { form: $("#form")[0], name: "bar" };
+ v.formatAndAdd(fakeElement, {method: "maxlength", parameters: 2})
+ equals( "Please enter no more than 2 characters.", v.errorList[0].message );
+ equals( "bar", v.errorList[0].element.name );
+
+ v.formatAndAdd(fakeElement, {method: "range", parameters:[2,4]})
+ equals( "Please enter a value between 2 and 4.", v.errorList[1].message );
+
+ v.formatAndAdd(fakeElement, {method: "range", parameters:[0,4]})
+ equals( "Please enter a value between 0 and 4.", v.errorList[2].message );
+});
+
+test("formatAndAdd2", function() {
+ expect(3);
+ var v = $("#form").validate();
+ var fakeElement = { form: $("#form")[0], name: "bar" };
+ jQuery.validator.messages.test1 = function(param, element) {
+ equals( v, this );
+ equals( 0, param );
+ return "element " + element.name + " is not valid";
+ };
+ v.formatAndAdd(fakeElement, {method: "test1", parameters: 0})
+ equals( "element bar is not valid", v.errorList[0].message );
+});
+
+test("formatAndAdd, auto detect substitution string", function() {
+ var v = $("#testForm1clean").validate({
+ rules: {
+ firstname: {
+ required: true,
+ rangelength: [5, 10]
+ }
+ },
+ messages: {
+ firstname: {
+ rangelength: "at least ${0}, up to {1}"
+ }
+ }
+ });
+ $("#firstnamec").val("abc");
+ v.form();
+ equals( "at least 5, up to 10", v.errorList[0].message );
+})
+
+test("error containers, simple", function() {
+ expect(14);
+ var container = $("#simplecontainer");
+ var v = $("#form").validate({
+ errorLabelContainer: container,
+ showErrors: function() {
+ container.find("h3").html( jQuery.validator.format("There are {0} errors in your form.", this.size()) );
+ this.defaultShowErrors();
+ }
+ });
+
+ v.prepareForm();
+ ok( v.valid(), "form is valid" );
+ equals( 0, container.find("label").length, "There should be no error labels" );
+ equals( "", container.find("h3").html() );
+
+ v.prepareForm();
+ v.errorList = [{message:"bar", element: {name:"foo"}}, {message: "necessary", element: {name:"required"}}];
+ ok( !v.valid(), "form is not valid after adding errors manually" );
+ v.showErrors();
+ equals( container.find("label").length, 2, "There should be two error labels" );
+ ok( container.is(":visible"), "Check that the container is visible" );
+ container.find("label").each(function() {
+ ok( $(this).is(":visible"), "Check that each label is visible" );
+ });
+ equals( "There are 2 errors in your form.", container.find("h3").html() );
+
+ v.prepareForm();
+ ok( v.valid(), "form is valid after a reset" );
+ v.showErrors();
+ equals( container.find("label").length, 2, "There should still be two error labels" );
+ ok( container.is(":hidden"), "Check that the container is hidden" );
+ container.find("label").each(function() {
+ ok( $(this).is(":hidden"), "Check that each label is hidden" );
+ });
+});
+
+test("error containers, with labelcontainer I", function() {
+ expect(16);
+ var container = $("#container"),
+ labelcontainer = $("#labelcontainer");
+ var v = $("#form").validate({
+ errorContainer: container,
+ errorLabelContainer: labelcontainer,
+ wrapper: "li"
+ });
+
+ ok( v.valid(), "form is valid" );
+ equals( 0, container.find("label").length, "There should be no error labels in the container" );
+ equals( 0, labelcontainer.find("label").length, "There should be no error labels in the labelcontainer" );
+ equals( 0, labelcontainer.find("li").length, "There should be no lis labels in the labelcontainer" );
+
+ v.errorList = [{message:"bar", element: {name:"foo"}}, {name: "required", message: "necessary", element: {name:"required"}}];
+ ok( !v.valid(), "form is not valid after adding errors manually" );
+ v.showErrors();
+ equals( 0, container.find("label").length, "There should be no error label in the container" );
+ equals( 2, labelcontainer.find("label").length, "There should be two error labels in the labelcontainer" );
+ equals( 2, labelcontainer.find("li").length, "There should be two error lis in the labelcontainer" );
+ ok( container.is(":visible"), "Check that the container is visible" );
+ ok( labelcontainer.is(":visible"), "Check that the labelcontainer is visible" );
+ var labels = labelcontainer.find("label").each(function() {
+ ok( $(this).is(":visible"), "Check that each label is visible1" );
+ equals( "li", $(this).parent()[0].tagName.toLowerCase(), "Check that each label is wrapped in an li" );
+ ok( $(this).parent("li").is(":visible"), "Check that each parent li is visible" );
+ });
+});
+
+test("errorcontainer, show/hide only on submit", function() {
+ expect(14);
+ var container = $("#container");
+ var labelContainer = $("#labelcontainer");
+ var v = $("#testForm1").bind("invalid-form.validate", function() {
+ ok( true, "invalid-form event triggered called" );
+ }).validate({
+ errorContainer: container,
+ errorLabelContainer: labelContainer,
+ showErrors: function() {
+ container.html( jQuery.validator.format("There are {0} errors in your form.", this.numberOfInvalids()) );
+ ok( true, "showErrors called" );
+ this.defaultShowErrors();
+ }
+ });
+ equals( "", container.html(), "must be empty" );
+ equals( "", labelContainer.html(), "must be empty" );
+ // validate whole form, both showErrors and invalidHandler must be called once
+ // preferably invalidHandler first, showErrors second
+ ok( !v.form(), "invalid form" );
+ equals( 2, labelContainer.find("label").length );
+ equals( "There are 2 errors in your form.", container.html() );
+ ok( labelContainer.is(":visible"), "must be visible" );
+ ok( container.is(":visible"), "must be visible" );
+
+ $("#firstname").val("hix").keyup();
+ $("#testForm1").triggerHandler("keyup", [jQuery.event.fix({ type: "keyup", target: $("#firstname")[0] })]);
+ equals( 1, labelContainer.find("label:visible").length );
+ equals( "There are 1 errors in your form.", container.html() );
+
+ $("#lastname").val("abc");
+ ok( v.form(), "Form now valid, trigger showErrors but not invalid-form" );
+});
+
+test("option invalidHandler", function() {
+ expect(1);
+ var v = $("#testForm1clean").validate({
+ invalidHandler: function() {
+ ok( true, "invalid-form event triggered called" );
+ start();
+ }
+ });
+ $("#usernamec").val("asdf").rules("add", { required: true, minlength: 5 });
+ stop();
+ $("#testForm1clean").submit();
+});
+
+test("findByName()", function() {
+ deepEqual( new $.validator({}, document.getElementById("form")).findByName(document.getElementById("radio1").name).get(), $("#form").find("[name=radio1]").get() );
+});
+
+test("focusInvalid()", function() {
+ // TODO when using custom focusin, this is triggered just once
+ // TODO when using 1.4 focusin, triggered twice; fix once not testing against 1.3 anymore
+ // expect(1);
+ var inputs = $("#testForm1 input").focus(function() {
+ equals( inputs[0], this, "focused first element" );
+ });
+ var v = $("#testForm1").validate();
+ v.form();
+ v.focusInvalid();
+});
+
+test("findLastActive()", function() {
+ expect(3);
+ var v = $("#testForm1").validate();
+ ok( !v.findLastActive() );
+ v.form();
+ v.focusInvalid();
+ equals( v.findLastActive(), $("#firstname")[0] );
+ var lastActive = $("#lastname").trigger("focus").trigger("focusin")[0];
+ equals( v.lastActive, lastActive );
+});
+
+test("validating multiple checkboxes with 'required'", function() {
+ expect(3);
+ var checkboxes = $("#form input[name=check3]").attr("checked", false);
+ equal(checkboxes.size(), 5);
+ var v = $("#form").validate({
+ rules: {
+ check3: "required"
+ }
+ });
+ v.form();
+ equal(v.size(), 1);
+ checkboxes.filter(":last").attr("checked", true);
+ v.form();
+ equal(v.size(), 0);
+});
+
+test("dynamic form", function() {
+ var counter = 0;
+ function add() {
+ $("<input class='{required:true}' name='list" + counter++ + "' />").appendTo("#testForm2");
+ }
+ function errors(expected, message) {
+ equals(expected, v.size(), message );
+ }
+ var v = $("#testForm2").validate();
+ v.form();
+ errors(1);
+ add();
+ v.form();
+ errors(2);
+ add();
+ v.form();
+ errors(3);
+ $("#testForm2 input[name=list1]").remove();
+ v.form();
+ errors(2);
+ add();
+ v.form();
+ errors(3);
+ $("#testForm2 input[name^=list]").remove();
+ v.form();
+ errors(1);
+ $("#agb").attr("disabled", true);
+ v.form();
+ errors(0);
+ $("#agb").attr("disabled", false);
+ v.form();
+ errors(1);
+});
+
+test("idOrName()", function() {
+ expect(4);
+ var v = $("#testForm1").validate();
+ equals( "form8input", v.idOrName( $("#form8input")[0] ) );
+ equals( "check", v.idOrName( $("#form6check1")[0] ) );
+ equals( "agree", v.idOrName( $("#agb")[0] ) );
+ equals( "button", v.idOrName( $("#form :button")[0] ) );
+});
+
+test("resetForm()", function() {
+ function errors(expected, message) {
+ equals(expected, v.size(), message );
+ }
+ var v = $("#testForm1").validate();
+ v.form();
+ errors(2);
+ $("#firstname").val("hiy");
+ v.resetForm();
+ errors(0);
+ equals("", $("#firstname").val(), "form plugin is included, therefor resetForm must also reset inputs, not only errors");
+});
+
+test("message from title", function() {
+ var v = $("#withTitle").validate();
+ v.checkForm();
+ equals(v.errorList[0].message, "fromtitle", "title not used");
+});
+
+test("ignoreTitle", function() {
+ var v = $("#withTitle").validate({ignoreTitle:true});
+ v.checkForm();
+ equals(v.errorList[0].message, $.validator.messages["required"], "title used when it should have been ignored");
+});
+
+test("ajaxSubmit", function() {
+ expect(1);
+ stop();
+ $("#user").val("Peter");
+ $("#password").val("foobar");
+ jQuery("#signupForm").validate({
+ submitHandler: function(form) {
+ jQuery(form).ajaxSubmit({
+ success: function(response) {
+ equals("Hi Peter, welcome back.", response);
+ start();
+ }
+ });
+ }
+ });
+ jQuery("#signupForm").triggerHandler("submit");
+});
+
+
+module("misc");
+
+test("success option", function() {
+ expect(7);
+ equals( "", $("#firstname").val() );
+ var v = $("#testForm1").validate({
+ success: "valid"
+ });
+ var label = $("#testForm1 label");
+ ok( label.is(".error") );
+ ok( !label.is(".valid") );
+ v.form();
+ ok( label.is(".error") );
+ ok( !label.is(".valid") );
+ $("#firstname").val("hi");
+ v.form();
+ ok( label.is(".error") );
+ ok( label.is(".valid") );
+});
+
+test("success option2", function() {
+ expect(5);
+ equals( "", $("#firstname").val() );
+ var v = $("#testForm1").validate({
+ success: "valid"
+ });
+ var label = $("#testForm1 label");
+ ok( label.is(".error") );
+ ok( !label.is(".valid") );
+ $("#firstname").val("hi");
+ v.form();
+ ok( label.is(".error") );
+ ok( label.is(".valid") );
+});
+
+test("success option3", function() {
+ expect(5);
+ equals( "", $("#firstname").val() );
+ $("#errorFirstname").remove();
+ var v = $("#testForm1").validate({
+ success: "valid"
+ });
+ equals( 0, $("#testForm1 label").size() );
+ $("#firstname").val("hi");
+ v.form();
+ var labels = $("#testForm1 label");
+ equals( 3, labels.size() );
+ ok( labels.eq(0).is(".valid") );
+ ok( !labels.eq(1).is(".valid") );
+});
+
+test("successlist", function() {
+ var v = $("#form").validate({ success: "xyz" });
+ v.form();
+ equals(0, v.successList.length);
+});
+
+test("success isn't called for optional elements", function() {
+ expect(4);
+ equals( "", $("#firstname").removeClass().val() );
+ $("#something").remove();
+ $("#lastname").remove();
+ $("#errorFirstname").remove();
+ var v = $("#testForm1").validate({
+ success: function() {
+ ok( false, "don't call success for optional elements!" );
+ },
+ rules: {
+ firstname: "email"
+ }
+ });
+ equals( 0, $("#testForm1 label").size() );
+ v.form();
+ equals( 0, $("#testForm1 label").size() );
+ $("#firstname").valid();
+ equals( 0, $("#testForm1 label").size() );
+});
+
+test("all rules are evaluated even if one returns a dependency-mistmatch", function() {
+ expect(6);
+ equals( "", $("#firstname").removeClass().val() );
+ $("#lastname").remove();
+ $("#errorFirstname").remove();
+ $.validator.addMethod("custom1", function() {
+ ok( true, "custom method must be evaluated" );
+ return true;
+ }, "");
+ var v = $("#testForm1").validate({
+ rules: {
+ firstname: {email:true, custom1: true}
+ }
+ });
+ equals( 0, $("#testForm1 label").size() );
+ v.form();
+ equals( 0, $("#testForm1 label").size() );
+ $("#firstname").valid();
+ equals( 0, $("#testForm1 label").size() );
+
+ delete $.validator.methods.custom1;
+ delete $.validator.messages.custom1;
+});
+
+test("messages", function() {
+ var m = jQuery.validator.messages;
+ equals( "Please enter no more than 0 characters.", m.maxlength(0) );
+ equals( "Please enter at least 1 characters.", m.minlength(1) );
+ equals( "Please enter a value between 1 and 2 characters long.", m.rangelength([1, 2]) );
+ equals( "Please enter a value less than or equal to 1.", m.max(1) );
+ equals( "Please enter a value greater than or equal to 0.", m.min(0) );
+ equals( "Please enter a value between 1 and 2.", m.range([1, 2]) );
+});
+
+test("jQuery.validator.format", function() {
+ equals( "Please enter a value between 0 and 1.", jQuery.validator.format("Please enter a value between {0} and {1}.", 0, 1) );
+ equals( "0 is too fast! Enter a value smaller then 0 and at least -15", jQuery.validator.format("{0} is too fast! Enter a value smaller then {0} and at least {1}", 0, -15) );
+ var template = jQuery.validator.format("{0} is too fast! Enter a value smaller then {0} and at least {1}");
+ equals( "0 is too fast! Enter a value smaller then 0 and at least -15", template(0, -15) );
+ template = jQuery.validator.format("Please enter a value between {0} and {1}.");
+ equals( "Please enter a value between 1 and 2.", template([1, 2]) );
+});
+
+test("option: ignore", function() {
+ var v = $("#testForm1").validate({
+ ignore: "[name=lastname]"
+ });
+ v.form();
+ equals( 1, v.size() );
+});
+
+test("option: subformRequired", function() {
+ jQuery.validator.addMethod("billingRequired", function(value, element) {
+ if ($("#bill_to_co").is(":checked"))
+ return $(element).parents("#subform").length;
+ return !this.optional(element);
+ }, "");
+ var v = $("#subformRequired").validate();
+ v.form();
+ equals( 1, v.size() );
+ $("#bill_to_co").attr("checked", false);
+ v.form();
+ equals( 2, v.size() );
+
+ delete $.validator.methods.billingRequired;
+ delete $.validator.messages.billingRequired;
+});
+
+module("expressions");
+
+test("expression: :blank", function() {
+ var e = $("#lastname")[0];
+ equals( 1, $(e).filter(":blank").length );
+ e.value = " ";
+ equals( 1, $(e).filter(":blank").length );
+ e.value = " "
+ equals( 1, $(e).filter(":blank").length );
+ e.value= " a ";
+ equals( 0, $(e).filter(":blank").length );
+});
+
+test("expression: :filled", function() {
+ var e = $("#lastname")[0];
+ equals( 0, $(e).filter(":filled").length );
+ e.value = " ";
+ equals( 0, $(e).filter(":filled").length );
+ e.value = " "
+ equals( 0, $(e).filter(":filled").length );
+ e.value= " a ";
+ equals( 1, $(e).filter(":filled").length );
+});
+
+test("expression: :unchecked", function() {
+ var e = $("#check2")[0];
+ equals( 1, $(e).filter(":unchecked").length );
+ e.checked = true;
+ equals( 0, $(e).filter(":unchecked").length );
+ e.checked = false;
+ equals( 1, $(e).filter(":unchecked").length );
+});
+
+module("events");
+
+test("validate on blur", function() {
+ function errors(expected, message) {
+ equals(v.size(), expected, message );
+ }
+ function labels(expected) {
+ equals(v.errors().filter(":visible").size(), expected);
+ }
+ function blur(target) {
+ target.trigger("blur").trigger("focusout");
+ }
+ $("#errorFirstname").hide();
+ var e = $("#firstname");
+ var v = $("#testForm1").validate();
+ $("#something").val("");
+ blur(e);
+ errors(0, "No value yet, required is skipped on blur");
+ labels(0);
+ e.val("h");
+ blur(e);
+ errors(1, "Required was ignored, but as something was entered, check other rules, minlength isn't met");
+ labels(1);
+ e.val("hh");
+ blur(e);
+ errors(0, "All is fine");
+ labels(0);
+ e.val("");
+ v.form();
+ errors(3, "Submit checks all rules, both fields invalid");
+ labels(3);
+ blur(e);
+ errors(1, "Blurring the field results in emptying the error list first, then checking the invalid field: its still invalid, don't remove the error" );
+ labels(3);
+ e.val("h");
+ blur(e);
+ errors(1, "Entering a single character fulfills required, but not minlength: 2, still invalid");
+ labels(3);
+ e.val("hh");
+ blur(e);
+ errors(0, "Both required and minlength are met, no errors left");
+ labels(2);
+});
+
+test("validate on keyup", function() {
+ function errors(expected, message) {
+ equals(expected, v.size(), message );
+ }
+ function keyup(target) {
+ target.trigger("keyup");
+ }
+ var e = $("#firstname");
+ var v = $("#testForm1").validate();
+ keyup(e);
+ errors(0, "No value, no errors");
+ e.val("a");
+ keyup(e);
+ errors(0, "Value, but not invalid");
+ e.val("");
+ v.form();
+ errors(2, "Both invalid");
+ keyup(e);
+ errors(1, "Only one field validated, still invalid");
+ e.val("hh");
+ keyup(e);
+ errors(0, "Not invalid anymore");
+ e.val("h");
+ keyup(e);
+ errors(1, "Field didn't loose focus, so validate again, invalid");
+ e.val("hh");
+ keyup(e);
+ errors(0, "Valid");
+});
+
+test("validate on not keyup, only blur", function() {
+ function errors(expected, message) {
+ equals(expected, v.size(), message );
+ }
+ var e = $("#firstname");
+ var v = $("#testForm1").validate({
+ onkeyup: false
+ });
+ errors(0);
+ e.val("a");
+ e.trigger("keyup");
+ e.keyup();
+ errors(0);
+ e.trigger("blur").trigger("focusout");
+ errors(1);
+});
+
+test("validate on keyup and blur", function() {
+ function errors(expected, message) {
+ equals(expected, v.size(), message );
+ }
+ var e = $("#firstname");
+ var v = $("#testForm1").validate();
+ errors(0);
+ e.val("a");
+ e.trigger("keyup");
+ errors(0);
+ e.trigger("blur").trigger("focusout");
+ errors(1);
+});
+
+test("validate email on keyup and blur", function() {
+ function errors(expected, message) {
+ equals(expected, v.size(), message );
+ }
+ var e = $("#firstname");
+ var v = $("#testForm1").validate();
+ v.form();
+ errors(2);
+ e.val("a");
+ e.trigger("keyup");
+ errors(1);
+ e.val("aa");
+ e.trigger("keyup");
+ errors(0);
+});
+
+test("validate checkbox on click", function() {
+ function errors(expected, message) {
+ equals(expected, v.size(), message );
+ }
+ function trigger(element) {
+ element.click();
+ // triggered click event screws up checked-state in 1.4
+ element.valid();
+ }
+ var e = $("#check2");
+ var v = $("#form").validate({
+ rules: {
+ check2: "required"
+ }
+ });
+ trigger(e);
+ errors(0);
+ trigger(e);
+ equals( false, v.form() );
+ errors(1);
+ trigger(e);
+ errors(0);
+ trigger(e);
+ errors(1);
+});
+
+test("validate multiple checkbox on click", function() {
+ function errors(expected, message) {
+ equals(expected, v.size(), message );
+ }
+ function trigger(element) {
+ element.click();
+ // triggered click event screws up checked-state in 1.4
+ element.valid();
+ }
+ var e1 = $("#check1").attr("checked", false);
+ var e2 = $("#check1b");
+ var v = $("#form").validate({
+ rules: {
+ check: {
+ required: true,
+ minlength: 2
+ }
+ }
+ });
+ trigger(e1);
+ trigger(e2);
+ errors(0);
+ trigger(e2);
+ equals( false, v.form() );
+ errors(1);
+ trigger(e2);
+ errors(0);
+ trigger(e2);
+ errors(1);
+});
+
+test("validate radio on click", function() {
+ function errors(expected, message) {
+ equals(expected, v.size(), message );
+ }
+ function trigger(element) {
+ element.click();
+ // triggered click event screws up checked-state in 1.4
+ element.valid();
+ }
+ var e1 = $("#radio1");
+ var e2 = $("#radio1a");
+ var v = $("#form").validate({
+ rules: {
+ radio1: "required"
+ }
+ });
+ errors(0);
+ equals( false, v.form() );
+ errors(1);
+ trigger(e2);
+ errors(0);
+ trigger(e1);
+ errors(0);
+});
diff --git a/bug/bug/jquery-validation-1.8.1/todo b/bug/bug/jquery-validation-1.8.1/todo
new file mode 100644
index 0000000..702a496
--- /dev/null
+++ b/bug/bug/jquery-validation-1.8.1/todo
@@ -0,0 +1,172 @@
+1.3
+---
+
+- checkout datejs.com for a proper date implementation -> complete but very heavy parser, currently overkill
+
+- rewrite required-method to use jQuery's extended val() on selects[/radios/checkboxes]
+- consider a field-validator object that encapsulates a single element and all methods working on it
+- export API browser
+- add example/support for other URL schemes like svn://....
+- document min/max/range methods for checkboxes/selects
+
+/**
+ * Return false, if the element is
+ *
+ * - some kind of text input and its value is too short
+ *
+ * - a set of checkboxes has not enough boxes checked
+ *
+ * - a select and has not enough options selected
+ *
+ * Works with all kind of text inputs, checkboxes and select.
+ *
+ * @example <input name="firstname" class="{minLength:5}" />
+ * @desc Declares an optional input element with at least 5 characters (or none at all).
+ *
+ * @example <input name="firstname" class="{required:true,minLength:5}" />
+ * @desc Declares an input element that must have at least 5 characters.
+ *
+ * @example <fieldset>
+ * <legend>Spam</legend>
+ * <label for="spam_email">
+ * <input type="checkbox" id="spam_email" value="email" name="spam" validate="required:true,minLength:2" />
+ * Spam via E-Mail
+ * </label>
+ * <label for="spam_phone">
+ * <input type="checkbox" id="spam_phone" value="phone" name="spam" />
+ * Spam via Phone
+ * </label>
+ * <label for="spam_mail">
+ * <input type="checkbox" id="spam_mail" value="mail" name="spam" />
+ * Spam via Mail
+ * </label>
+ * <label for="spam" class="error">Please select at least two types of spam.</label>
+ * </fieldset>
+ * @desc Specifies a group of checkboxes. To validate, at least two checkboxes must be selected.
+ *
+ * @param Number min
+ * @name jQuery.validator.methods.minLength
+ * @type Boolean
+ * @cat Plugins/Validate/Methods
+ */
+
+ /**
+ * Return false, if the element is
+ *
+ * - some kind of text input and its value is too short or too long
+ *
+ * - a set of checkboxes has not enough or too many boxes checked
+ *
+ * - a select and has not enough or too many options selected
+ *
+ * Works with all kind of text inputs, checkboxes and selects.
+ *
+ * @example <input name="firstname" class="{rangeLength:[3,5]}" />
+ * @desc Declares an optional input element with at least 3 and at most 5 characters (or none at all).
+ *
+ * @example <input name="firstname" class="{required:true,rangeLength:[3,5]}" />
+ * @desc Declares an input element that must have at least 3 and at most 5 characters.
+ *
+ * @example <select id="cars" class="{required:true,rangeLength:[2,3]}" multiple="multiple">
+ * <option value="m_sl">Mercedes SL</option>
+ * <option value="o_c">Opel Corsa</option>
+ * <option value="vw_p">VW Polo</option>
+ * <option value="t_s">Titanic Skoda</option>
+ * </select>
+ * @desc Specifies a select that must have at least two but no more than three options selected.
+ *
+ * @param Array<Number> min/max
+ * @name jQuery.validator.methods.rangeLength
+ * @type Boolean
+ * @cat Plugins/Validate/Methods
+ */
+
+- document numberOfInvalids and hideErrors
+
+/**
+ * Returns the number of invalid elements in the form.
+ *
+ * @example $("#myform").validate({
+ * showErrors: function() {
+ * $("#summary").html("Your form contains " + this.numberOfInvalids() + " errors, see details below.");
+ * this.defaultShowErrors();
+ * }
+ * });
+ * @desc Specifies a custom showErrors callback that updates the number of invalid elements each
+ * time the form or a single element is validated.
+ *
+ * @name jQuery.validator.prototype.numberOfInvalids
+ * @type Number
+ */
+
+ /**
+ * Hides all error messages in this form.
+ *
+ * @example var validator = $("#myform").validate();
+ * $(".cancel").click(function() {
+ * validator.hideErrors();
+ * });
+ * @desc Specifies a custom showErrors callback that updates the number of invalid elements each
+ * time the form or a single element is validated.
+ *
+ * @name jQuery.validator.prototype.hideErrors
+ */
+
+- remove deprecated methods
+
+- css references
+ - http://test5.caribmedia.com/CSS/Secrets/members/michiel/floating-forms.html
+ - http://paularmstrongdesigns.com/projects/awesomeform/
+ - http://dnevnikeklektika.com/uni-form/
+
+- consider validation on page load, disabling required-checks
+- completely rework showErrors: manually settings errors is currently extremely flawed and utterly useless, eg. errors disappear if some other validation is triggered
+- add custom event to remote validation for adding more parameters
+
+- document focusInvalid()
+- document validation lifecycle: setup (add event handlers), run validation (prepare form, validate elements, display errors/submit form)
+ -> show where the user can hook in via callbacks
+
+- AND depedency: specify multiple expressions as an array
+
+- add custom events for form and elements instead of more callbacks (additional options/callbacks)
+ - beforeValidation: Callback, called before doing any validation
+ - beforeSubmit: Callback, called before submitting the form (default submit or calling submitHandler, if specified)
+
+- animations!!
+- ajax validation:
+ - in combination with autocomplete (mustmatch company name, fill out address details, validate required)
+ - validate zip code in comparison to address, if match and state is missing, fill out state
+- strong password check/integration: http://phiras.wordpress.com/2007/04/08/password-strength-meter-a-jquery-plugin/
+
+- stop firefox password manager to popup before validation - check mozilla bug tracker?
+
+- overload addMethod with a Option-variant:
+$.validator.addMethod({
+ name: "custom",
+ message: "blablabla",
+ parameteres: false,
+ handler: function() { ... }
+});
+
+ Examples:
+ - wordpress comment form, make it a drop-in method
+ - ajaxForm() integration
+ - ajaxSubmit with rules-option, more/less options to ajaxSubmit
+ - watermark integration http://digitalbush.com/projects/watermark-input-plugin
+ - datepicker integration
+ - timepicker integration ( http://labs.perifer.se/timedatepicker/ )
+ - integration with CakePHP ( https://trac.cakephp.org/ticket/2359 )
+ - integration with tabs: http://www.netix.sk/forms/test.html
+ - intergration with rich-text-editors (FCKEditor, Codepress)
+ http://www.fyneworks.com/jquery/FCKEditor/
+
+2.0
+---
+- attachValidation, removeValidation, validate (with UI), valid (without UI)
+- (re)move current addMethod implementation
+- move rules plugin option
+- move metadata support
+- make validate method chainable
+ -> provide an accessor for the validator if necessary at all
+- move a few default methods to additionals, eg. dateXXX, creditcard, definitely accept \ No newline at end of file
diff --git a/bug/bug/jquery-validation-1.8.1/version.txt b/bug/bug/jquery-validation-1.8.1/version.txt
new file mode 100644
index 0000000..a8fdfda
--- /dev/null
+++ b/bug/bug/jquery-validation-1.8.1/version.txt
@@ -0,0 +1 @@
+1.8.1
diff --git a/bug/bug/jquery.iframe-post-form.js b/bug/bug/jquery.iframe-post-form.js
new file mode 100644
index 0000000..3ce755c
--- /dev/null
+++ b/bug/bug/jquery.iframe-post-form.js
@@ -0,0 +1,92 @@
+/**
+ * jQuery plugin for posting form including file inputs.
+ *
+ * Copyright (c) 2010 - 2011 Ewen Elder
+ *
+ * Licensed under the MIT and GPL licenses:
+ * http://www.opensource.org/licenses/mit-license.php
+ * http://www.gnu.org/licenses/gpl.html
+ *
+ * @author: Ewen Elder <ewen at jainaewen dot com> <glomainn at yahoo dot co dot uk>
+ * @version: 1.1.1 (2011-07-29)
+**/
+(function ($)
+{
+ $.fn.iframePostForm = function (options)
+ {
+ var response,
+ returnReponse,
+ element,
+ status = true,
+ iframe;
+
+ options = $.extend({}, $.fn.iframePostForm.defaults, options);
+
+
+ // Add the iframe.
+ if (!$('#' + options.iframeID).length)
+ {
+ $('body').append('<iframe id="' + options.iframeID + '" name="' + options.iframeID + '" style="display:none" />');
+ }
+
+
+ return $(this).each(function ()
+ {
+ element = $(this);
+
+
+ // Target the iframe.
+ element.attr('target', options.iframeID);
+
+
+ // Submit listener.
+ element.submit(function ()
+ {
+ // If status is false then abort.
+ status = options.post.apply(this);
+
+ if (status === false)
+ {
+ return status;
+ }
+
+
+ iframe = $('#' + options.iframeID).load(function ()
+ {
+ response = iframe.contents().find('body');
+
+
+ if (options.json)
+ {
+ returnReponse = $.parseJSON(response.html());
+ }
+
+ else
+ {
+ returnReponse = response.html();
+ }
+
+
+ options.complete.apply(this, [returnReponse]);
+
+ iframe.unbind('load');
+
+
+ setTimeout(function ()
+ {
+ response.html('');
+ }, 1);
+ });
+ });
+ });
+ };
+
+
+ $.fn.iframePostForm.defaults =
+ {
+ iframeID : 'iframe-post-form', // Iframe ID.
+ json : false, // Parse server response as a json object.
+ post : function () {}, // Form onsubmit.
+ complete : function (response) {} // After response from the server has been received.
+ };
+})(jQuery); \ No newline at end of file
diff --git a/bug/bug/portal-break.png b/bug/bug/portal-break.png
new file mode 100644
index 0000000..e81b559
--- /dev/null
+++ b/bug/bug/portal-break.png
Binary files differ
diff --git a/bug/bug/qunit.css b/bug/bug/qunit.css
new file mode 100644
index 0000000..a6a831c
--- /dev/null
+++ b/bug/bug/qunit.css
@@ -0,0 +1,197 @@
+/** Font Family and Sizes */
+
+#qunit-tests, #qunit-header, #qunit-banner, #qunit-testrunner-toolbar, #qunit-userAgent, #qunit-testresult {
+ font-family: "Helvetica Neue Light", "HelveticaNeue-Light", "Helvetica Neue", Calibri, Helvetica, Arial;
+}
+
+#qunit-testrunner-toolbar, #qunit-userAgent, #qunit-testresult, #qunit-tests li { font-size: small; }
+#qunit-tests { font-size: smaller; }
+
+
+/** Resets */
+
+#qunit-tests, #qunit-tests ol, #qunit-header, #qunit-banner, #qunit-userAgent, #qunit-testresult {
+ margin: 0;
+ padding: 0;
+}
+
+
+/** Header */
+
+#qunit-header {
+ padding: 0.5em 0 0.5em 1em;
+
+ color: #8699a4;
+ background-color: #0d3349;
+
+ font-size: 1.5em;
+ line-height: 1em;
+ font-weight: normal;
+
+ border-radius: 15px 15px 0 0;
+ -moz-border-radius: 15px 15px 0 0;
+ -webkit-border-top-right-radius: 15px;
+ -webkit-border-top-left-radius: 15px;
+}
+
+#qunit-header a {
+ text-decoration: none;
+ color: #c2ccd1;
+}
+
+#qunit-header a:hover,
+#qunit-header a:focus {
+ color: #fff;
+}
+
+#qunit-banner {
+ height: 5px;
+}
+
+#qunit-testrunner-toolbar {
+ padding: 0.5em 0 0.5em 2em;
+ color: #5E740B;
+ background-color: #eee;
+}
+
+#qunit-userAgent {
+ padding: 0.5em 0 0.5em 2.5em;
+ background-color: #2b81af;
+ color: #fff;
+ text-shadow: rgba(0, 0, 0, 0.5) 2px 2px 1px;
+}
+
+
+/** Tests: Pass/Fail */
+
+#qunit-tests {
+ list-style-position: inside;
+}
+
+#qunit-tests li {
+ padding: 0.4em 0.5em 0.4em 2.5em;
+ border-bottom: 1px solid #fff;
+ list-style-position: inside;
+}
+
+#qunit-tests li strong {
+ cursor: pointer;
+}
+
+#qunit-tests ol {
+ margin-top: 0.5em;
+ padding: 0.5em;
+
+ background-color: #fff;
+
+ border-radius: 15px;
+ -moz-border-radius: 15px;
+ -webkit-border-radius: 15px;
+
+ box-shadow: inset 0px 2px 13px #999;
+ -moz-box-shadow: inset 0px 2px 13px #999;
+ -webkit-box-shadow: inset 0px 2px 13px #999;
+}
+
+#qunit-tests table {
+ border-collapse: collapse;
+ margin-top: .2em;
+}
+
+#qunit-tests th {
+ text-align: right;
+ vertical-align: top;
+ padding: 0 .5em 0 0;
+}
+
+#qunit-tests td {
+ vertical-align: top;
+}
+
+#qunit-tests pre {
+ margin: 0;
+ white-space: pre-wrap;
+ word-wrap: break-word;
+}
+
+#qunit-tests del {
+ background-color: #e0f2be;
+ color: #374e0c;
+ text-decoration: none;
+}
+
+#qunit-tests ins {
+ background-color: #ffcaca;
+ color: #500;
+ text-decoration: none;
+}
+
+/*** Test Counts */
+
+#qunit-tests b.counts { color: black; }
+#qunit-tests b.passed { color: #5E740B; }
+#qunit-tests b.failed { color: #710909; }
+
+#qunit-tests li li {
+ margin: 0.5em;
+ padding: 0.4em 0.5em 0.4em 0.5em;
+ background-color: #fff;
+ border-bottom: none;
+ list-style-position: inside;
+}
+
+/*** Passing Styles */
+
+#qunit-tests li li.pass {
+ color: #5E740B;
+ background-color: #fff;
+ border-left: 26px solid #C6E746;
+}
+
+#qunit-tests .pass { color: #528CE0; background-color: #D2E0E6; }
+#qunit-tests .pass .test-name { color: #366097; }
+
+#qunit-tests .pass .test-actual,
+#qunit-tests .pass .test-expected { color: #999999; }
+
+#qunit-banner.qunit-pass { background-color: #C6E746; }
+
+/*** Failing Styles */
+
+#qunit-tests li li.fail {
+ color: #710909;
+ background-color: #fff;
+ border-left: 26px solid #EE5757;
+}
+
+#qunit-tests .fail { color: #000000; background-color: #EE5757; }
+#qunit-tests .fail .test-name,
+#qunit-tests .fail .module-name { color: #000000; }
+
+#qunit-tests .fail .test-actual { color: #EE5757; }
+#qunit-tests .fail .test-expected { color: green; }
+
+#qunit-banner.qunit-fail { background-color: #EE5757; }
+
+
+/** Footer */
+
+#qunit-testresult {
+ padding: 0.5em 0.5em 0.5em 2.5em;
+
+ color: #2b81af;
+ background-color: #D2E0E6;
+
+ border-radius: 0 0 15px 15px;
+ -moz-border-radius: 0 0 15px 15px;
+ -webkit-border-bottom-right-radius: 15px;
+ -webkit-border-bottom-left-radius: 15px;
+}
+
+/** Fixture */
+
+#qunit-fixture {
+ position: absolute;
+ top: -10000px;
+ left: -10000px;
+}
diff --git a/bug/bug/qunit.js b/bug/bug/qunit.js
new file mode 100644
index 0000000..30e0395
--- /dev/null
+++ b/bug/bug/qunit.js
@@ -0,0 +1,1415 @@
+/*
+ * QUnit - A JavaScript Unit Testing Framework
+ *
+ * http://docs.jquery.com/QUnit
+ *
+ * Copyright (c) 2011 John Resig, Jörn Zaefferer
+ * Dual licensed under the MIT (MIT-LICENSE.txt)
+ * or GPL (GPL-LICENSE.txt) licenses.
+ */
+
+(function(window) {
+
+var defined = {
+ setTimeout: typeof window.setTimeout !== "undefined",
+ sessionStorage: (function() {
+ try {
+ return !!sessionStorage.getItem;
+ } catch(e){
+ return false;
+ }
+ })()
+}
+
+var testId = 0;
+
+var Test = function(name, testName, expected, testEnvironmentArg, async, callback) {
+ this.name = name;
+ this.testName = testName;
+ this.expected = expected;
+ this.testEnvironmentArg = testEnvironmentArg;
+ this.async = async;
+ this.callback = callback;
+ this.assertions = [];
+};
+Test.prototype = {
+ init: function() {
+ var tests = id("qunit-tests");
+ if (tests) {
+ var b = document.createElement("strong");
+ b.innerHTML = "Running " + this.name;
+ var li = document.createElement("li");
+ li.appendChild( b );
+ li.id = this.id = "test-output" + testId++;
+ tests.appendChild( li );
+ }
+ },
+ setup: function() {
+ if (this.module != config.previousModule) {
+ if ( config.previousModule ) {
+ QUnit.moduleDone( {
+ name: config.previousModule,
+ failed: config.moduleStats.bad,
+ passed: config.moduleStats.all - config.moduleStats.bad,
+ total: config.moduleStats.all
+ } );
+ }
+ config.previousModule = this.module;
+ config.moduleStats = { all: 0, bad: 0 };
+ QUnit.moduleStart( {
+ name: this.module
+ } );
+ }
+
+ config.current = this;
+ this.testEnvironment = extend({
+ setup: function() {},
+ teardown: function() {}
+ }, this.moduleTestEnvironment);
+ if (this.testEnvironmentArg) {
+ extend(this.testEnvironment, this.testEnvironmentArg);
+ }
+
+ QUnit.testStart( {
+ name: this.testName
+ } );
+
+ // allow utility functions to access the current test environment
+ // TODO why??
+ QUnit.current_testEnvironment = this.testEnvironment;
+
+ try {
+ if ( !config.pollution ) {
+ saveGlobal();
+ }
+
+ this.testEnvironment.setup.call(this.testEnvironment);
+ } catch(e) {
+ QUnit.ok( false, "Setup failed on " + this.testName + ": " + e.message );
+ }
+ },
+ run: function() {
+ if ( this.async ) {
+ QUnit.stop();
+ }
+
+ if ( config.notrycatch ) {
+ this.callback.call(this.testEnvironment);
+ return;
+ }
+ try {
+ this.callback.call(this.testEnvironment);
+ } catch(e) {
+ fail("Test " + this.testName + " died, exception and test follows", e, this.callback);
+ QUnit.ok( false, "Died on test #" + (this.assertions.length + 1) + ": " + e.message + " - " + QUnit.jsDump.parse(e) );
+ // else next test will carry the responsibility
+ saveGlobal();
+
+ // Restart the tests if they're blocking
+ if ( config.blocking ) {
+ start();
+ }
+ }
+ },
+ teardown: function() {
+ try {
+ checkPollution();
+ this.testEnvironment.teardown.call(this.testEnvironment);
+ } catch(e) {
+ QUnit.ok( false, "Teardown failed on " + this.testName + ": " + e.message );
+ }
+ },
+ finish: function() {
+ if ( this.expected && this.expected != this.assertions.length ) {
+ QUnit.ok( false, "Expected " + this.expected + " assertions, but " + this.assertions.length + " were run" );
+ }
+
+ var good = 0, bad = 0,
+ tests = id("qunit-tests");
+
+ config.stats.all += this.assertions.length;
+ config.moduleStats.all += this.assertions.length;
+
+ if ( tests ) {
+ var ol = document.createElement("ol");
+
+ for ( var i = 0; i < this.assertions.length; i++ ) {
+ var assertion = this.assertions[i];
+
+ var li = document.createElement("li");
+ li.className = assertion.result ? "pass" : "fail";
+ li.innerHTML = assertion.message || (assertion.result ? "okay" : "failed");
+ ol.appendChild( li );
+
+ if ( assertion.result ) {
+ good++;
+ } else {
+ bad++;
+ config.stats.bad++;
+ config.moduleStats.bad++;
+ }
+ }
+
+ // store result when possible
+ defined.sessionStorage && sessionStorage.setItem("qunit-" + this.testName, bad);
+
+ if (bad == 0) {
+ ol.style.display = "none";
+ }
+
+ var b = document.createElement("strong");
+ b.innerHTML = this.name + " <b class='counts'>(<b class='failed'>" + bad + "</b>, <b class='passed'>" + good + "</b>, " + this.assertions.length + ")</b>";
+
+ addEvent(b, "click", function() {
+ var next = b.nextSibling, display = next.style.display;
+ next.style.display = display === "none" ? "block" : "none";
+ });
+
+ addEvent(b, "dblclick", function(e) {
+ var target = e && e.target ? e.target : window.event.srcElement;
+ if ( target.nodeName.toLowerCase() == "span" || target.nodeName.toLowerCase() == "b" ) {
+ target = target.parentNode;
+ }
+ if ( window.location && target.nodeName.toLowerCase() === "strong" ) {
+ window.location.search = "?" + encodeURIComponent(getText([target]).replace(/\(.+\)$/, "").replace(/(^\s*|\s*$)/g, ""));
+ }
+ });
+
+ var li = id(this.id);
+ li.className = bad ? "fail" : "pass";
+ li.style.display = resultDisplayStyle(!bad);
+ li.removeChild( li.firstChild );
+ li.appendChild( b );
+ li.appendChild( ol );
+
+ } else {
+ for ( var i = 0; i < this.assertions.length; i++ ) {
+ if ( !this.assertions[i].result ) {
+ bad++;
+ config.stats.bad++;
+ config.moduleStats.bad++;
+ }
+ }
+ }
+
+ try {
+ QUnit.reset();
+ } catch(e) {
+ fail("reset() failed, following Test " + this.testName + ", exception and reset fn follows", e, QUnit.reset);
+ }
+
+ QUnit.testDone( {
+ name: this.testName,
+ failed: bad,
+ passed: this.assertions.length - bad,
+ total: this.assertions.length
+ } );
+ },
+
+ queue: function() {
+ var test = this;
+ synchronize(function() {
+ test.init();
+ });
+ function run() {
+ // each of these can by async
+ synchronize(function() {
+ test.setup();
+ });
+ synchronize(function() {
+ test.run();
+ });
+ synchronize(function() {
+ test.teardown();
+ });
+ synchronize(function() {
+ test.finish();
+ });
+ }
+ // defer when previous test run passed, if storage is available
+ var bad = defined.sessionStorage && +sessionStorage.getItem("qunit-" + this.testName);
+ if (bad) {
+ run();
+ } else {
+ synchronize(run);
+ };
+ }
+
+}
+
+var QUnit = {
+
+ // call on start of module test to prepend name to all tests
+ module: function(name, testEnvironment) {
+ config.currentModule = name;
+ config.currentModuleTestEnviroment = testEnvironment;
+ },
+
+ asyncTest: function(testName, expected, callback) {
+ if ( arguments.length === 2 ) {
+ callback = expected;
+ expected = 0;
+ }
+
+ QUnit.test(testName, expected, callback, true);
+ },
+
+ test: function(testName, expected, callback, async) {
+ var name = '<span class="test-name">' + testName + '</span>', testEnvironmentArg;
+
+ if ( arguments.length === 2 ) {
+ callback = expected;
+ expected = null;
+ }
+ // is 2nd argument a testEnvironment?
+ if ( expected && typeof expected === 'object') {
+ testEnvironmentArg = expected;
+ expected = null;
+ }
+
+ if ( config.currentModule ) {
+ name = '<span class="module-name">' + config.currentModule + "</span>: " + name;
+ }
+
+ if ( !validTest(config.currentModule + ": " + testName) ) {
+ return;
+ }
+
+ var test = new Test(name, testName, expected, testEnvironmentArg, async, callback);
+ test.module = config.currentModule;
+ test.moduleTestEnvironment = config.currentModuleTestEnviroment;
+ test.queue();
+ },
+
+ /**
+ * Specify the number of expected assertions to gurantee that failed test (no assertions are run at all) don't slip through.
+ */
+ expect: function(asserts) {
+ config.current.expected = asserts;
+ },
+
+ /**
+ * Asserts true.
+ * @example ok( "asdfasdf".length > 5, "There must be at least 5 chars" );
+ */
+ ok: function(a, msg) {
+ a = !!a;
+ var details = {
+ result: a,
+ message: msg
+ };
+ msg = escapeHtml(msg);
+ QUnit.log(details);
+ config.current.assertions.push({
+ result: a,
+ message: msg
+ });
+ },
+
+ /**
+ * Checks that the first two arguments are equal, with an optional message.
+ * Prints out both actual and expected values.
+ *
+ * Prefered to ok( actual == expected, message )
+ *
+ * @example equal( format("Received {0} bytes.", 2), "Received 2 bytes." );
+ *
+ * @param Object actual
+ * @param Object expected
+ * @param String message (optional)
+ */
+ equal: function(actual, expected, message) {
+ QUnit.push(expected == actual, actual, expected, message);
+ },
+
+ notEqual: function(actual, expected, message) {
+ QUnit.push(expected != actual, actual, expected, message);
+ },
+
+ deepEqual: function(actual, expected, message) {
+ QUnit.push(QUnit.equiv(actual, expected), actual, expected, message);
+ },
+
+ notDeepEqual: function(actual, expected, message) {
+ QUnit.push(!QUnit.equiv(actual, expected), actual, expected, message);
+ },
+
+ strictEqual: function(actual, expected, message) {
+ QUnit.push(expected === actual, actual, expected, message);
+ },
+
+ notStrictEqual: function(actual, expected, message) {
+ QUnit.push(expected !== actual, actual, expected, message);
+ },
+
+ raises: function(block, expected, message) {
+ var actual, ok = false;
+
+ if (typeof expected === 'string') {
+ message = expected;
+ expected = null;
+ }
+
+ try {
+ block();
+ } catch (e) {
+ actual = e;
+ }
+
+ if (actual) {
+ // we don't want to validate thrown error
+ if (!expected) {
+ ok = true;
+ // expected is a regexp
+ } else if (QUnit.objectType(expected) === "regexp") {
+ ok = expected.test(actual);
+ // expected is a constructor
+ } else if (actual instanceof expected) {
+ ok = true;
+ // expected is a validation function which returns true is validation passed
+ } else if (expected.call({}, actual) === true) {
+ ok = true;
+ }
+ }
+
+ QUnit.ok(ok, message);
+ },
+
+ start: function() {
+ config.semaphore--;
+ if (config.semaphore > 0) {
+ // don't start until equal number of stop-calls
+ return;
+ }
+ if (config.semaphore < 0) {
+ // ignore if start is called more often then stop
+ config.semaphore = 0;
+ }
+ // A slight delay, to avoid any current callbacks
+ if ( defined.setTimeout ) {
+ window.setTimeout(function() {
+ if ( config.timeout ) {
+ clearTimeout(config.timeout);
+ }
+
+ config.blocking = false;
+ process();
+ }, 13);
+ } else {
+ config.blocking = false;
+ process();
+ }
+ },
+
+ stop: function(timeout) {
+ config.semaphore++;
+ config.blocking = true;
+
+ if ( timeout && defined.setTimeout ) {
+ clearTimeout(config.timeout);
+ config.timeout = window.setTimeout(function() {
+ QUnit.ok( false, "Test timed out" );
+ QUnit.start();
+ }, timeout);
+ }
+ }
+
+};
+
+// Backwards compatibility, deprecated
+QUnit.equals = QUnit.equal;
+QUnit.same = QUnit.deepEqual;
+
+// Maintain internal state
+var config = {
+ // The queue of tests to run
+ queue: [],
+
+ // block until document ready
+ blocking: true
+};
+
+// Load paramaters
+(function() {
+ var location = window.location || { search: "", protocol: "file:" },
+ GETParams = location.search.slice(1).split('&');
+
+ for ( var i = 0; i < GETParams.length; i++ ) {
+ GETParams[i] = decodeURIComponent( GETParams[i] );
+ if ( GETParams[i] === "noglobals" ) {
+ GETParams.splice( i, 1 );
+ i--;
+ config.noglobals = true;
+ } else if ( GETParams[i] === "notrycatch" ) {
+ GETParams.splice( i, 1 );
+ i--;
+ config.notrycatch = true;
+ } else if ( GETParams[i].search('=') > -1 ) {
+ GETParams.splice( i, 1 );
+ i--;
+ }
+ }
+
+ // restrict modules/tests by get parameters
+ config.filters = GETParams;
+
+ // Figure out if we're running the tests from a server or not
+ QUnit.isLocal = !!(location.protocol === 'file:');
+})();
+
+// Expose the API as global variables, unless an 'exports'
+// object exists, in that case we assume we're in CommonJS
+if ( typeof exports === "undefined" || typeof require === "undefined" ) {
+ extend(window, QUnit);
+ window.QUnit = QUnit;
+} else {
+ extend(exports, QUnit);
+ exports.QUnit = QUnit;
+}
+
+// define these after exposing globals to keep them in these QUnit namespace only
+extend(QUnit, {
+ config: config,
+
+ // Initialize the configuration options
+ init: function() {
+ extend(config, {
+ stats: { all: 0, bad: 0 },
+ moduleStats: { all: 0, bad: 0 },
+ started: +new Date,
+ updateRate: 1000,
+ blocking: false,
+ autostart: true,
+ autorun: false,
+ filters: [],
+ queue: [],
+ semaphore: 0
+ });
+
+ var tests = id("qunit-tests"),
+ banner = id("qunit-banner"),
+ result = id("qunit-testresult");
+
+ if ( tests ) {
+ tests.innerHTML = "";
+ }
+
+ if ( banner ) {
+ banner.className = "";
+ }
+
+ if ( result ) {
+ result.parentNode.removeChild( result );
+ }
+ },
+
+ /**
+ * Resets the test setup. Useful for tests that modify the DOM.
+ *
+ * If jQuery is available, uses jQuery's html(), otherwise just innerHTML.
+ */
+ reset: function() {
+ if ( window.jQuery ) {
+ jQuery( "#main, #qunit-fixture" ).html( config.fixture );
+ } else {
+ var main = id( 'main' ) || id( 'qunit-fixture' );
+ if ( main ) {
+ main.innerHTML = config.fixture;
+ }
+ }
+ },
+
+ /**
+ * Trigger an event on an element.
+ *
+ * @example triggerEvent( document.body, "click" );
+ *
+ * @param DOMElement elem
+ * @param String type
+ */
+ triggerEvent: function( elem, type, event ) {
+ if ( document.createEvent ) {
+ event = document.createEvent("MouseEvents");
+ event.initMouseEvent(type, true, true, elem.ownerDocument.defaultView,
+ 0, 0, 0, 0, 0, false, false, false, false, 0, null);
+ elem.dispatchEvent( event );
+
+ } else if ( elem.fireEvent ) {
+ elem.fireEvent("on"+type);
+ }
+ },
+
+ // Safe object type checking
+ is: function( type, obj ) {
+ return QUnit.objectType( obj ) == type;
+ },
+
+ objectType: function( obj ) {
+ if (typeof obj === "undefined") {
+ return "undefined";
+
+ // consider: typeof null === object
+ }
+ if (obj === null) {
+ return "null";
+ }
+
+ var type = Object.prototype.toString.call( obj )
+ .match(/^\[object\s(.*)\]$/)[1] || '';
+
+ switch (type) {
+ case 'Number':
+ if (isNaN(obj)) {
+ return "nan";
+ } else {
+ return "number";
+ }
+ case 'String':
+ case 'Boolean':
+ case 'Array':
+ case 'Date':
+ case 'RegExp':
+ case 'Function':
+ return type.toLowerCase();
+ }
+ if (typeof obj === "object") {
+ return "object";
+ }
+ return undefined;
+ },
+
+ push: function(result, actual, expected, message) {
+ var details = {
+ result: result,
+ message: message,
+ actual: actual,
+ expected: expected
+ };
+
+ message = escapeHtml(message) || (result ? "okay" : "failed");
+ message = '<span class="test-message">' + message + "</span>";
+ expected = escapeHtml(QUnit.jsDump.parse(expected));
+ actual = escapeHtml(QUnit.jsDump.parse(actual));
+ var output = message + '<table><tr class="test-expected"><th>Expected: </th><td><pre>' + expected + '</pre></td></tr>';
+ if (actual != expected) {
+ output += '<tr class="test-actual"><th>Result: </th><td><pre>' + actual + '</pre></td></tr>';
+ output += '<tr class="test-diff"><th>Diff: </th><td><pre>' + QUnit.diff(expected, actual) +'</pre></td></tr>';
+ }
+ if (!result) {
+ var source = sourceFromStacktrace();
+ if (source) {
+ details.source = source;
+ output += '<tr class="test-source"><th>Source: </th><td><pre>' + source +'</pre></td></tr>';
+ }
+ }
+ output += "</table>";
+
+ QUnit.log(details);
+
+ config.current.assertions.push({
+ result: !!result,
+ message: output
+ });
+ },
+
+ // Logging callbacks; all receive a single argument with the listed properties
+ // run test/logs.html for any related changes
+ begin: function() {},
+ // done: { failed, passed, total, runtime }
+ done: function() {},
+ // log: { result, actual, expected, message }
+ log: function() {},
+ // testStart: { name }
+ testStart: function() {},
+ // testDone: { name, failed, passed, total }
+ testDone: function() {},
+ // moduleStart: { name }
+ moduleStart: function() {},
+ // moduleDone: { name, failed, passed, total }
+ moduleDone: function() {}
+});
+
+if ( typeof document === "undefined" || document.readyState === "complete" ) {
+ config.autorun = true;
+}
+
+addEvent(window, "load", function() {
+ QUnit.begin({});
+
+ // Initialize the config, saving the execution queue
+ var oldconfig = extend({}, config);
+ QUnit.init();
+ extend(config, oldconfig);
+
+ config.blocking = false;
+
+ var userAgent = id("qunit-userAgent");
+ if ( userAgent ) {
+ userAgent.innerHTML = navigator.userAgent;
+ }
+ var banner = id("qunit-header");
+ if ( banner ) {
+ var paramsIndex = location.href.lastIndexOf(location.search);
+ if ( paramsIndex > -1 ) {
+ var mainPageLocation = location.href.slice(0, paramsIndex);
+ if ( mainPageLocation == location.href ) {
+ banner.innerHTML = '<a href=""> ' + banner.innerHTML + '</a> ';
+ } else {
+ var testName = decodeURIComponent(location.search.slice(1));
+ banner.innerHTML = '<a href="' + mainPageLocation + '">' + banner.innerHTML + '</a> &#8250; <a href="">' + testName + '</a>';
+ }
+ }
+ }
+
+ var toolbar = id("qunit-testrunner-toolbar");
+ if ( toolbar ) {
+ var filter = document.createElement("input");
+ filter.type = "checkbox";
+ filter.id = "qunit-filter-pass";
+ addEvent( filter, "click", function() {
+ var li = document.getElementsByTagName("li");
+ for ( var i = 0; i < li.length; i++ ) {
+ if ( li[i].className.indexOf("pass") > -1 ) {
+ li[i].style.display = filter.checked ? "none" : "";
+ }
+ }
+ if ( defined.sessionStorage ) {
+ sessionStorage.setItem("qunit-filter-passed-tests", filter.checked ? "true" : "");
+ }
+ });
+ if ( defined.sessionStorage && sessionStorage.getItem("qunit-filter-passed-tests") ) {
+ filter.checked = true;
+ }
+ toolbar.appendChild( filter );
+
+ var label = document.createElement("label");
+ label.setAttribute("for", "qunit-filter-pass");
+ label.innerHTML = "Hide passed tests";
+ toolbar.appendChild( label );
+ }
+
+ var main = id('main') || id('qunit-fixture');
+ if ( main ) {
+ config.fixture = main.innerHTML;
+ }
+
+ if (config.autostart) {
+ QUnit.start();
+ }
+});
+
+function done() {
+ config.autorun = true;
+
+ // Log the last module results
+ if ( config.currentModule ) {
+ QUnit.moduleDone( {
+ name: config.currentModule,
+ failed: config.moduleStats.bad,
+ passed: config.moduleStats.all - config.moduleStats.bad,
+ total: config.moduleStats.all
+ } );
+ }
+
+ var banner = id("qunit-banner"),
+ tests = id("qunit-tests"),
+ runtime = +new Date - config.started,
+ passed = config.stats.all - config.stats.bad,
+ html = [
+ 'Tests completed in ',
+ runtime,
+ ' milliseconds.<br/>',
+ '<span class="passed">',
+ passed,
+ '</span> tests of <span class="total">',
+ config.stats.all,
+ '</span> passed, <span class="failed">',
+ config.stats.bad,
+ '</span> failed.'
+ ].join('');
+
+ if ( banner ) {
+ banner.className = (config.stats.bad ? "qunit-fail" : "qunit-pass");
+ }
+
+ if ( tests ) {
+ var result = id("qunit-testresult");
+
+ if ( !result ) {
+ result = document.createElement("p");
+ result.id = "qunit-testresult";
+ result.className = "result";
+ tests.parentNode.insertBefore( result, tests.nextSibling );
+ }
+
+ result.innerHTML = html;
+ }
+
+ QUnit.done( {
+ failed: config.stats.bad,
+ passed: passed,
+ total: config.stats.all,
+ runtime: runtime
+ } );
+}
+
+function validTest( name ) {
+ var i = config.filters.length,
+ run = false;
+
+ if ( !i ) {
+ return true;
+ }
+
+ while ( i-- ) {
+ var filter = config.filters[i],
+ not = filter.charAt(0) == '!';
+
+ if ( not ) {
+ filter = filter.slice(1);
+ }
+
+ if ( name.indexOf(filter) !== -1 ) {
+ return !not;
+ }
+
+ if ( not ) {
+ run = true;
+ }
+ }
+
+ return run;
+}
+
+// so far supports only Firefox, Chrome and Opera (buggy)
+// could be extended in the future to use something like https://github.com/csnover/TraceKit
+function sourceFromStacktrace() {
+ try {
+ throw new Error();
+ } catch ( e ) {
+ if (e.stacktrace) {
+ // Opera
+ return e.stacktrace.split("\n")[6];
+ } else if (e.stack) {
+ // Firefox, Chrome
+ return e.stack.split("\n")[4];
+ }
+ }
+}
+
+function resultDisplayStyle(passed) {
+ return passed && id("qunit-filter-pass") && id("qunit-filter-pass").checked ? 'none' : '';
+}
+
+function escapeHtml(s) {
+ if (!s) {
+ return "";
+ }
+ s = s + "";
+ return s.replace(/[\&"<>\\]/g, function(s) {
+ switch(s) {
+ case "&": return "&amp;";
+ case "\\": return "\\\\";
+ case '"': return '\"';
+ case "<": return "&lt;";
+ case ">": return "&gt;";
+ default: return s;
+ }
+ });
+}
+
+function synchronize( callback ) {
+ config.queue.push( callback );
+
+ if ( config.autorun && !config.blocking ) {
+ process();
+ }
+}
+
+function process() {
+ var start = (new Date()).getTime();
+
+ while ( config.queue.length && !config.blocking ) {
+ if ( config.updateRate <= 0 || (((new Date()).getTime() - start) < config.updateRate) ) {
+ config.queue.shift()();
+ } else {
+ window.setTimeout( process, 13 );
+ break;
+ }
+ }
+ if (!config.blocking && !config.queue.length) {
+ done();
+ }
+}
+
+function saveGlobal() {
+ config.pollution = [];
+
+ if ( config.noglobals ) {
+ for ( var key in window ) {
+ config.pollution.push( key );
+ }
+ }
+}
+
+function checkPollution( name ) {
+ var old = config.pollution;
+ saveGlobal();
+
+ var newGlobals = diff( old, config.pollution );
+ if ( newGlobals.length > 0 ) {
+ ok( false, "Introduced global variable(s): " + newGlobals.join(", ") );
+ config.current.expected++;
+ }
+
+ var deletedGlobals = diff( config.pollution, old );
+ if ( deletedGlobals.length > 0 ) {
+ ok( false, "Deleted global variable(s): " + deletedGlobals.join(", ") );
+ config.current.expected++;
+ }
+}
+
+// returns a new Array with the elements that are in a but not in b
+function diff( a, b ) {
+ var result = a.slice();
+ for ( var i = 0; i < result.length; i++ ) {
+ for ( var j = 0; j < b.length; j++ ) {
+ if ( result[i] === b[j] ) {
+ result.splice(i, 1);
+ i--;
+ break;
+ }
+ }
+ }
+ return result;
+}
+
+function fail(message, exception, callback) {
+ if ( typeof console !== "undefined" && console.error && console.warn ) {
+ console.error(message);
+ console.error(exception);
+ console.warn(callback.toString());
+
+ } else if ( window.opera && opera.postError ) {
+ opera.postError(message, exception, callback.toString);
+ }
+}
+
+function extend(a, b) {
+ for ( var prop in b ) {
+ a[prop] = b[prop];
+ }
+
+ return a;
+}
+
+function addEvent(elem, type, fn) {
+ if ( elem.addEventListener ) {
+ elem.addEventListener( type, fn, false );
+ } else if ( elem.attachEvent ) {
+ elem.attachEvent( "on" + type, fn );
+ } else {
+ fn();
+ }
+}
+
+function id(name) {
+ return !!(typeof document !== "undefined" && document && document.getElementById) &&
+ document.getElementById( name );
+}
+
+// Test for equality any JavaScript type.
+// Discussions and reference: http://philrathe.com/articles/equiv
+// Test suites: http://philrathe.com/tests/equiv
+// Author: Philippe Rathé <prathe@gmail.com>
+QUnit.equiv = function () {
+
+ var innerEquiv; // the real equiv function
+ var callers = []; // stack to decide between skip/abort functions
+ var parents = []; // stack to avoiding loops from circular referencing
+
+ // Call the o related callback with the given arguments.
+ function bindCallbacks(o, callbacks, args) {
+ var prop = QUnit.objectType(o);
+ if (prop) {
+ if (QUnit.objectType(callbacks[prop]) === "function") {
+ return callbacks[prop].apply(callbacks, args);
+ } else {
+ return callbacks[prop]; // or undefined
+ }
+ }
+ }
+
+ var callbacks = function () {
+
+ // for string, boolean, number and null
+ function useStrictEquality(b, a) {
+ if (b instanceof a.constructor || a instanceof b.constructor) {
+ // to catch short annotaion VS 'new' annotation of a declaration
+ // e.g. var i = 1;
+ // var j = new Number(1);
+ return a == b;
+ } else {
+ return a === b;
+ }
+ }
+
+ return {
+ "string": useStrictEquality,
+ "boolean": useStrictEquality,
+ "number": useStrictEquality,
+ "null": useStrictEquality,
+ "undefined": useStrictEquality,
+
+ "nan": function (b) {
+ return isNaN(b);
+ },
+
+ "date": function (b, a) {
+ return QUnit.objectType(b) === "date" && a.valueOf() === b.valueOf();
+ },
+
+ "regexp": function (b, a) {
+ return QUnit.objectType(b) === "regexp" &&
+ a.source === b.source && // the regex itself
+ a.global === b.global && // and its modifers (gmi) ...
+ a.ignoreCase === b.ignoreCase &&
+ a.multiline === b.multiline;
+ },
+
+ // - skip when the property is a method of an instance (OOP)
+ // - abort otherwise,
+ // initial === would have catch identical references anyway
+ "function": function () {
+ var caller = callers[callers.length - 1];
+ return caller !== Object &&
+ typeof caller !== "undefined";
+ },
+
+ "array": function (b, a) {
+ var i, j, loop;
+ var len;
+
+ // b could be an object literal here
+ if ( ! (QUnit.objectType(b) === "array")) {
+ return false;
+ }
+
+ len = a.length;
+ if (len !== b.length) { // safe and faster
+ return false;
+ }
+
+ //track reference to avoid circular references
+ parents.push(a);
+ for (i = 0; i < len; i++) {
+ loop = false;
+ for(j=0;j<parents.length;j++){
+ if(parents[j] === a[i]){
+ loop = true;//dont rewalk array
+ }
+ }
+ if (!loop && ! innerEquiv(a[i], b[i])) {
+ parents.pop();
+ return false;
+ }
+ }
+ parents.pop();
+ return true;
+ },
+
+ "object": function (b, a) {
+ var i, j, loop;
+ var eq = true; // unless we can proove it
+ var aProperties = [], bProperties = []; // collection of strings
+
+ // comparing constructors is more strict than using instanceof
+ if ( a.constructor !== b.constructor) {
+ return false;
+ }
+
+ // stack constructor before traversing properties
+ callers.push(a.constructor);
+ //track reference to avoid circular references
+ parents.push(a);
+
+ for (i in a) { // be strict: don't ensures hasOwnProperty and go deep
+ loop = false;
+ for(j=0;j<parents.length;j++){
+ if(parents[j] === a[i])
+ loop = true; //don't go down the same path twice
+ }
+ aProperties.push(i); // collect a's properties
+
+ if (!loop && ! innerEquiv(a[i], b[i])) {
+ eq = false;
+ break;
+ }
+ }
+
+ callers.pop(); // unstack, we are done
+ parents.pop();
+
+ for (i in b) {
+ bProperties.push(i); // collect b's properties
+ }
+
+ // Ensures identical properties name
+ return eq && innerEquiv(aProperties.sort(), bProperties.sort());
+ }
+ };
+ }();
+
+ innerEquiv = function () { // can take multiple arguments
+ var args = Array.prototype.slice.apply(arguments);
+ if (args.length < 2) {
+ return true; // end transition
+ }
+
+ return (function (a, b) {
+ if (a === b) {
+ return true; // catch the most you can
+ } else if (a === null || b === null || typeof a === "undefined" || typeof b === "undefined" || QUnit.objectType(a) !== QUnit.objectType(b)) {
+ return false; // don't lose time with error prone cases
+ } else {
+ return bindCallbacks(a, callbacks, [b, a]);
+ }
+
+ // apply transition with (1..n) arguments
+ })(args[0], args[1]) && arguments.callee.apply(this, args.splice(1, args.length -1));
+ };
+
+ return innerEquiv;
+
+}();
+
+/**
+ * jsDump
+ * Copyright (c) 2008 Ariel Flesler - aflesler(at)gmail(dot)com | http://flesler.blogspot.com
+ * Licensed under BSD (http://www.opensource.org/licenses/bsd-license.php)
+ * Date: 5/15/2008
+ * @projectDescription Advanced and extensible data dumping for Javascript.
+ * @version 1.0.0
+ * @author Ariel Flesler
+ * @link {http://flesler.blogspot.com/2008/05/jsdump-pretty-dump-of-any-javascript.html}
+ */
+QUnit.jsDump = (function() {
+ function quote( str ) {
+ return '"' + str.toString().replace(/"/g, '\\"') + '"';
+ };
+ function literal( o ) {
+ return o + '';
+ };
+ function join( pre, arr, post ) {
+ var s = jsDump.separator(),
+ base = jsDump.indent(),
+ inner = jsDump.indent(1);
+ if ( arr.join )
+ arr = arr.join( ',' + s + inner );
+ if ( !arr )
+ return pre + post;
+ return [ pre, inner + arr, base + post ].join(s);
+ };
+ function array( arr ) {
+ var i = arr.length, ret = Array(i);
+ this.up();
+ while ( i-- )
+ ret[i] = this.parse( arr[i] );
+ this.down();
+ return join( '[', ret, ']' );
+ };
+
+ var reName = /^function (\w+)/;
+
+ var jsDump = {
+ parse:function( obj, type ) { //type is used mostly internally, you can fix a (custom)type in advance
+ var parser = this.parsers[ type || this.typeOf(obj) ];
+ type = typeof parser;
+
+ return type == 'function' ? parser.call( this, obj ) :
+ type == 'string' ? parser :
+ this.parsers.error;
+ },
+ typeOf:function( obj ) {
+ var type;
+ if ( obj === null ) {
+ type = "null";
+ } else if (typeof obj === "undefined") {
+ type = "undefined";
+ } else if (QUnit.is("RegExp", obj)) {
+ type = "regexp";
+ } else if (QUnit.is("Date", obj)) {
+ type = "date";
+ } else if (QUnit.is("Function", obj)) {
+ type = "function";
+ } else if (typeof obj.setInterval !== undefined && typeof obj.document !== "undefined" && typeof obj.nodeType === "undefined") {
+ type = "window";
+ } else if (obj.nodeType === 9) {
+ type = "document";
+ } else if (obj.nodeType) {
+ type = "node";
+ } else if (typeof obj === "object" && typeof obj.length === "number" && obj.length >= 0) {
+ type = "array";
+ } else {
+ type = typeof obj;
+ }
+ return type;
+ },
+ separator:function() {
+ return this.multiline ? this.HTML ? '<br />' : '\n' : this.HTML ? '&nbsp;' : ' ';
+ },
+ indent:function( extra ) {// extra can be a number, shortcut for increasing-calling-decreasing
+ if ( !this.multiline )
+ return '';
+ var chr = this.indentChar;
+ if ( this.HTML )
+ chr = chr.replace(/\t/g,' ').replace(/ /g,'&nbsp;');
+ return Array( this._depth_ + (extra||0) ).join(chr);
+ },
+ up:function( a ) {
+ this._depth_ += a || 1;
+ },
+ down:function( a ) {
+ this._depth_ -= a || 1;
+ },
+ setParser:function( name, parser ) {
+ this.parsers[name] = parser;
+ },
+ // The next 3 are exposed so you can use them
+ quote:quote,
+ literal:literal,
+ join:join,
+ //
+ _depth_: 1,
+ // This is the list of parsers, to modify them, use jsDump.setParser
+ parsers:{
+ window: '[Window]',
+ document: '[Document]',
+ error:'[ERROR]', //when no parser is found, shouldn't happen
+ unknown: '[Unknown]',
+ 'null':'null',
+ undefined:'undefined',
+ 'function':function( fn ) {
+ var ret = 'function',
+ name = 'name' in fn ? fn.name : (reName.exec(fn)||[])[1];//functions never have name in IE
+ if ( name )
+ ret += ' ' + name;
+ ret += '(';
+
+ ret = [ ret, QUnit.jsDump.parse( fn, 'functionArgs' ), '){'].join('');
+ return join( ret, QUnit.jsDump.parse(fn,'functionCode'), '}' );
+ },
+ array: array,
+ nodelist: array,
+ arguments: array,
+ object:function( map ) {
+ var ret = [ ];
+ QUnit.jsDump.up();
+ for ( var key in map )
+ ret.push( QUnit.jsDump.parse(key,'key') + ': ' + QUnit.jsDump.parse(map[key]) );
+ QUnit.jsDump.down();
+ return join( '{', ret, '}' );
+ },
+ node:function( node ) {
+ var open = QUnit.jsDump.HTML ? '&lt;' : '<',
+ close = QUnit.jsDump.HTML ? '&gt;' : '>';
+
+ var tag = node.nodeName.toLowerCase(),
+ ret = open + tag;
+
+ for ( var a in QUnit.jsDump.DOMAttrs ) {
+ var val = node[QUnit.jsDump.DOMAttrs[a]];
+ if ( val )
+ ret += ' ' + a + '=' + QUnit.jsDump.parse( val, 'attribute' );
+ }
+ return ret + close + open + '/' + tag + close;
+ },
+ functionArgs:function( fn ) {//function calls it internally, it's the arguments part of the function
+ var l = fn.length;
+ if ( !l ) return '';
+
+ var args = Array(l);
+ while ( l-- )
+ args[l] = String.fromCharCode(97+l);//97 is 'a'
+ return ' ' + args.join(', ') + ' ';
+ },
+ key:quote, //object calls it internally, the key part of an item in a map
+ functionCode:'[code]', //function calls it internally, it's the content of the function
+ attribute:quote, //node calls it internally, it's an html attribute value
+ string:quote,
+ date:quote,
+ regexp:literal, //regex
+ number:literal,
+ 'boolean':literal
+ },
+ DOMAttrs:{//attributes to dump from nodes, name=>realName
+ id:'id',
+ name:'name',
+ 'class':'className'
+ },
+ HTML:false,//if true, entities are escaped ( <, >, \t, space and \n )
+ indentChar:' ',//indentation unit
+ multiline:true //if true, items in a collection, are separated by a \n, else just a space.
+ };
+
+ return jsDump;
+})();
+
+// from Sizzle.js
+function getText( elems ) {
+ var ret = "", elem;
+
+ for ( var i = 0; elems[i]; i++ ) {
+ elem = elems[i];
+
+ // Get the text from text nodes and CDATA nodes
+ if ( elem.nodeType === 3 || elem.nodeType === 4 ) {
+ ret += elem.nodeValue;
+
+ // Traverse everything else, except comment nodes
+ } else if ( elem.nodeType !== 8 ) {
+ ret += getText( elem.childNodes );
+ }
+ }
+
+ return ret;
+};
+
+/*
+ * Javascript Diff Algorithm
+ * By John Resig (http://ejohn.org/)
+ * Modified by Chu Alan "sprite"
+ *
+ * Released under the MIT license.
+ *
+ * More Info:
+ * http://ejohn.org/projects/javascript-diff-algorithm/
+ *
+ * Usage: QUnit.diff(expected, actual)
+ *
+ * QUnit.diff("the quick brown fox jumped over", "the quick fox jumps over") == "the quick <del>brown </del> fox <del>jumped </del><ins>jumps </ins> over"
+ */
+QUnit.diff = (function() {
+ function diff(o, n){
+ var ns = new Object();
+ var os = new Object();
+
+ for (var i = 0; i < n.length; i++) {
+ if (ns[n[i]] == null)
+ ns[n[i]] = {
+ rows: new Array(),
+ o: null
+ };
+ ns[n[i]].rows.push(i);
+ }
+
+ for (var i = 0; i < o.length; i++) {
+ if (os[o[i]] == null)
+ os[o[i]] = {
+ rows: new Array(),
+ n: null
+ };
+ os[o[i]].rows.push(i);
+ }
+
+ for (var i in ns) {
+ if (ns[i].rows.length == 1 && typeof(os[i]) != "undefined" && os[i].rows.length == 1) {
+ n[ns[i].rows[0]] = {
+ text: n[ns[i].rows[0]],
+ row: os[i].rows[0]
+ };
+ o[os[i].rows[0]] = {
+ text: o[os[i].rows[0]],
+ row: ns[i].rows[0]
+ };
+ }
+ }
+
+ for (var i = 0; i < n.length - 1; i++) {
+ if (n[i].text != null && n[i + 1].text == null && n[i].row + 1 < o.length && o[n[i].row + 1].text == null &&
+ n[i + 1] == o[n[i].row + 1]) {
+ n[i + 1] = {
+ text: n[i + 1],
+ row: n[i].row + 1
+ };
+ o[n[i].row + 1] = {
+ text: o[n[i].row + 1],
+ row: i + 1
+ };
+ }
+ }
+
+ for (var i = n.length - 1; i > 0; i--) {
+ if (n[i].text != null && n[i - 1].text == null && n[i].row > 0 && o[n[i].row - 1].text == null &&
+ n[i - 1] == o[n[i].row - 1]) {
+ n[i - 1] = {
+ text: n[i - 1],
+ row: n[i].row - 1
+ };
+ o[n[i].row - 1] = {
+ text: o[n[i].row - 1],
+ row: i - 1
+ };
+ }
+ }
+
+ return {
+ o: o,
+ n: n
+ };
+ }
+
+ return function(o, n){
+ o = o.replace(/\s+$/, '');
+ n = n.replace(/\s+$/, '');
+ var out = diff(o == "" ? [] : o.split(/\s+/), n == "" ? [] : n.split(/\s+/));
+
+ var str = "";
+
+ var oSpace = o.match(/\s+/g);
+ if (oSpace == null) {
+ oSpace = [" "];
+ }
+ else {
+ oSpace.push(" ");
+ }
+ var nSpace = n.match(/\s+/g);
+ if (nSpace == null) {
+ nSpace = [" "];
+ }
+ else {
+ nSpace.push(" ");
+ }
+
+ if (out.n.length == 0) {
+ for (var i = 0; i < out.o.length; i++) {
+ str += '<del>' + out.o[i] + oSpace[i] + "</del>";
+ }
+ }
+ else {
+ if (out.n[0].text == null) {
+ for (n = 0; n < out.o.length && out.o[n].text == null; n++) {
+ str += '<del>' + out.o[n] + oSpace[n] + "</del>";
+ }
+ }
+
+ for (var i = 0; i < out.n.length; i++) {
+ if (out.n[i].text == null) {
+ str += '<ins>' + out.n[i] + nSpace[i] + "</ins>";
+ }
+ else {
+ var pre = "";
+
+ for (n = out.n[i].row + 1; n < out.o.length && out.o[n].text == null; n++) {
+ pre += '<del>' + out.o[n] + oSpace[n] + "</del>";
+ }
+ str += " " + out.n[i].text + nSpace[i] + pre;
+ }
+ }
+ }
+
+ return str;
+ };
+})();
+
+})(this);
diff --git a/bug/bug/test.html b/bug/bug/test.html
new file mode 100644
index 0000000..964a20e
--- /dev/null
+++ b/bug/bug/test.html
@@ -0,0 +1,110 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+ <title>Bug Filing Form</title>
+ <meta http-equiv="Content-type" content="text/html;charset=UTF-8">
+ <script type="text/javascript" src="jquery-1.6.2.js"></script>
+ <script type="text/javascript" src="jquery-validation-1.8.1/jquery.validate.js"></script>
+ <script type="text/javascript" src="bug.js"></script>
+ <script type="text/javascript" src="jquery.iframe-post-form.js"></script>
+ <link rel="stylesheet" href="bug.css" type="text/css" media="screen"></link>
+ <script type="text/javascript" src="qunit.js"></script>
+ <link rel="stylesheet" href="qunit.css" type="text/css" media="screen"></link>
+ <script type="text/javascript" src="test.js"></script>
+</head>
+<body>
+ <h1 id="qunit-header">QUnit Test Suite</h1>
+ <h2 id="qunit-banner"></h2>
+ <div id="qunit-testrunner-toolbar"></div>
+ <h2 id="qunit-userAgent"></h2>
+ <ol id="qunit-tests"></ol>
+ <div id="qunit-fixture">
+
+ <div class="signin">
+ <input class='user' type="text" name="user"></input>
+ <input class='password' type="password" name="password"></input>
+ <div class="go">Sign in</div>
+ <div class="error"></div>
+ </div>
+
+ <div class="state_component">
+ <select xmlns="" size="7" class="component" name="component">
+ <option value=''>(chose a component)</option>
+ <option value="BASIC">BASIC</option>
+ </select>
+ <div class="comments">
+ <div class="comment OTHER"></div>
+ <div class="comment BASIC"></div>
+ </div>
+ </div>
+
+ <div class="state_subcomponent">
+ <div class="active_subcomponent"></div>
+ </div>
+
+ <div class="state_subcomponent">
+ <div class="subcomponents">
+ <div xmlns="" class="BASIC">
+ <select class="subcomponent" name="short_desc">
+ <option selected value="">(chose one)</option>
+ <option value="Macros">Macros</option>
+ <option value="BASIC">BASIC</option>
+ <option value="IDE">IDE</option>
+ </select>
+ </div>
+ <div xmlns="" class="Chart">
+ <select class="subcomponent" name="short_desc">
+ <option selected value="">(chose one)</option>
+ <option value="FILEOPEN">FILEOPEN</option>
+ <option value="FILESAFE">FILESAFE</option>
+ <option value="FORMATTING">FORMATTING</option>
+ <option value="PRINTING">PRINTING</option>
+ <option value="UI">UI</option>
+ <option value="VIEWING">VIEWING</option>
+ </select>
+ </div>
+ </div>
+ </div>
+
+ <div class="state_version">
+ <select xmlns="" name="version" class="versions">
+ <option value="?">(chose a version)</option>
+ <option value="VERSION1">VERSION1</option>
+ </select>
+ </div>
+
+ <div class="state_description">
+ <input type="text" class="short"></input>
+ <textarea class="long"></textarea>
+ </div>
+
+ <div class="state state_submit">
+ <div class="go"></div>
+ <div class="error"></div>
+ <div class="bug"></div>
+ </div>
+
+ <div class="submission">
+ </div>
+
+ <div class="state state_success">
+ <a class="bug"></a>
+ </div>
+
+ <div class="state_attach">
+ <form action='/attachment.cgi' method='POST' enctype='multipart/form-data'>
+ <input type="hidden" name="action" value="insert"></input>
+ <input class="bug" type="hidden" name="bugid"></input>
+ <input type="hidden" name="comment" value="SCREENSHOT"></input>
+ <input type="hidden" name="contenttypemethod" value="autodetect"></input>
+ <input type="file" name="data"></input>
+ <input type="submit" value="Upload"></input>
+ </form>
+ <div class="error"></div>
+ <img alt="SCREENSHOT" title="SCREENSHOT" />
+ </div>
+
+ </div>
+</body>
+</html>
diff --git a/bug/bug/test.js b/bug/bug/test.js
new file mode 100644
index 0000000..2cce333
--- /dev/null
+++ b/bug/bug/test.js
@@ -0,0 +1,243 @@
+//
+// Copyright (C) 2011 Loic Dachary <loic@dachary.org>
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program. If not, see <http://www.gnu.org/licenses/>.
+//
+module("bug");
+
+test("state_signin", function() {
+ expect(7);
+
+ equal($('.signin').css('display'), 'none');
+ var user = 'gooduser';
+ var password = 'goodpassword';
+ $.bug.post = function(url, data, callback) {
+ if(data.Bugzilla_login == user &&
+ data.Bugzilla_password == password) {
+ callback('ok');
+ } else {
+ callback($.bug.state_signin_error_string);
+ }
+ };
+ var state_component = $.bug.state_component;
+ $.bug.state_component = function() { ok(true, 'state_component'); };
+ $.bug.state_signin();
+ equal($('.signin').css('display'), 'block');
+ // fail to login, shows error
+ equal($('.signin .error').text().length, 0, 'no error');
+ $('.signin .go').click();
+ ok($('.signin .error').text().length > 0, 'error message');
+ // successfull login
+ $('.signin .user').val(user);
+ $('.signin .password').val(password);
+ $('.signin .go').click();
+ equal($('.signin').css('display'), 'none');
+ equal($('.signin .error').text().length, 0, 'no error');
+
+ $.bug.post = $.post;
+ $.bug.state_component = state_component;
+});
+
+test("state_component", function() {
+ expect(8);
+
+ var state_subcomponent = $.bug.state_subcomponent;
+ $.bug.state_subcomponent = function() { ok(true, 'state_subcomponent'); };
+
+ var element = $('.state_component');
+ equal(element.css('display'), 'none');
+ $.bug.state_component();
+ equal(element.css('display'), 'block');
+ equal($('.component', element).val(), '', 'initialy nothing selected');
+ equal($('.comment.BASIC', element).css('display'), 'none', 'BASIC hidden');
+ equal($('.comment.OTHER', element).css('display'), 'none', 'OTHER hidden');
+ $(".component", element).val('BASIC').change();
+ equal($('.comment.BASIC', element).css('display'), 'block', 'BASIC is visible');
+ equal($('.comment.OTHER', element).css('display'), 'none', 'OTHER hidden');
+
+ $.bug.state_subcomponent = state_subcomponent;
+});
+
+test("state_subcomponent", function() {
+ expect(6);
+
+ var state_version = $.bug.state_version;
+ $.bug.state_version = function() { ok(true, 'state_version'); };
+ var refresh_related_bugs = $.bug.refresh_related_bugs;
+ $.bug.refresh_related_bugs = function() { ok(true, 'refresh_related_bugs'); };
+
+ var element = $('.state_subcomponent');
+ equal(element.css('display'), 'none');
+ equal($('.active_subcomponent select', element).length, 0, 'no select element');
+ $('.state_component .component').val('BASIC');
+ $.bug.state_subcomponent();
+ var h = $('.active_subcomponent select', element);
+ equal($('.active_subcomponent select', element).length, 1, 'one select element');
+ equal(element.css('display'), 'block');
+ $(".active_subcomponent .subcomponent", element).val('BASIC').change();
+
+ $.bug.state_version = state_version;
+ $.bug.refresh_related_bugs = refresh_related_bugs;
+});
+
+test("state_version", function() {
+ expect(7);
+
+ var state_description = $.bug.state_description;
+ $.bug.state_description = function() { ok(true, 'state_description'); };
+
+ var element = $('.state_version');
+ equal(element.css('display'), 'none');
+ ok(!element.hasClass('initialized'), 'is not initialized');
+ $.bug.state_version();
+ equal(element.css('display'), 'block');
+ ok(element.hasClass('initialized'), 'is initialized');
+ equal($('.versions', element).val(), '?', 'initialy nothing selected');
+ var version = 'VERSION1';
+ $(".versions", element).val(version).change();
+ // the second time, the selected index is not reset
+ $.bug.state_version();
+ equal($('.versions', element).val(), version, 'same option selected');
+
+ $.bug.state_description = state_description;
+});
+
+test("state_description", function() {
+ expect(5);
+
+ var state_submit = $.bug.state_submit;
+ $.bug.state_submit = function() { ok(true, 'state_submit'); };
+
+ var element = $('.state_description');
+ equal(element.css('display'), 'none');
+ ok(!element.hasClass('initialized'), 'is not initialized');
+ $.bug.state_description();
+ equal(element.css('display'), 'block');
+ ok(element.hasClass('initialized'), 'is initialized');
+ $('.short', element).val('012345').change();
+ $('.long', element).val('012345678901');
+ $('.long', element).keyup();
+
+ $.bug.state_submit = state_submit;
+});
+
+test("state_submit", function() {
+ expect(8);
+
+ var state_success = $.bug.state_success;
+ $.bug.state_success = function() { ok(true, 'state_success'); };
+
+ var element = $('.state_submit');
+ equal(element.css('display'), 'none');
+ ok(!element.hasClass('initialized'), 'is not initialized');
+ $.bug.state_submit();
+ equal(element.css('display'), 'block');
+ ok(element.hasClass('initialized'), 'is initialized');
+ var component = $('.state_component .component').val();
+ var subcomponent = $('.state_subcomponent .active_subcomponent .subcomponent').val() + ': ' + $('.state_description .short').val();
+ var version = $('.state_version .versions').val();
+ var comment = $('.state_description .long').val();
+ var bug = '40763';
+ $.bug.post = function(url, data, callback) {
+ if(data.component == component &&
+ data.short_desc == subcomponent &&
+ data.comment == comment &&
+ data.version == version) {
+ callback('<title>Bug ' + bug + ' Submitted');
+ }
+ };
+ $('.go', element).click();
+ equal($('.bug', element).text(), bug, 'bug number');
+
+ var error = ' ERROR ';
+ equal($('.error', element).text(), '', 'error is not set');
+ $.bug.post = function(url, data, callback) {
+ callback('<table cellpadding="20"> <tr> <td bgcolor="#ff0000"> <font size="+2">' + error + '</font> </td> </tr> </table>');
+ };
+ $('.go', element).click();
+ equal($('.error', element).text(), error, 'error is set');
+ $.bug.post = $.post;
+
+ $.bug.state_success = state_success;
+});
+
+test("state_success", function() {
+ expect(5);
+
+ var bug = '4242';
+ var element = $('.state_success');
+ equal(element.css('display'), 'none');
+ equal($('.submission').css('display'), 'block');
+ $('.state_submit .bug').text(bug);
+ $.bug.state_success();
+ equal(element.css('display'), 'block');
+ equal($('.submission').css('display'), 'none');
+ ok($('.bug', element).attr('href').indexOf(bug) > 0, 'bug found');
+});
+
+test("state_attach", function() {
+ expect(6);
+
+ var bug = '4242';
+ var data;
+ var iframePostForm = $.fn.iframePostForm;
+ $.fn.iframePostForm = function(options) {
+ return $(this).each(function () {
+ $(this).submit(function() {
+ options.complete(data);
+ return false;
+ });
+ });
+ };
+ var element = $('.state_attach');
+ equal(element.css('display'), 'none');
+ equal($('.submission').css('display'), 'block');
+ $('.state_submit .bug').text(bug);
+ $.bug.state_attach();
+ equal(element.css('display'), 'block');
+ equal($('.bug', element).val(), bug);
+
+ var error = 'ERROR';
+ data = $.bug.state_attach_error_string + error + '<';
+ $('form', element).submit();
+ equal($('.error', element).text(), error);
+
+ var attachment = '888';
+ data = $.bug.state_attach_success_string + attachment + '<';
+ $('form', element).submit();
+ ok($('img', element).attr('src').indexOf(attachment) > 0, 'found attachment ' + attachment);
+
+ $.fn.iframePostForm = iframePostForm;
+});
+
+test("logged_in", function() {
+ expect(2);
+
+
+ $.bug.get = function(url) {
+ return $.Deferred().resolve($.bug.logged_in_false);
+ };
+ $.bug.logged_in().done(function(status) {
+ equal(status, false, 'user not logged in');
+ });
+
+ $.bug.get = function(url) {
+ return $.Deferred().resolve('logged in ok');
+ };
+ $.bug.logged_in().done(function(status) {
+ equal(status, true, 'user is logged in');
+ });
+
+ $.bug.get = $.get;
+});
diff --git a/bug/component_comments.xsl b/bug/component_comments.xsl
new file mode 100644
index 0000000..85076cb
--- /dev/null
+++ b/bug/component_comments.xsl
@@ -0,0 +1,28 @@
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+ <xsl:output indent="yes" encoding="UTF-8"/>
+ <xsl:strip-space elements="*"/>
+
+ <xsl:template match="node()|@*">
+ <xsl:copy>
+ <xsl:apply-templates select="node()|@*"/>
+ </xsl:copy>
+ </xsl:template>
+
+ <xsl:template match="html">
+ <div class="comments">
+ <xsl:apply-templates select="//*[@class='component']"/>
+ </div>
+ </xsl:template>
+
+ <xsl:template match="div[@class='component']">
+ <xsl:element name="div">
+ <xsl:attribute name="class"><xsl:value-of select="translate(translate(*[position()=1],' ','_'),&quot;&#10;&quot;,'_')" /> comment</xsl:attribute>
+ <xsl:apply-templates select="*[position()>1]"/>
+ </xsl:element>
+ </xsl:template>
+
+ <xsl:template match="//*[contains(@class,'faq') or contains(@class,'submit')]"/>
+
+ <xsl:template match="*[@class='subcomponents']"/>
+
+</xsl:stylesheet>
diff --git a/bug/components.xsl b/bug/components.xsl
new file mode 100644
index 0000000..514b7c8
--- /dev/null
+++ b/bug/components.xsl
@@ -0,0 +1,25 @@
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+ <xsl:output indent="yes" encoding="UTF-8"/>
+ <xsl:strip-space elements="*"/>
+
+ <xsl:template match="node()|@*">
+ <xsl:copy>
+ <xsl:apply-templates select="node()|@*"/>
+ </xsl:copy>
+ </xsl:template>
+
+ <xsl:template match="html">
+ <select size='7' class="component" name="component">
+ <option value=''>(chose a component)</option>
+ <xsl:apply-templates select="//*[@class='component']"/>
+ </select>
+ </xsl:template>
+
+ <xsl:template match="div[@class='component']">
+ <xsl:element name="option">
+ <xsl:attribute name="value"><xsl:value-of select="translate(translate(*[position()=1],' ','_'),&quot;&#10;&quot;,'_')" /></xsl:attribute>
+ <xsl:value-of select="*[position()=1]"/>
+ </xsl:element>
+ </xsl:template>
+
+</xsl:stylesheet>
diff --git a/bug/index.html b/bug/index.html
new file mode 100644
index 0000000..f0a24c7
--- /dev/null
+++ b/bug/index.html
@@ -0,0 +1,3 @@
+<p><a href="bug/bug.html">draft bug report helper</a></p>
+<p><a href="bug-cover/jscoverage.html?url=test.html">tests of the draft bug report helper</a></p>
+
diff --git a/bug/libreoffice-bug.html b/bug/libreoffice-bug.html
new file mode 100644
index 0000000..c7d5baa
--- /dev/null
+++ b/bug/libreoffice-bug.html
@@ -0,0 +1,75 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head profile="http://gmpg.org/xmdp/1 http://microformats.org/profile/rel-license https://freedesktop.dachary.org/libreoffice/libreoffice-bug.html"><title>libreoffice-bug 1.0.0 XMDP profile</title>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
+<style type="text/css">
+/*<![CDATA[*/
+body { background: #FCFAEA; color: black; font: small/1.2 Verdana, Arial, sans-serif; margin: 0; padding: 2em 10%; }
+dl { margin:0 0 0 2em }
+dt { font-weight:bold }
+h3 { margin:0; font-weight:normal; font-size:1em }
+h3:first-letter { text-transform:capitalize; }
+h2 a { display:block; margin-left:2em }
+#warning { border: 1px solid red; background-color: #c33; padding: 1em;}
+/*]]>*/
+</style>
+<link rel="copyright" href="#copyright" title="Copyright" />
+</head>
+<body>
+<h1>libreoffice-bug 1.0.0 <abbr title="XHTML Meta Data Profile">XMDP</abbr> profile</h1>
+<h2>Author</h2>
+<ul id="authors">
+<li class="vcard"><a class="fn url uid" href="http://dachary.org/">Lo&iuml;c Dachary</a></li>
+</ul>
+<p>As described in <a href="http://www.w3.org/TR/html401/struct/global.html#h-7.4.4.3">HTML4 Meta data profiles</a> and <a href="http://gmpg.org/xmdp/description">XHTML Meta Data Profile (XMDP) description</a>:</p>
+<p>
+A libreoffice bug is defined in <a href="http://wiki.documentfoundation.org/BugReport_Details">BugReport Details</a> and <a href="https://bugs.freedesktop.org/enter_bug.cgi?product=LibreOffice">in the bugzilla form</a>.
+</p>
+<dl class="profile">
+ <dt id="subcomponent">rel</dt>
+ <dd><p>
+ <a rel="help" href="http://www.w3.org/TR/html401/struct/links.html#adef-rel">
+ HTML4 definition of the 'rel' attribute.</a>
+ Here is an additional value as defined in the
+ <a rel="help start" href="http://microformats.org/wiki/rel-tag">
+ rel-tag specification</a>
+ .</p>
+ <dl>
+ <dt id="tag">tag</dt>
+ <dd>Indicates that the referred resource serves as a "tag",
+ or keyword/subject, for the referring page, or some portion of the referring page.</dd>
+ </dl>
+ </dd>
+ <dt>class</dt>
+ <dd><p>
+ <a href="http://www.w3.org/TR/html401/struct/global.html#adef-class">
+ HTML4 definition of the 'class' attribute.</a>
+ This meta data profile defines some 'class' attribute values (class names)
+ and their meanings as suggested by a
+ <a href="http://www.w3.org/TR/WD-htmllink-970328#profile">
+ draft of "Hypertext Links in HTML"</a>.
+ All values are defined according to the semantics defined in the
+ <a rel="help start" href="http://wiki.documentfoundation.org/BugReport_Details">
+ BugReport Details</a>.</p>
+ <dl>
+ <dt id="component">component</dt>
+ <dd>A container for the class names related to a given libreoffice component. Example of components are Writer, Drawing etc.
+ The text of the first descendant MUST be the name of the component.
+ </dd>
+
+ <dt id="search">search</dt>
+ <dd>A link to search the bug database for the subcomponent that belongs to the enclosing component. The text of the link MUST be the name of the subcomponent.</dd>
+
+ <dt id="faq">faq</dt>
+ <dd>A link to the FAQ page describing the subcomponent that belongs to the enclosing component. </dd>
+
+ <dt id="submit">submit</dt>
+ <dd>A link to a prefilled bug submission form for the subcomponent that belongs to the enclosing component. </dd>
+
+ </dl>
+ </dd>
+</dl>
+
+<h2>Copyright</h2>
+<p id="copyright">Contributed to the public domain (PD) 2011 dachary.org, per the <a rel="license" href="http://creativecommons.org/licenses/publicdomain/">Creative Commons Public Domain License</a> or any later version published by Creative Commons; with a waiver of rights, and an assertion that no rights attach to this particular work.</p>
+</body>
+</html>
diff --git a/bug/query.pl b/bug/query.pl
new file mode 100644
index 0000000..590d7b9
--- /dev/null
+++ b/bug/query.pl
@@ -0,0 +1,27 @@
+while(<STDIN>) {
+ eval $_ if(s/(cpts|vers)\[(\d+)\]\s+=/\$$1\[$2\]=/);
+ if(/<select\s+name="product"/../<\/select/) {
+ if(/libreoffice/i) {
+ $libreoffice = $count;
+ }
+ if(/<select\s+name="product"/) {
+ $count = 0;
+ } elsif(/<option/) {
+ $count++;
+ }
+ }
+}
+
+print "<?xml version='1.0' encoding='ISO-8859-1'?>\n";
+
+if($ARGV[0] eq 'versions') {
+ @versions = @{$vers[$libreoffice]};
+ print "<select name='version' class='versions'>\n";
+ print " <option value='?'>(chose a version)</option>\n";
+ for($count = 0; $count < @versions; $count++) {
+ if($versions[$count] ne 'unspecified') {
+ print " <option value='$versions[$count]'>$versions[$count]</option>\n";
+ }
+ }
+ print "</select>\n";
+}
diff --git a/bug/subcomponents.pl b/bug/subcomponents.pl
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/bug/subcomponents.pl
diff --git a/bug/subcomponents.xsl b/bug/subcomponents.xsl
new file mode 100644
index 0000000..fbb3130
--- /dev/null
+++ b/bug/subcomponents.xsl
@@ -0,0 +1,26 @@
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+ <xsl:output indent="yes" encoding="UTF-8"/>
+ <xsl:strip-space elements="*"/>
+
+ <xsl:template match="text()" />
+
+ <xsl:template match="div[contains(@class,'component')]">
+ <xsl:element name="div">
+ <xsl:attribute name="class"><xsl:value-of select="translate(translate(*[position()=1],' ','_'),&quot;&#10;&quot;,'_')" /></xsl:attribute>
+ <select class="subcomponent" name="short_desc">
+ <option selected='selected' value=''>(chose one)</option>
+ <xsl:apply-templates select="descendant::*[contains(@class,'search')]"/>
+ </select>
+ </xsl:element>
+ </xsl:template>
+
+ <xsl:template match="*[contains(@class,'search')]">
+ <xsl:if test="not(contains(*,'['))">
+ <xsl:element name="option">
+ <xsl:attribute name="value"><xsl:value-of select="*"/></xsl:attribute>
+ <xsl:value-of select="*"/>
+ </xsl:element>
+ </xsl:if>
+ </xsl:template>
+
+</xsl:stylesheet>